File: ptrtomembertype.h

package info (click to toggle)
kdevelop 4%3A4.3.1-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 18,844 kB
  • sloc: cpp: 91,758; python: 1,095; lex: 422; ruby: 120; sh: 114; xml: 42; makefile: 38
file content (78 lines) | stat: -rw-r--r-- 2,494 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/* This file is part of KDevelop
 *    Copyright 2006 Roberto Raggi <roberto@kdevelop.org>
 *    Copyright 2006-2008 Hamish Rodda <rodda@kde.org>
 *    Copyright 2007-2008 David Nolden <david.nolden.kdevelop@art-master.de>
 *    Copyright 2010 Floris Ruijter <flo.ruijt@hotmail.com> , adaption of pointertype by above-mentioned authors
 *
 *   This library is free software; you can redistribute it and/or
 *   modify it under the terms of the GNU Library General Public
 *   License version 2 as published by the Free Software Foundation.
 *
 *   This library is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 *   Library General Public License for more details.
 *
 *   You should have received a copy of the GNU Library General Public License
 *   along with this library; see the file COPYING.LIB.  If not, write to
 *   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 *   Boston, MA 02110-1301, USA.
 */
#ifndef PTRTOMEMBERTYPE_H
#define PTRTOMEMBERTYPE_H

#include <language/duchain/types/pointertype.h>
#include <language/duchain/types/structuretype.h>
#include "cppduchainexport.h"
namespace Cpp {
class PtrToMemberTypeData;
class KDEVCPPDUCHAIN_EXPORT PtrToMemberType : public KDevelop::PointerType
{
  public:
    typedef TypePtr<PtrToMemberType> Ptr;
    typedef PointerType BaseType;

    /// Default constructor
    PtrToMemberType ();
    /// Copy constructor. \param rhs type to copy
    PtrToMemberType(const PtrToMemberType& rhs);
    /// Constructor using raw data. \param data internal data.
    PtrToMemberType(PtrToMemberTypeData& data);
    /// Destructor
    virtual ~PtrToMemberType();

    /**
      * sets the class type, ie. the B of A B::* foo
      *
      * \param ClassType : B
      */
    void setClassType(AbstractType::Ptr type);

    AbstractType::Ptr classType () const;

    virtual QString toString() const;

    virtual uint hash() const;

    virtual WhichType whichType() const;

    virtual AbstractType* clone() const;

    virtual bool equals(const AbstractType* rhs) const;

    virtual void exchangeTypes( KDevelop::TypeExchanger* exchanger );

    enum {
        Identity = 42
      };

      typedef PtrToMemberTypeData Data;

    protected:
      virtual void accept0 (KDevelop::TypeVisitor *v) const;

      TYPE_DECLARE_DATA(PtrToMemberType)

    };
}
#endif // PTRTOMEMBERTYPE_H