1 /* 2 This file is part of KDevelop 3 SPDX-FileCopyrightText: 2008 Niko Sams <niko.sams@gmail.com> 4 5 SPDX-License-Identifier: LGPL-2.0-or-later 6 */ 7 8 #ifndef VARIABLEDECLARATION_H 9 #define VARIABLEDECLARATION_H 10 11 #include <language/duchain/declaration.h> 12 #include <language/duchain/declarationdata.h> 13 14 #include "phpduchainexport.h" 15 16 namespace Php 17 { 18 19 class KDEVPHPDUCHAIN_EXPORT VariableDeclarationData : public KDevelop::DeclarationData 20 { 21 public: VariableDeclarationData()22 VariableDeclarationData() 23 : KDevelop::DeclarationData(), m_isSuperglobal(false) { 24 } 25 VariableDeclarationData(const VariableDeclarationData & rhs)26 VariableDeclarationData(const VariableDeclarationData& rhs) 27 : KDevelop::DeclarationData(rhs) { 28 m_isSuperglobal = rhs.m_isSuperglobal; 29 } 30 ~VariableDeclarationData()31 ~VariableDeclarationData() { 32 } 33 34 bool m_isSuperglobal; 35 }; 36 37 /** 38 * Declaration used for Php variables eg. $a = 0; 39 */ 40 class KDEVPHPDUCHAIN_EXPORT VariableDeclaration : public KDevelop::Declaration 41 { 42 public: 43 VariableDeclaration(const VariableDeclaration& rhs); 44 VariableDeclaration(const KDevelop::RangeInRevision& range, KDevelop::DUContext* context); 45 VariableDeclaration(VariableDeclarationData& data); 46 VariableDeclaration(VariableDeclarationData& data, const KDevelop::RangeInRevision&); 47 virtual ~VariableDeclaration(); 48 49 bool isSuperglobal() const; 50 void setSuperglobal(bool superglobal); 51 52 virtual uint additionalIdentity() const; 53 virtual KDevelop::DeclarationId id(bool forceDirect = false) const; 54 55 enum { 56 Identity = 83 57 }; 58 typedef KDevelop::Declaration Base; 59 60 private: 61 DUCHAIN_DECLARE_DATA(VariableDeclaration) 62 }; 63 64 } 65 66 #endif // VARIABLEDECLARATION_H 67