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