aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/expectedtoken.cpp
blob: d6c6f4bfbdb3fceb0aa9d2961c8b945a84fdeb74 (plain) (blame)
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
#include "expectedtoken.h"

bool ExpectedToken::needsWrapping() const
{
    switch (type)
    {
        case ExpectedToken::COLUMN:
        case ExpectedToken::TABLE:
        case ExpectedToken::INDEX:
        case ExpectedToken::TRIGGER:
        case ExpectedToken::VIEW:
        case ExpectedToken::DATABASE:
        case ExpectedToken::OTHER:
        case ExpectedToken::COLLATION:
            return true;
        case ExpectedToken::KEYWORD:
        case ExpectedToken::FUNCTION:
        case ExpectedToken::OPERATOR:
        case ExpectedToken::STRING:
        case ExpectedToken::NUMBER:
        case ExpectedToken::BLOB:
        case ExpectedToken::PRAGMA:
        case ExpectedToken::NO_VALUE:
            return false;
    }
    return false;
}

int ExpectedToken::operator==(const ExpectedToken& other)
{
    return type == other.type && value == other.value && contextInfo == other.contextInfo &&
            label == other.label && prefix == other.prefix;
}

QString ExpectedToken::toString() const
{
    return QString("%4. %1 : %2 (ctx: %3) [label: %5]").arg(value).arg(type).arg(contextInfo).arg(prefix).arg(label);
}

ExpectedTokenPtr::ExpectedTokenPtr() :
    QSharedPointer<ExpectedToken>()
{
}

ExpectedTokenPtr::ExpectedTokenPtr(ExpectedToken* ptr) :
    QSharedPointer<ExpectedToken>(ptr)
{
}

ExpectedTokenPtr::ExpectedTokenPtr(const QSharedPointer<ExpectedToken>& other) :
    QSharedPointer<ExpectedToken>(other)
{
}

ExpectedTokenPtr::ExpectedTokenPtr(const QWeakPointer<ExpectedToken>& other) :
    QSharedPointer<ExpectedToken>(other)
{
}

int operator==(const ExpectedTokenPtr& ptr1, const ExpectedTokenPtr& ptr2)
{
    return *ptr1.data() == *ptr2.data();
}

int qHash(const ExpectedToken& token)
{
    return token.type ^ qHash(token.value + "/" + token.contextInfo + "/" + token.label + "/" + token.prefix);
}

int qHash(const ExpectedTokenPtr& ptr)
{
    return qHash(*ptr.data());
}