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