~vtuson/scopecreator/twitter-template

« back to all changes in this revision

Viewing changes to src/go/src/gopkg.in/v0/qml/cpp/govaluetype.cpp

  • Committer: Victor Palau
  • Date: 2015-03-11 14:24:42 UTC
  • Revision ID: vtuson@gmail.com-20150311142442-f2pxp111c8ynv232
public release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "govaluetype.h"
 
2
 
 
3
#define DEFINE_GOVALUETYPE(N) \
 
4
    template<> QMetaObject GoValueType<N>::staticMetaObject = QMetaObject(); \
 
5
    template<> GoTypeInfo *GoValueType<N>::typeInfo = 0; \
 
6
    template<> GoTypeSpec_ *GoValueType<N>::typeSpec = 0;
 
7
 
 
8
#define DEFINE_GOPAINTEDVALUETYPE(N) \
 
9
    template<> QMetaObject GoPaintedValueType<N>::staticMetaObject = QMetaObject(); \
 
10
    template<> GoTypeInfo *GoPaintedValueType<N>::typeInfo = 0; \
 
11
    template<> GoTypeSpec_ *GoPaintedValueType<N>::typeSpec = 0;
 
12
 
 
13
DEFINE_GOVALUETYPE(1)
 
14
DEFINE_GOVALUETYPE(2)
 
15
DEFINE_GOVALUETYPE(3)
 
16
DEFINE_GOVALUETYPE(4)
 
17
DEFINE_GOVALUETYPE(5)
 
18
DEFINE_GOVALUETYPE(6)
 
19
DEFINE_GOVALUETYPE(7)
 
20
DEFINE_GOVALUETYPE(8)
 
21
DEFINE_GOVALUETYPE(9)
 
22
DEFINE_GOVALUETYPE(10)
 
23
DEFINE_GOVALUETYPE(11)
 
24
DEFINE_GOVALUETYPE(12)
 
25
DEFINE_GOVALUETYPE(13)
 
26
DEFINE_GOVALUETYPE(14)
 
27
DEFINE_GOVALUETYPE(15)
 
28
DEFINE_GOVALUETYPE(16)
 
29
DEFINE_GOVALUETYPE(17)
 
30
DEFINE_GOVALUETYPE(18)
 
31
DEFINE_GOVALUETYPE(19)
 
32
DEFINE_GOVALUETYPE(20)
 
33
DEFINE_GOVALUETYPE(21)
 
34
DEFINE_GOVALUETYPE(22)
 
35
DEFINE_GOVALUETYPE(23)
 
36
DEFINE_GOVALUETYPE(24)
 
37
DEFINE_GOVALUETYPE(25)
 
38
DEFINE_GOVALUETYPE(26)
 
39
DEFINE_GOVALUETYPE(27)
 
40
DEFINE_GOVALUETYPE(28)
 
41
DEFINE_GOVALUETYPE(29)
 
42
DEFINE_GOVALUETYPE(30)
 
43
 
 
44
DEFINE_GOPAINTEDVALUETYPE(1)
 
45
DEFINE_GOPAINTEDVALUETYPE(2)
 
46
DEFINE_GOPAINTEDVALUETYPE(3)
 
47
DEFINE_GOPAINTEDVALUETYPE(4)
 
48
DEFINE_GOPAINTEDVALUETYPE(5)
 
49
DEFINE_GOPAINTEDVALUETYPE(6)
 
50
DEFINE_GOPAINTEDVALUETYPE(7)
 
51
DEFINE_GOPAINTEDVALUETYPE(8)
 
52
DEFINE_GOPAINTEDVALUETYPE(9)
 
53
DEFINE_GOPAINTEDVALUETYPE(10)
 
54
DEFINE_GOPAINTEDVALUETYPE(11)
 
55
DEFINE_GOPAINTEDVALUETYPE(12)
 
56
DEFINE_GOPAINTEDVALUETYPE(13)
 
57
DEFINE_GOPAINTEDVALUETYPE(14)
 
58
DEFINE_GOPAINTEDVALUETYPE(15)
 
59
DEFINE_GOPAINTEDVALUETYPE(16)
 
60
DEFINE_GOPAINTEDVALUETYPE(17)
 
61
DEFINE_GOPAINTEDVALUETYPE(18)
 
62
DEFINE_GOPAINTEDVALUETYPE(19)
 
63
DEFINE_GOPAINTEDVALUETYPE(20)
 
64
DEFINE_GOPAINTEDVALUETYPE(21)
 
65
DEFINE_GOPAINTEDVALUETYPE(22)
 
66
DEFINE_GOPAINTEDVALUETYPE(23)
 
67
DEFINE_GOPAINTEDVALUETYPE(24)
 
68
DEFINE_GOPAINTEDVALUETYPE(25)
 
69
DEFINE_GOPAINTEDVALUETYPE(26)
 
70
DEFINE_GOPAINTEDVALUETYPE(27)
 
71
DEFINE_GOPAINTEDVALUETYPE(28)
 
72
DEFINE_GOPAINTEDVALUETYPE(29)
 
73
DEFINE_GOPAINTEDVALUETYPE(30)
 
74
 
 
75
static int goValueTypeN = 0;
 
76
static int goPaintedValueTypeN = 0;
 
77
 
 
78
template<int N>
 
79
int registerSingletonN(char *location, int major, int minor, char *name, GoTypeInfo *info, GoTypeSpec_ *spec) {
 
80
    GoValueType<N>::init(info, spec);
 
81
    return qmlRegisterSingletonType< GoValueType<N> >(location, major, minor, name, [](QQmlEngine *qmlEngine, QJSEngine *jsEngine) -> QObject* {
 
82
        QObject *singleton = new GoValueType<N>();
 
83
        QQmlEngine::setContextForObject(singleton, qmlEngine->rootContext());
 
84
        return singleton;
 
85
    });
 
86
}
 
87
 
 
88
template<int N>
 
89
int registerPaintedSingletonN(char *location, int major, int minor, char *name, GoTypeInfo *info, GoTypeSpec_ *spec) {
 
90
    GoPaintedValueType<N>::init(info, spec);
 
91
    return qmlRegisterSingletonType< GoPaintedValueType<N> >(location, major, minor, name, [](QQmlEngine *qmlEngine, QJSEngine *jsEngine) -> QObject* {
 
92
        QObject *singleton = new GoPaintedValueType<N>();
 
93
        QQmlEngine::setContextForObject(singleton, qmlEngine->rootContext());
 
94
        return singleton;
 
95
    });
 
96
}
 
97
 
 
98
#define GOVALUETYPE_CASE_SINGLETON(N) \
 
99
        case N: return registerSingletonN<N>(location, major, minor, name, info, spec);
 
100
#define GOPAINTEDVALUETYPE_CASE_SINGLETON(N) \
 
101
        case N: return registerPaintedSingletonN<N>(location, major, minor, name, info, spec);
 
102
 
 
103
int registerSingleton(char *location, int major, int minor, char *name, GoTypeInfo *info, GoTypeSpec_ *spec)
 
104
{
 
105
    if (!info->paint) {
 
106
        switch (++goValueTypeN) {
 
107
        GOVALUETYPE_CASE_SINGLETON(1)
 
108
        GOVALUETYPE_CASE_SINGLETON(2)
 
109
        GOVALUETYPE_CASE_SINGLETON(3)
 
110
        GOVALUETYPE_CASE_SINGLETON(4)
 
111
        GOVALUETYPE_CASE_SINGLETON(5)
 
112
        GOVALUETYPE_CASE_SINGLETON(6)
 
113
        GOVALUETYPE_CASE_SINGLETON(7)
 
114
        GOVALUETYPE_CASE_SINGLETON(8)
 
115
        GOVALUETYPE_CASE_SINGLETON(9)
 
116
        GOVALUETYPE_CASE_SINGLETON(10)
 
117
        GOVALUETYPE_CASE_SINGLETON(11)
 
118
        GOVALUETYPE_CASE_SINGLETON(12)
 
119
        GOVALUETYPE_CASE_SINGLETON(13)
 
120
        GOVALUETYPE_CASE_SINGLETON(14)
 
121
        GOVALUETYPE_CASE_SINGLETON(15)
 
122
        GOVALUETYPE_CASE_SINGLETON(16)
 
123
        GOVALUETYPE_CASE_SINGLETON(17)
 
124
        GOVALUETYPE_CASE_SINGLETON(18)
 
125
        GOVALUETYPE_CASE_SINGLETON(19)
 
126
        GOVALUETYPE_CASE_SINGLETON(20)
 
127
        GOVALUETYPE_CASE_SINGLETON(21)
 
128
        GOVALUETYPE_CASE_SINGLETON(22)
 
129
        GOVALUETYPE_CASE_SINGLETON(23)
 
130
        GOVALUETYPE_CASE_SINGLETON(24)
 
131
        GOVALUETYPE_CASE_SINGLETON(25)
 
132
        GOVALUETYPE_CASE_SINGLETON(26)
 
133
        GOVALUETYPE_CASE_SINGLETON(27)
 
134
        GOVALUETYPE_CASE_SINGLETON(28)
 
135
        GOVALUETYPE_CASE_SINGLETON(29)
 
136
        GOVALUETYPE_CASE_SINGLETON(30)
 
137
        }
 
138
    } else {
 
139
        switch (++goPaintedValueTypeN) {
 
140
        GOPAINTEDVALUETYPE_CASE_SINGLETON(1)
 
141
        GOPAINTEDVALUETYPE_CASE_SINGLETON(2)
 
142
        GOPAINTEDVALUETYPE_CASE_SINGLETON(3)
 
143
        GOPAINTEDVALUETYPE_CASE_SINGLETON(4)
 
144
        GOPAINTEDVALUETYPE_CASE_SINGLETON(5)
 
145
        GOPAINTEDVALUETYPE_CASE_SINGLETON(6)
 
146
        GOPAINTEDVALUETYPE_CASE_SINGLETON(7)
 
147
        GOPAINTEDVALUETYPE_CASE_SINGLETON(8)
 
148
        GOPAINTEDVALUETYPE_CASE_SINGLETON(9)
 
149
        GOPAINTEDVALUETYPE_CASE_SINGLETON(10)
 
150
        GOPAINTEDVALUETYPE_CASE_SINGLETON(11)
 
151
        GOPAINTEDVALUETYPE_CASE_SINGLETON(12)
 
152
        GOPAINTEDVALUETYPE_CASE_SINGLETON(13)
 
153
        GOPAINTEDVALUETYPE_CASE_SINGLETON(14)
 
154
        GOPAINTEDVALUETYPE_CASE_SINGLETON(15)
 
155
        GOPAINTEDVALUETYPE_CASE_SINGLETON(16)
 
156
        GOPAINTEDVALUETYPE_CASE_SINGLETON(17)
 
157
        GOPAINTEDVALUETYPE_CASE_SINGLETON(18)
 
158
        GOPAINTEDVALUETYPE_CASE_SINGLETON(19)
 
159
        GOPAINTEDVALUETYPE_CASE_SINGLETON(20)
 
160
        GOPAINTEDVALUETYPE_CASE_SINGLETON(21)
 
161
        GOPAINTEDVALUETYPE_CASE_SINGLETON(22)
 
162
        GOPAINTEDVALUETYPE_CASE_SINGLETON(23)
 
163
        GOPAINTEDVALUETYPE_CASE_SINGLETON(24)
 
164
        GOPAINTEDVALUETYPE_CASE_SINGLETON(25)
 
165
        GOPAINTEDVALUETYPE_CASE_SINGLETON(26)
 
166
        GOPAINTEDVALUETYPE_CASE_SINGLETON(27)
 
167
        GOPAINTEDVALUETYPE_CASE_SINGLETON(28)
 
168
        GOPAINTEDVALUETYPE_CASE_SINGLETON(29)
 
169
        GOPAINTEDVALUETYPE_CASE_SINGLETON(30)
 
170
        }
 
171
    }
 
172
    panicf("too many registered types; please contact the Go QML developers");
 
173
    return 0;
 
174
}
 
175
 
 
176
#define GOVALUETYPE_CASE(N) \
 
177
    case N: GoValueType<N>::init(info, spec); return qmlRegisterType< GoValueType<N> >(location, major, minor, name);
 
178
#define GOPAINTEDVALUETYPE_CASE(N) \
 
179
    case N: GoPaintedValueType<N>::init(info, spec); return qmlRegisterType< GoPaintedValueType<N> >(location, major, minor, name);
 
180
 
 
181
int registerType(char *location, int major, int minor, char *name, GoTypeInfo *info, GoTypeSpec_ *spec)
 
182
{
 
183
    if (!info->paint) {
 
184
        switch (++goValueTypeN) {
 
185
        GOVALUETYPE_CASE(1)
 
186
        GOVALUETYPE_CASE(2)
 
187
        GOVALUETYPE_CASE(3)
 
188
        GOVALUETYPE_CASE(4)
 
189
        GOVALUETYPE_CASE(5)
 
190
        GOVALUETYPE_CASE(6)
 
191
        GOVALUETYPE_CASE(7)
 
192
        GOVALUETYPE_CASE(8)
 
193
        GOVALUETYPE_CASE(9)
 
194
        GOVALUETYPE_CASE(10)
 
195
        GOVALUETYPE_CASE(11)
 
196
        GOVALUETYPE_CASE(12)
 
197
        GOVALUETYPE_CASE(13)
 
198
        GOVALUETYPE_CASE(14)
 
199
        GOVALUETYPE_CASE(15)
 
200
        GOVALUETYPE_CASE(16)
 
201
        GOVALUETYPE_CASE(17)
 
202
        GOVALUETYPE_CASE(18)
 
203
        GOVALUETYPE_CASE(19)
 
204
        GOVALUETYPE_CASE(20)
 
205
        GOVALUETYPE_CASE(21)
 
206
        GOVALUETYPE_CASE(22)
 
207
        GOVALUETYPE_CASE(23)
 
208
        GOVALUETYPE_CASE(24)
 
209
        GOVALUETYPE_CASE(25)
 
210
        GOVALUETYPE_CASE(26)
 
211
        GOVALUETYPE_CASE(27)
 
212
        GOVALUETYPE_CASE(28)
 
213
        GOVALUETYPE_CASE(29)
 
214
        GOVALUETYPE_CASE(30)
 
215
        }
 
216
    } else {
 
217
        switch (++goPaintedValueTypeN) {
 
218
        GOPAINTEDVALUETYPE_CASE(1)
 
219
        GOPAINTEDVALUETYPE_CASE(2)
 
220
        GOPAINTEDVALUETYPE_CASE(3)
 
221
        GOPAINTEDVALUETYPE_CASE(4)
 
222
        GOPAINTEDVALUETYPE_CASE(5)
 
223
        GOPAINTEDVALUETYPE_CASE(6)
 
224
        GOPAINTEDVALUETYPE_CASE(7)
 
225
        GOPAINTEDVALUETYPE_CASE(8)
 
226
        GOPAINTEDVALUETYPE_CASE(9)
 
227
        GOPAINTEDVALUETYPE_CASE(10)
 
228
        GOPAINTEDVALUETYPE_CASE(11)
 
229
        GOPAINTEDVALUETYPE_CASE(12)
 
230
        GOPAINTEDVALUETYPE_CASE(13)
 
231
        GOPAINTEDVALUETYPE_CASE(14)
 
232
        GOPAINTEDVALUETYPE_CASE(15)
 
233
        GOPAINTEDVALUETYPE_CASE(16)
 
234
        GOPAINTEDVALUETYPE_CASE(17)
 
235
        GOPAINTEDVALUETYPE_CASE(18)
 
236
        GOPAINTEDVALUETYPE_CASE(19)
 
237
        GOPAINTEDVALUETYPE_CASE(20)
 
238
        GOPAINTEDVALUETYPE_CASE(21)
 
239
        GOPAINTEDVALUETYPE_CASE(22)
 
240
        GOPAINTEDVALUETYPE_CASE(23)
 
241
        GOPAINTEDVALUETYPE_CASE(24)
 
242
        GOPAINTEDVALUETYPE_CASE(25)
 
243
        GOPAINTEDVALUETYPE_CASE(26)
 
244
        GOPAINTEDVALUETYPE_CASE(27)
 
245
        GOPAINTEDVALUETYPE_CASE(28)
 
246
        GOPAINTEDVALUETYPE_CASE(29)
 
247
        GOPAINTEDVALUETYPE_CASE(30)
 
248
        }
 
249
    }
 
250
    panicf("too many registered types; please contact the Go QML developers");
 
251
    return 0;
 
252
}
 
253
 
 
254
// vim:sw=4:st=4:et:ft=cpp