1 /*
2     SPDX-FileCopyrightText: 2008 Milian Wolff <mail@milianw.de>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #ifndef PHP_NAMESPACEDECLARATION_H
8 #define PHP_NAMESPACEDECLARATION_H
9 
10 #include <language/duchain/declaration.h>
11 
12 #include <language/duchain/declarationdata.h>
13 #include <serialization/indexedstring.h>
14 
15 #include "phpduchainexport.h"
16 namespace Php
17 {
18 
19 class KDEVPHPDUCHAIN_EXPORT NamespaceDeclarationData : public KDevelop::DeclarationData
20 {
21 public:
NamespaceDeclarationData()22     NamespaceDeclarationData()
23             : KDevelop::DeclarationData() {}
24 
NamespaceDeclarationData(const NamespaceDeclarationData & rhs)25     NamespaceDeclarationData(const NamespaceDeclarationData& rhs)
26             : KDevelop::DeclarationData(rhs)
27     {
28         prettyName = rhs.prettyName;
29     }
30 
~NamespaceDeclarationData()31     ~NamespaceDeclarationData() {}
32 
33     KDevelop::IndexedString prettyName;
34 };
35 
36 class KDEVPHPDUCHAIN_EXPORT NamespaceDeclaration : public KDevelop::Declaration
37 {
38 public:
39     NamespaceDeclaration(const NamespaceDeclaration &rhs);
40     NamespaceDeclaration(const KDevelop::RangeInRevision &range, KDevelop::DUContext *parentContext);
41     NamespaceDeclaration(NamespaceDeclarationData &data);
42     ~NamespaceDeclaration() override;
43 
44     QString toString() const override;
45 
46     void setPrettyName(const KDevelop::IndexedString& name);
47     KDevelop::IndexedString prettyName() const;
48 
49     enum {
50         Identity = 87
51     };
52 
53     KDevelop::Declaration* clonePrivate() const override;
54 private:
55     DUCHAIN_DECLARE_DATA(NamespaceDeclaration)
56 };
57 
58 }
59 
60 #endif // PHP_NAMESPACEDECLARATION_H
61