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