1 /*************************************************************************/
2 /*  global_constants.cpp                                                 */
3 /*************************************************************************/
4 /*                       This file is part of:                           */
5 /*                           GODOT ENGINE                                */
6 /*                      https://godotengine.org                          */
7 /*************************************************************************/
8 /* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur.                 */
9 /* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md).   */
10 /*                                                                       */
11 /* Permission is hereby granted, free of charge, to any person obtaining */
12 /* a copy of this software and associated documentation files (the       */
13 /* "Software"), to deal in the Software without restriction, including   */
14 /* without limitation the rights to use, copy, modify, merge, publish,   */
15 /* distribute, sublicense, and/or sell copies of the Software, and to    */
16 /* permit persons to whom the Software is furnished to do so, subject to */
17 /* the following conditions:                                             */
18 /*                                                                       */
19 /* The above copyright notice and this permission notice shall be        */
20 /* included in all copies or substantial portions of the Software.       */
21 /*                                                                       */
22 /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
23 /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
24 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
25 /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
26 /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
27 /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
28 /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
29 /*************************************************************************/
30 
31 #include "global_constants.h"
32 
33 #include "core/object.h"
34 #include "core/os/input_event.h"
35 #include "core/os/keyboard.h"
36 #include "core/variant.h"
37 
38 struct _GlobalConstant {
39 
40 #ifdef DEBUG_METHODS_ENABLED
41 	StringName enum_name;
42 #endif
43 	const char *name;
44 	int value;
45 
_GlobalConstant_GlobalConstant46 	_GlobalConstant() {}
47 
48 #ifdef DEBUG_METHODS_ENABLED
_GlobalConstant_GlobalConstant49 	_GlobalConstant(const StringName &p_enum_name, const char *p_name, int p_value) :
50 			enum_name(p_enum_name),
51 			name(p_name),
52 			value(p_value) {
53 	}
54 #else
_GlobalConstant_GlobalConstant55 	_GlobalConstant(const char *p_name, int p_value) :
56 			name(p_name),
57 			value(p_value) {
58 	}
59 #endif
60 };
61 
62 static Vector<_GlobalConstant> _global_constants;
63 
64 #ifdef DEBUG_METHODS_ENABLED
65 
66 #define BIND_GLOBAL_CONSTANT(m_constant) \
67 	_global_constants.push_back(_GlobalConstant(StringName(), #m_constant, m_constant));
68 
69 #define BIND_GLOBAL_ENUM_CONSTANT(m_constant) \
70 	_global_constants.push_back(_GlobalConstant(__constant_get_enum_name(m_constant, #m_constant), #m_constant, m_constant));
71 
72 #define BIND_GLOBAL_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
73 	_global_constants.push_back(_GlobalConstant(__constant_get_enum_name(m_constant, #m_constant), m_custom_name, m_constant));
74 
75 #else
76 
77 #define BIND_GLOBAL_CONSTANT(m_constant) \
78 	_global_constants.push_back(_GlobalConstant(#m_constant, m_constant));
79 
80 #define BIND_GLOBAL_ENUM_CONSTANT(m_constant) \
81 	_global_constants.push_back(_GlobalConstant(#m_constant, m_constant));
82 
83 #define BIND_GLOBAL_ENUM_CONSTANT_CUSTOM(m_custom_name, m_constant) \
84 	_global_constants.push_back(_GlobalConstant(m_custom_name, m_constant));
85 
86 #endif
87 
88 VARIANT_ENUM_CAST(KeyList);
89 VARIANT_ENUM_CAST(KeyModifierMask);
90 VARIANT_ENUM_CAST(ButtonList);
91 VARIANT_ENUM_CAST(JoystickList);
92 VARIANT_ENUM_CAST(MidiMessageList);
93 
register_global_constants()94 void register_global_constants() {
95 
96 	//{ KEY_BACKSPACE, VK_BACK },// (0x08) // backspace
97 
98 	BIND_GLOBAL_ENUM_CONSTANT(MARGIN_LEFT);
99 	BIND_GLOBAL_ENUM_CONSTANT(MARGIN_TOP);
100 	BIND_GLOBAL_ENUM_CONSTANT(MARGIN_RIGHT);
101 	BIND_GLOBAL_ENUM_CONSTANT(MARGIN_BOTTOM);
102 
103 	BIND_GLOBAL_ENUM_CONSTANT(CORNER_TOP_LEFT);
104 	BIND_GLOBAL_ENUM_CONSTANT(CORNER_TOP_RIGHT);
105 	BIND_GLOBAL_ENUM_CONSTANT(CORNER_BOTTOM_RIGHT);
106 	BIND_GLOBAL_ENUM_CONSTANT(CORNER_BOTTOM_LEFT);
107 
108 	BIND_GLOBAL_ENUM_CONSTANT(VERTICAL);
109 	BIND_GLOBAL_ENUM_CONSTANT(HORIZONTAL);
110 
111 	BIND_GLOBAL_ENUM_CONSTANT(HALIGN_LEFT);
112 	BIND_GLOBAL_ENUM_CONSTANT(HALIGN_CENTER);
113 	BIND_GLOBAL_ENUM_CONSTANT(HALIGN_RIGHT);
114 
115 	BIND_GLOBAL_ENUM_CONSTANT(VALIGN_TOP);
116 	BIND_GLOBAL_ENUM_CONSTANT(VALIGN_CENTER);
117 	BIND_GLOBAL_ENUM_CONSTANT(VALIGN_BOTTOM);
118 
119 	// hueg list of keys
120 	BIND_GLOBAL_CONSTANT(SPKEY);
121 
122 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ESCAPE);
123 	BIND_GLOBAL_ENUM_CONSTANT(KEY_TAB);
124 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BACKTAB);
125 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BACKSPACE);
126 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ENTER);
127 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_ENTER);
128 	BIND_GLOBAL_ENUM_CONSTANT(KEY_INSERT);
129 	BIND_GLOBAL_ENUM_CONSTANT(KEY_DELETE);
130 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PAUSE);
131 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PRINT);
132 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SYSREQ);
133 	BIND_GLOBAL_ENUM_CONSTANT(KEY_CLEAR);
134 	BIND_GLOBAL_ENUM_CONSTANT(KEY_HOME);
135 	BIND_GLOBAL_ENUM_CONSTANT(KEY_END);
136 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LEFT);
137 	BIND_GLOBAL_ENUM_CONSTANT(KEY_UP);
138 	BIND_GLOBAL_ENUM_CONSTANT(KEY_RIGHT);
139 	BIND_GLOBAL_ENUM_CONSTANT(KEY_DOWN);
140 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PAGEUP);
141 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PAGEDOWN);
142 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SHIFT);
143 	BIND_GLOBAL_ENUM_CONSTANT(KEY_CONTROL);
144 	BIND_GLOBAL_ENUM_CONSTANT(KEY_META);
145 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ALT);
146 	BIND_GLOBAL_ENUM_CONSTANT(KEY_CAPSLOCK);
147 	BIND_GLOBAL_ENUM_CONSTANT(KEY_NUMLOCK);
148 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SCROLLLOCK);
149 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F1);
150 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F2);
151 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F3);
152 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F4);
153 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F5);
154 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F6);
155 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F7);
156 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F8);
157 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F9);
158 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F10);
159 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F11);
160 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F12);
161 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F13);
162 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F14);
163 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F15);
164 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F16);
165 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_MULTIPLY);
166 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_DIVIDE);
167 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_SUBTRACT);
168 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_PERIOD);
169 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_ADD);
170 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_0);
171 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_1);
172 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_2);
173 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_3);
174 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_4);
175 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_5);
176 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_6);
177 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_7);
178 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_8);
179 	BIND_GLOBAL_ENUM_CONSTANT(KEY_KP_9);
180 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SUPER_L);
181 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SUPER_R);
182 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MENU);
183 	BIND_GLOBAL_ENUM_CONSTANT(KEY_HYPER_L);
184 	BIND_GLOBAL_ENUM_CONSTANT(KEY_HYPER_R);
185 	BIND_GLOBAL_ENUM_CONSTANT(KEY_HELP);
186 	BIND_GLOBAL_ENUM_CONSTANT(KEY_DIRECTION_L);
187 	BIND_GLOBAL_ENUM_CONSTANT(KEY_DIRECTION_R);
188 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BACK);
189 	BIND_GLOBAL_ENUM_CONSTANT(KEY_FORWARD);
190 	BIND_GLOBAL_ENUM_CONSTANT(KEY_STOP);
191 	BIND_GLOBAL_ENUM_CONSTANT(KEY_REFRESH);
192 	BIND_GLOBAL_ENUM_CONSTANT(KEY_VOLUMEDOWN);
193 	BIND_GLOBAL_ENUM_CONSTANT(KEY_VOLUMEMUTE);
194 	BIND_GLOBAL_ENUM_CONSTANT(KEY_VOLUMEUP);
195 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BASSBOOST);
196 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BASSUP);
197 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BASSDOWN);
198 	BIND_GLOBAL_ENUM_CONSTANT(KEY_TREBLEUP);
199 	BIND_GLOBAL_ENUM_CONSTANT(KEY_TREBLEDOWN);
200 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MEDIAPLAY);
201 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MEDIASTOP);
202 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MEDIAPREVIOUS);
203 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MEDIANEXT);
204 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MEDIARECORD);
205 	BIND_GLOBAL_ENUM_CONSTANT(KEY_HOMEPAGE);
206 	BIND_GLOBAL_ENUM_CONSTANT(KEY_FAVORITES);
207 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SEARCH);
208 	BIND_GLOBAL_ENUM_CONSTANT(KEY_STANDBY);
209 	BIND_GLOBAL_ENUM_CONSTANT(KEY_OPENURL);
210 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHMAIL);
211 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHMEDIA);
212 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH0);
213 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH1);
214 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH2);
215 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH3);
216 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH4);
217 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH5);
218 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH6);
219 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH7);
220 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH8);
221 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCH9);
222 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHA);
223 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHB);
224 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHC);
225 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHD);
226 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHE);
227 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LAUNCHF);
228 
229 	BIND_GLOBAL_ENUM_CONSTANT(KEY_UNKNOWN);
230 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SPACE);
231 	BIND_GLOBAL_ENUM_CONSTANT(KEY_EXCLAM);
232 	BIND_GLOBAL_ENUM_CONSTANT(KEY_QUOTEDBL);
233 	BIND_GLOBAL_ENUM_CONSTANT(KEY_NUMBERSIGN);
234 	BIND_GLOBAL_ENUM_CONSTANT(KEY_DOLLAR);
235 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PERCENT);
236 	BIND_GLOBAL_ENUM_CONSTANT(KEY_AMPERSAND);
237 	BIND_GLOBAL_ENUM_CONSTANT(KEY_APOSTROPHE);
238 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PARENLEFT);
239 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PARENRIGHT);
240 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ASTERISK);
241 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PLUS);
242 	BIND_GLOBAL_ENUM_CONSTANT(KEY_COMMA);
243 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MINUS);
244 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PERIOD);
245 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SLASH);
246 	BIND_GLOBAL_ENUM_CONSTANT(KEY_0);
247 	BIND_GLOBAL_ENUM_CONSTANT(KEY_1);
248 	BIND_GLOBAL_ENUM_CONSTANT(KEY_2);
249 	BIND_GLOBAL_ENUM_CONSTANT(KEY_3);
250 	BIND_GLOBAL_ENUM_CONSTANT(KEY_4);
251 	BIND_GLOBAL_ENUM_CONSTANT(KEY_5);
252 	BIND_GLOBAL_ENUM_CONSTANT(KEY_6);
253 	BIND_GLOBAL_ENUM_CONSTANT(KEY_7);
254 	BIND_GLOBAL_ENUM_CONSTANT(KEY_8);
255 	BIND_GLOBAL_ENUM_CONSTANT(KEY_9);
256 	BIND_GLOBAL_ENUM_CONSTANT(KEY_COLON);
257 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SEMICOLON);
258 	BIND_GLOBAL_ENUM_CONSTANT(KEY_LESS);
259 	BIND_GLOBAL_ENUM_CONSTANT(KEY_EQUAL);
260 	BIND_GLOBAL_ENUM_CONSTANT(KEY_GREATER);
261 	BIND_GLOBAL_ENUM_CONSTANT(KEY_QUESTION);
262 	BIND_GLOBAL_ENUM_CONSTANT(KEY_AT);
263 	BIND_GLOBAL_ENUM_CONSTANT(KEY_A);
264 	BIND_GLOBAL_ENUM_CONSTANT(KEY_B);
265 	BIND_GLOBAL_ENUM_CONSTANT(KEY_C);
266 	BIND_GLOBAL_ENUM_CONSTANT(KEY_D);
267 	BIND_GLOBAL_ENUM_CONSTANT(KEY_E);
268 	BIND_GLOBAL_ENUM_CONSTANT(KEY_F);
269 	BIND_GLOBAL_ENUM_CONSTANT(KEY_G);
270 	BIND_GLOBAL_ENUM_CONSTANT(KEY_H);
271 	BIND_GLOBAL_ENUM_CONSTANT(KEY_I);
272 	BIND_GLOBAL_ENUM_CONSTANT(KEY_J);
273 	BIND_GLOBAL_ENUM_CONSTANT(KEY_K);
274 	BIND_GLOBAL_ENUM_CONSTANT(KEY_L);
275 	BIND_GLOBAL_ENUM_CONSTANT(KEY_M);
276 	BIND_GLOBAL_ENUM_CONSTANT(KEY_N);
277 	BIND_GLOBAL_ENUM_CONSTANT(KEY_O);
278 	BIND_GLOBAL_ENUM_CONSTANT(KEY_P);
279 	BIND_GLOBAL_ENUM_CONSTANT(KEY_Q);
280 	BIND_GLOBAL_ENUM_CONSTANT(KEY_R);
281 	BIND_GLOBAL_ENUM_CONSTANT(KEY_S);
282 	BIND_GLOBAL_ENUM_CONSTANT(KEY_T);
283 	BIND_GLOBAL_ENUM_CONSTANT(KEY_U);
284 	BIND_GLOBAL_ENUM_CONSTANT(KEY_V);
285 	BIND_GLOBAL_ENUM_CONSTANT(KEY_W);
286 	BIND_GLOBAL_ENUM_CONSTANT(KEY_X);
287 	BIND_GLOBAL_ENUM_CONSTANT(KEY_Y);
288 	BIND_GLOBAL_ENUM_CONSTANT(KEY_Z);
289 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BRACKETLEFT);
290 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BACKSLASH);
291 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BRACKETRIGHT);
292 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ASCIICIRCUM);
293 	BIND_GLOBAL_ENUM_CONSTANT(KEY_UNDERSCORE);
294 	BIND_GLOBAL_ENUM_CONSTANT(KEY_QUOTELEFT);
295 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BRACELEFT);
296 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BAR);
297 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BRACERIGHT);
298 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ASCIITILDE);
299 	BIND_GLOBAL_ENUM_CONSTANT(KEY_NOBREAKSPACE);
300 	BIND_GLOBAL_ENUM_CONSTANT(KEY_EXCLAMDOWN);
301 	BIND_GLOBAL_ENUM_CONSTANT(KEY_CENT);
302 	BIND_GLOBAL_ENUM_CONSTANT(KEY_STERLING);
303 	BIND_GLOBAL_ENUM_CONSTANT(KEY_CURRENCY);
304 	BIND_GLOBAL_ENUM_CONSTANT(KEY_YEN);
305 	BIND_GLOBAL_ENUM_CONSTANT(KEY_BROKENBAR);
306 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SECTION);
307 	BIND_GLOBAL_ENUM_CONSTANT(KEY_DIAERESIS);
308 	BIND_GLOBAL_ENUM_CONSTANT(KEY_COPYRIGHT);
309 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ORDFEMININE);
310 	BIND_GLOBAL_ENUM_CONSTANT(KEY_GUILLEMOTLEFT);
311 	BIND_GLOBAL_ENUM_CONSTANT(KEY_NOTSIGN);
312 	BIND_GLOBAL_ENUM_CONSTANT(KEY_HYPHEN);
313 	BIND_GLOBAL_ENUM_CONSTANT(KEY_REGISTERED);
314 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MACRON);
315 	BIND_GLOBAL_ENUM_CONSTANT(KEY_DEGREE);
316 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PLUSMINUS);
317 	BIND_GLOBAL_ENUM_CONSTANT(KEY_TWOSUPERIOR);
318 	BIND_GLOBAL_ENUM_CONSTANT(KEY_THREESUPERIOR);
319 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ACUTE);
320 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MU);
321 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PARAGRAPH);
322 	BIND_GLOBAL_ENUM_CONSTANT(KEY_PERIODCENTERED);
323 	BIND_GLOBAL_ENUM_CONSTANT(KEY_CEDILLA);
324 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ONESUPERIOR);
325 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MASCULINE);
326 	BIND_GLOBAL_ENUM_CONSTANT(KEY_GUILLEMOTRIGHT);
327 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ONEQUARTER);
328 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ONEHALF);
329 	BIND_GLOBAL_ENUM_CONSTANT(KEY_THREEQUARTERS);
330 	BIND_GLOBAL_ENUM_CONSTANT(KEY_QUESTIONDOWN);
331 	BIND_GLOBAL_ENUM_CONSTANT(KEY_AGRAVE);
332 	BIND_GLOBAL_ENUM_CONSTANT(KEY_AACUTE);
333 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ACIRCUMFLEX);
334 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ATILDE);
335 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ADIAERESIS);
336 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ARING);
337 	BIND_GLOBAL_ENUM_CONSTANT(KEY_AE);
338 	BIND_GLOBAL_ENUM_CONSTANT(KEY_CCEDILLA);
339 	BIND_GLOBAL_ENUM_CONSTANT(KEY_EGRAVE);
340 	BIND_GLOBAL_ENUM_CONSTANT(KEY_EACUTE);
341 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ECIRCUMFLEX);
342 	BIND_GLOBAL_ENUM_CONSTANT(KEY_EDIAERESIS);
343 	BIND_GLOBAL_ENUM_CONSTANT(KEY_IGRAVE);
344 	BIND_GLOBAL_ENUM_CONSTANT(KEY_IACUTE);
345 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ICIRCUMFLEX);
346 	BIND_GLOBAL_ENUM_CONSTANT(KEY_IDIAERESIS);
347 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ETH);
348 	BIND_GLOBAL_ENUM_CONSTANT(KEY_NTILDE);
349 	BIND_GLOBAL_ENUM_CONSTANT(KEY_OGRAVE);
350 	BIND_GLOBAL_ENUM_CONSTANT(KEY_OACUTE);
351 	BIND_GLOBAL_ENUM_CONSTANT(KEY_OCIRCUMFLEX);
352 	BIND_GLOBAL_ENUM_CONSTANT(KEY_OTILDE);
353 	BIND_GLOBAL_ENUM_CONSTANT(KEY_ODIAERESIS);
354 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MULTIPLY);
355 	BIND_GLOBAL_ENUM_CONSTANT(KEY_OOBLIQUE);
356 	BIND_GLOBAL_ENUM_CONSTANT(KEY_UGRAVE);
357 	BIND_GLOBAL_ENUM_CONSTANT(KEY_UACUTE);
358 	BIND_GLOBAL_ENUM_CONSTANT(KEY_UCIRCUMFLEX);
359 	BIND_GLOBAL_ENUM_CONSTANT(KEY_UDIAERESIS);
360 	BIND_GLOBAL_ENUM_CONSTANT(KEY_YACUTE);
361 	BIND_GLOBAL_ENUM_CONSTANT(KEY_THORN);
362 	BIND_GLOBAL_ENUM_CONSTANT(KEY_SSHARP);
363 
364 	BIND_GLOBAL_ENUM_CONSTANT(KEY_DIVISION);
365 	BIND_GLOBAL_ENUM_CONSTANT(KEY_YDIAERESIS);
366 
367 	BIND_GLOBAL_ENUM_CONSTANT(KEY_CODE_MASK);
368 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MODIFIER_MASK);
369 
370 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_SHIFT);
371 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_ALT);
372 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_META);
373 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_CTRL);
374 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_CMD);
375 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_KPAD);
376 	BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_GROUP_SWITCH);
377 
378 	// mouse
379 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_LEFT);
380 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_RIGHT);
381 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_MIDDLE);
382 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_XBUTTON1);
383 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_XBUTTON2);
384 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_WHEEL_UP);
385 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_WHEEL_DOWN);
386 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_WHEEL_LEFT);
387 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_WHEEL_RIGHT);
388 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_MASK_LEFT);
389 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_MASK_RIGHT);
390 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_MASK_MIDDLE);
391 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_MASK_XBUTTON1);
392 	BIND_GLOBAL_ENUM_CONSTANT(BUTTON_MASK_XBUTTON2);
393 
394 	//joypads
395 	BIND_GLOBAL_ENUM_CONSTANT(JOY_INVALID_OPTION);
396 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_0);
397 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_1);
398 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_2);
399 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_3);
400 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_4);
401 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_5);
402 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_6);
403 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_7);
404 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_8);
405 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_9);
406 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_10);
407 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_11);
408 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_12);
409 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_13);
410 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_14);
411 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_15);
412 	BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_MAX);
413 
414 	BIND_GLOBAL_ENUM_CONSTANT(JOY_SONY_CIRCLE);
415 	BIND_GLOBAL_ENUM_CONSTANT(JOY_SONY_X);
416 	BIND_GLOBAL_ENUM_CONSTANT(JOY_SONY_SQUARE);
417 	BIND_GLOBAL_ENUM_CONSTANT(JOY_SONY_TRIANGLE);
418 
419 	BIND_GLOBAL_ENUM_CONSTANT(JOY_XBOX_B);
420 	BIND_GLOBAL_ENUM_CONSTANT(JOY_XBOX_A);
421 	BIND_GLOBAL_ENUM_CONSTANT(JOY_XBOX_X);
422 	BIND_GLOBAL_ENUM_CONSTANT(JOY_XBOX_Y);
423 
424 	BIND_GLOBAL_ENUM_CONSTANT(JOY_DS_A);
425 	BIND_GLOBAL_ENUM_CONSTANT(JOY_DS_B);
426 	BIND_GLOBAL_ENUM_CONSTANT(JOY_DS_X);
427 	BIND_GLOBAL_ENUM_CONSTANT(JOY_DS_Y);
428 
429 	BIND_GLOBAL_ENUM_CONSTANT(JOY_VR_GRIP);
430 	BIND_GLOBAL_ENUM_CONSTANT(JOY_VR_PAD);
431 	BIND_GLOBAL_ENUM_CONSTANT(JOY_VR_TRIGGER);
432 
433 	BIND_GLOBAL_ENUM_CONSTANT(JOY_OCULUS_AX);
434 	BIND_GLOBAL_ENUM_CONSTANT(JOY_OCULUS_BY);
435 	BIND_GLOBAL_ENUM_CONSTANT(JOY_OCULUS_MENU);
436 
437 	BIND_GLOBAL_ENUM_CONSTANT(JOY_OPENVR_MENU);
438 
439 	BIND_GLOBAL_ENUM_CONSTANT(JOY_SELECT);
440 	BIND_GLOBAL_ENUM_CONSTANT(JOY_START);
441 	BIND_GLOBAL_ENUM_CONSTANT(JOY_DPAD_UP);
442 	BIND_GLOBAL_ENUM_CONSTANT(JOY_DPAD_DOWN);
443 	BIND_GLOBAL_ENUM_CONSTANT(JOY_DPAD_LEFT);
444 	BIND_GLOBAL_ENUM_CONSTANT(JOY_DPAD_RIGHT);
445 	BIND_GLOBAL_ENUM_CONSTANT(JOY_L);
446 	BIND_GLOBAL_ENUM_CONSTANT(JOY_L2);
447 	BIND_GLOBAL_ENUM_CONSTANT(JOY_L3);
448 	BIND_GLOBAL_ENUM_CONSTANT(JOY_R);
449 	BIND_GLOBAL_ENUM_CONSTANT(JOY_R2);
450 	BIND_GLOBAL_ENUM_CONSTANT(JOY_R3);
451 
452 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_0);
453 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_1);
454 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_2);
455 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_3);
456 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_4);
457 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_5);
458 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_6);
459 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_7);
460 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_8);
461 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_9);
462 	BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_MAX);
463 
464 	BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_LX);
465 	BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_LY);
466 
467 	BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_RX);
468 	BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_RY);
469 
470 	BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_L2);
471 	BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_R2);
472 
473 	BIND_GLOBAL_ENUM_CONSTANT(JOY_VR_ANALOG_TRIGGER);
474 	BIND_GLOBAL_ENUM_CONSTANT(JOY_VR_ANALOG_GRIP);
475 
476 	BIND_GLOBAL_ENUM_CONSTANT(JOY_OPENVR_TOUCHPADX);
477 	BIND_GLOBAL_ENUM_CONSTANT(JOY_OPENVR_TOUCHPADY);
478 
479 	// midi
480 	BIND_GLOBAL_ENUM_CONSTANT(MIDI_MESSAGE_NOTE_OFF);
481 	BIND_GLOBAL_ENUM_CONSTANT(MIDI_MESSAGE_NOTE_ON);
482 	BIND_GLOBAL_ENUM_CONSTANT(MIDI_MESSAGE_AFTERTOUCH);
483 	BIND_GLOBAL_ENUM_CONSTANT(MIDI_MESSAGE_CONTROL_CHANGE);
484 	BIND_GLOBAL_ENUM_CONSTANT(MIDI_MESSAGE_PROGRAM_CHANGE);
485 	BIND_GLOBAL_ENUM_CONSTANT(MIDI_MESSAGE_CHANNEL_PRESSURE);
486 	BIND_GLOBAL_ENUM_CONSTANT(MIDI_MESSAGE_PITCH_BEND);
487 
488 	// error list
489 
490 	BIND_GLOBAL_ENUM_CONSTANT(OK); // (0)
491 	BIND_GLOBAL_ENUM_CONSTANT(FAILED);
492 	BIND_GLOBAL_ENUM_CONSTANT(ERR_UNAVAILABLE);
493 	BIND_GLOBAL_ENUM_CONSTANT(ERR_UNCONFIGURED);
494 	BIND_GLOBAL_ENUM_CONSTANT(ERR_UNAUTHORIZED);
495 	BIND_GLOBAL_ENUM_CONSTANT(ERR_PARAMETER_RANGE_ERROR); // (5)
496 	BIND_GLOBAL_ENUM_CONSTANT(ERR_OUT_OF_MEMORY);
497 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_NOT_FOUND);
498 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_BAD_DRIVE);
499 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_BAD_PATH);
500 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_NO_PERMISSION); // (10)
501 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_ALREADY_IN_USE);
502 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_CANT_OPEN);
503 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_CANT_WRITE);
504 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_CANT_READ);
505 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_UNRECOGNIZED); // (15)
506 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_CORRUPT);
507 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_MISSING_DEPENDENCIES);
508 	BIND_GLOBAL_ENUM_CONSTANT(ERR_FILE_EOF);
509 	BIND_GLOBAL_ENUM_CONSTANT(ERR_CANT_OPEN);
510 	BIND_GLOBAL_ENUM_CONSTANT(ERR_CANT_CREATE); // (20)
511 	BIND_GLOBAL_ENUM_CONSTANT(ERR_QUERY_FAILED);
512 	BIND_GLOBAL_ENUM_CONSTANT(ERR_ALREADY_IN_USE);
513 	BIND_GLOBAL_ENUM_CONSTANT(ERR_LOCKED);
514 	BIND_GLOBAL_ENUM_CONSTANT(ERR_TIMEOUT);
515 	BIND_GLOBAL_ENUM_CONSTANT(ERR_CANT_CONNECT); // (25)
516 	BIND_GLOBAL_ENUM_CONSTANT(ERR_CANT_RESOLVE);
517 	BIND_GLOBAL_ENUM_CONSTANT(ERR_CONNECTION_ERROR);
518 	BIND_GLOBAL_ENUM_CONSTANT(ERR_CANT_ACQUIRE_RESOURCE);
519 	BIND_GLOBAL_ENUM_CONSTANT(ERR_CANT_FORK);
520 	BIND_GLOBAL_ENUM_CONSTANT(ERR_INVALID_DATA); // (30)
521 	BIND_GLOBAL_ENUM_CONSTANT(ERR_INVALID_PARAMETER);
522 	BIND_GLOBAL_ENUM_CONSTANT(ERR_ALREADY_EXISTS);
523 	BIND_GLOBAL_ENUM_CONSTANT(ERR_DOES_NOT_EXIST);
524 	BIND_GLOBAL_ENUM_CONSTANT(ERR_DATABASE_CANT_READ);
525 	BIND_GLOBAL_ENUM_CONSTANT(ERR_DATABASE_CANT_WRITE); // (35)
526 	BIND_GLOBAL_ENUM_CONSTANT(ERR_COMPILATION_FAILED);
527 	BIND_GLOBAL_ENUM_CONSTANT(ERR_METHOD_NOT_FOUND);
528 	BIND_GLOBAL_ENUM_CONSTANT(ERR_LINK_FAILED);
529 	BIND_GLOBAL_ENUM_CONSTANT(ERR_SCRIPT_FAILED);
530 	BIND_GLOBAL_ENUM_CONSTANT(ERR_CYCLIC_LINK); // (40)
531 	BIND_GLOBAL_ENUM_CONSTANT(ERR_INVALID_DECLARATION);
532 	BIND_GLOBAL_ENUM_CONSTANT(ERR_DUPLICATE_SYMBOL);
533 	BIND_GLOBAL_ENUM_CONSTANT(ERR_PARSE_ERROR);
534 	BIND_GLOBAL_ENUM_CONSTANT(ERR_BUSY);
535 	BIND_GLOBAL_ENUM_CONSTANT(ERR_SKIP); // (45)
536 	BIND_GLOBAL_ENUM_CONSTANT(ERR_HELP);
537 	BIND_GLOBAL_ENUM_CONSTANT(ERR_BUG);
538 	BIND_GLOBAL_ENUM_CONSTANT(ERR_PRINTER_ON_FIRE);
539 
540 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_NONE);
541 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_RANGE);
542 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_EXP_RANGE);
543 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_ENUM);
544 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_EXP_EASING);
545 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_LENGTH);
546 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_KEY_ACCEL);
547 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_FLAGS);
548 
549 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_LAYERS_2D_RENDER);
550 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_LAYERS_2D_PHYSICS);
551 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_LAYERS_3D_RENDER);
552 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_LAYERS_3D_PHYSICS);
553 
554 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_FILE);
555 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_DIR);
556 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_GLOBAL_FILE);
557 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_GLOBAL_DIR);
558 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_RESOURCE_TYPE);
559 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_MULTILINE_TEXT);
560 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_PLACEHOLDER_TEXT);
561 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_COLOR_NO_ALPHA);
562 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_IMAGE_COMPRESS_LOSSY);
563 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS);
564 
565 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_STORAGE);
566 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_EDITOR);
567 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_NETWORK);
568 
569 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_EDITOR_HELPER);
570 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_CHECKABLE);
571 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_CHECKED);
572 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_INTERNATIONALIZED);
573 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_GROUP);
574 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_CATEGORY);
575 	//deprecated, replaced by ClassDB function to check default value
576 	//BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_STORE_IF_NONZERO);
577 	//BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_STORE_IF_NONONE);
578 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_NO_INSTANCE_STATE);
579 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_RESTART_IF_CHANGED);
580 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_SCRIPT_VARIABLE);
581 
582 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_DEFAULT);
583 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_DEFAULT_INTL);
584 	BIND_GLOBAL_ENUM_CONSTANT(PROPERTY_USAGE_NOEDITOR);
585 
586 	BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_NORMAL);
587 	BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_EDITOR);
588 	BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_NOSCRIPT);
589 	BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_CONST);
590 	BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_REVERSE);
591 	BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_VIRTUAL);
592 	BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAG_FROM_SCRIPT);
593 	BIND_GLOBAL_ENUM_CONSTANT(METHOD_FLAGS_DEFAULT);
594 
595 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_NIL", Variant::NIL);
596 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_BOOL", Variant::BOOL);
597 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_INT", Variant::INT);
598 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_REAL", Variant::REAL);
599 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_STRING", Variant::STRING);
600 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR2", Variant::VECTOR2); // 5
601 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RECT2", Variant::RECT2);
602 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR3", Variant::VECTOR3);
603 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_TRANSFORM2D", Variant::TRANSFORM2D);
604 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_PLANE", Variant::PLANE);
605 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_QUAT", Variant::QUAT); // 10
606 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_AABB", Variant::AABB);
607 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_BASIS", Variant::BASIS);
608 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_TRANSFORM", Variant::TRANSFORM);
609 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_COLOR", Variant::COLOR);
610 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_NODE_PATH", Variant::NODE_PATH); // 15
611 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RID", Variant::_RID);
612 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_OBJECT", Variant::OBJECT);
613 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_DICTIONARY", Variant::DICTIONARY); // 20
614 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_ARRAY", Variant::ARRAY);
615 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_RAW_ARRAY", Variant::POOL_BYTE_ARRAY);
616 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_INT_ARRAY", Variant::POOL_INT_ARRAY);
617 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_REAL_ARRAY", Variant::POOL_REAL_ARRAY);
618 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_STRING_ARRAY", Variant::POOL_STRING_ARRAY);
619 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR2_ARRAY", Variant::POOL_VECTOR2_ARRAY); // 25
620 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_VECTOR3_ARRAY", Variant::POOL_VECTOR3_ARRAY);
621 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_COLOR_ARRAY", Variant::POOL_COLOR_ARRAY);
622 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("TYPE_MAX", Variant::VARIANT_MAX);
623 
624 	//comparison
625 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_EQUAL", Variant::OP_EQUAL);
626 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_NOT_EQUAL", Variant::OP_NOT_EQUAL);
627 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_LESS", Variant::OP_LESS);
628 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_LESS_EQUAL", Variant::OP_LESS_EQUAL);
629 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_GREATER", Variant::OP_GREATER);
630 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_GREATER_EQUAL", Variant::OP_GREATER_EQUAL);
631 	//mathematic
632 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_ADD", Variant::OP_ADD);
633 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_SUBTRACT", Variant::OP_SUBTRACT);
634 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_MULTIPLY", Variant::OP_MULTIPLY);
635 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_DIVIDE", Variant::OP_DIVIDE);
636 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_NEGATE", Variant::OP_NEGATE);
637 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_POSITIVE", Variant::OP_POSITIVE);
638 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_MODULE", Variant::OP_MODULE);
639 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_STRING_CONCAT", Variant::OP_STRING_CONCAT);
640 	//bitwise
641 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_SHIFT_LEFT", Variant::OP_SHIFT_LEFT);
642 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_SHIFT_RIGHT", Variant::OP_SHIFT_RIGHT);
643 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_BIT_AND", Variant::OP_BIT_AND);
644 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_BIT_OR", Variant::OP_BIT_OR);
645 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_BIT_XOR", Variant::OP_BIT_XOR);
646 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_BIT_NEGATE", Variant::OP_BIT_NEGATE);
647 	//logic
648 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_AND", Variant::OP_AND);
649 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_OR", Variant::OP_OR);
650 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_XOR", Variant::OP_XOR);
651 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_NOT", Variant::OP_NOT);
652 	//containment
653 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_IN", Variant::OP_IN);
654 	BIND_GLOBAL_ENUM_CONSTANT_CUSTOM("OP_MAX", Variant::OP_MAX);
655 }
656 
unregister_global_constants()657 void unregister_global_constants() {
658 
659 	_global_constants.clear();
660 }
661 
get_global_constant_count()662 int GlobalConstants::get_global_constant_count() {
663 
664 	return _global_constants.size();
665 }
666 
667 #ifdef DEBUG_METHODS_ENABLED
get_global_constant_enum(int p_idx)668 StringName GlobalConstants::get_global_constant_enum(int p_idx) {
669 
670 	return _global_constants[p_idx].enum_name;
671 }
672 #else
get_global_constant_enum(int p_idx)673 StringName GlobalConstants::get_global_constant_enum(int p_idx) {
674 
675 	return StringName();
676 }
677 #endif
678 
get_global_constant_name(int p_idx)679 const char *GlobalConstants::get_global_constant_name(int p_idx) {
680 
681 	return _global_constants[p_idx].name;
682 }
683 
get_global_constant_value(int p_idx)684 int GlobalConstants::get_global_constant_value(int p_idx) {
685 
686 	return _global_constants[p_idx].value;
687 }
688