adapt to kdevplatform changes, use DeclarationPointer when the duchain might get...
[kdevelop:php.git] / duchain / expressionevaluationresult.h
1 /* This file is part of KDevelop
2     Copyright 2008 David Nolden <david.nolden.kdevelop@art-master.de>
3     Copyright 2008 Niko Sams <niko.sams@gmail.com>
4
5    This library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Library General Public
7    License version 2 as published by the Free Software Foundation.
8
9    This library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Library General Public License for more details.
13
14    You should have received a copy of the GNU Library General Public License
15    along with this library; see the file COPYING.LIB.  If not, write to
16    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17    Boston, MA 02110-1301, USA.
18 */
19 #ifndef EXPRESSIONEVALUATIONRESULT_H
20 #define EXPRESSIONEVALUATIONRESULT_H
21
22 #include "phpduchainexport.h"
23 #include <language/duchain/appendedlist.h>
24 #include <language/duchain/declarationid.h>
25 #include <language/duchain/declaration.h>
26 #include <language/duchain/types/referencetype.h>
27 #include <language/duchain/types/indexedtype.h>
28
29 #include <QList>
30
31 namespace KDevelop
32 {
33 class IndexedType;
34 class TypeIdentifier;
35 class Declaration;
36 }
37
38 class QString;
39
40 namespace Php
41 {
42
43 class KDEVPHPDUCHAIN_EXPORT ExpressionEvaluationResult
44 {
45 public:
46     ExpressionEvaluationResult();
47     ~ExpressionEvaluationResult();
48
49     ///NOTE: Chain needs to be locked when calling this
50     void setDeclaration(KDevelop::Declaration* declaration);
51     void setDeclaration(KDevelop::DeclarationPointer declaration);
52     ///NOTE: Chain needs to be locked when calling this
53     void setDeclarations(QList<KDevelop::Declaration*> declarations);
54     void setDeclarations(QList<KDevelop::DeclarationPointer> declarations);
55     void setType(KDevelop::AbstractType::Ptr type);
56     void setHadUnresolvedIdentifiers(bool v);
57
58     KDevelop::AbstractType::Ptr type() const;
59     QList<KDevelop::DeclarationId> allDeclarationIds() const;
60     QList<KDevelop::DeclarationPointer> allDeclarations() const;
61     bool hadUnresolvedIdentifiers() const;
62
63 private:
64     QList<KDevelop::DeclarationPointer> m_allDeclarations;
65     QList<KDevelop::DeclarationId> m_allDeclarationIds;
66     KDevelop::AbstractType::Ptr m_type; ///Type the expression evaluated to, may be zero when the expression failed to evaluate
67     bool m_hadUnresolvedIdentifiers;
68
69     //bool isInstance; ///Whether the result of this expression is an instance(as it normally should be)
70     //KDevelop::DeclarationId instanceDeclaration; ///If this expression is an instance of some type, this either contains the declaration of the instance, or the type
71 };
72
73 }
74
75 #endif