summaryrefslogtreecommitdiffstats
path: root/objects/cppfunction.h
blob: 2cff585493d05ce36d85df0dba88a6ec7007f9e1 (plain)
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
#ifndef SCRIPTING_INTERNAL_CPPFUNCTION_H
#define SCRIPTING_INTERNAL_CPPFUNCTION_H

#include <QObject>
#include <QMetaType>
#include <QList>
#include "utils/position.h"

namespace CPlusPlus {
    class Function;
}

namespace Scripting {
namespace Internal {

class CppArgument;

class CppFunction : public QObject
{
    Q_OBJECT
    Q_PROPERTY( QString name READ name )
    Q_PROPERTY( QString returnType READ returnType )
    Q_PROPERTY( QList<CppArgument*> arguments READ arguments )
    Q_PROPERTY( bool isVirtual READ isVirtual )
    Q_PROPERTY( bool isOverride READ isOverride )
    Q_PROPERTY( bool isFinal READ isFinal )
    Q_PROPERTY( bool isVariadic READ isVariadic )
    Q_PROPERTY( bool isConst READ isConst )
    Q_PROPERTY( bool isVolatile READ isVolatile )
    Q_PROPERTY( bool isPureVirtual READ isPureVirtual )
    Q_PROPERTY( Position start READ start)

public:
    static CppFunction* create(int line, int column, const QString& fileName);
    QString name() const;
    QString returnType() const;
    QList<CppArgument*> arguments() const;
    bool isVirtual() const;
    bool isOverride() const;
    bool isFinal() const;
    bool isVariadic() const;
    bool isConst() const;
    bool isVolatile() const;
    bool isPureVirtual() const;
    Position start() const;

private:
    CppFunction();
    static CPlusPlus::Function* function(int line,int column, const QString& fileName);
    static QString extractName(const CPlusPlus::Function* function);
    static QString extractReturnType(const CPlusPlus::Function* function);
    static QList<CppArgument *> extractArguments(const CPlusPlus::Function* function);

    QString m_name;
    QString m_returnType;
    QList<CppArgument*> m_arguments;
    bool m_isVirtual;
    bool m_isOverride;
    bool m_isFinal;
    bool m_isVariadic;
    bool m_isConst;
    bool m_isVolatile;
    bool m_isPureVirtual;
    Position m_start;
};

} // namespace Internal
} // namespace Scripting

Q_DECLARE_METATYPE(Scripting::Internal::CppFunction*)

#endif // SCRIPTING_INTERNAL_CPPFUNCTION_H