File indexing completed on 2024-04-21 15:24:10
0001 /* 0002 SPDX-FileCopyrightText: 2008 Niko Sams <niko.sams@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef VARIABLEDECLARATION_H 0008 #define VARIABLEDECLARATION_H 0009 0010 #include <language/duchain/declaration.h> 0011 #include <language/duchain/declarationdata.h> 0012 0013 #include "phpduchainexport.h" 0014 0015 namespace Php 0016 { 0017 0018 class KDEVPHPDUCHAIN_EXPORT VariableDeclarationData : public KDevelop::DeclarationData 0019 { 0020 public: 0021 VariableDeclarationData() 0022 : KDevelop::DeclarationData(), m_isSuperglobal(false), m_isVariadic(false) { 0023 } 0024 0025 VariableDeclarationData(const VariableDeclarationData& rhs) 0026 : KDevelop::DeclarationData(rhs) { 0027 m_isSuperglobal = rhs.m_isSuperglobal; 0028 m_isVariadic = rhs.m_isVariadic; 0029 } 0030 0031 ~VariableDeclarationData() { 0032 } 0033 0034 bool m_isSuperglobal; 0035 bool m_isVariadic; 0036 }; 0037 0038 /** 0039 * Declaration used for Php variables eg. $a = 0; 0040 */ 0041 class KDEVPHPDUCHAIN_EXPORT VariableDeclaration : public KDevelop::Declaration 0042 { 0043 public: 0044 VariableDeclaration(const VariableDeclaration& rhs); 0045 VariableDeclaration(const KDevelop::RangeInRevision& range, KDevelop::DUContext* context); 0046 VariableDeclaration(VariableDeclarationData& data); 0047 VariableDeclaration(VariableDeclarationData& data, const KDevelop::RangeInRevision&); 0048 ~VariableDeclaration() override; 0049 0050 bool isSuperglobal() const; 0051 void setSuperglobal(bool superglobal); 0052 0053 bool isVariadic() const; 0054 void setVariadic(bool variadic); 0055 0056 uint additionalIdentity() const override; 0057 KDevelop::DeclarationId id(bool forceDirect = false) const override; 0058 0059 enum { 0060 Identity = 83 0061 }; 0062 typedef KDevelop::Declaration Base; 0063 0064 private: 0065 DUCHAIN_DECLARE_DATA(VariableDeclaration) 0066 }; 0067 0068 } 0069 0070 #endif // VARIABLEDECLARATION_H