Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
glslkeywords.cpp
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5
6#include "glsllexer_p.h"
7#include "glslparser_p.h"
8
9QT_BEGIN_NAMESPACE
10
11using namespace GLSL;
12
13static inline int classify2(const char *s) {
14 if (s[0] == 'd') {
15 if (s[1] == 'o') {
16 return Parser::T_DO;
17 }
18 }
19 else if (s[0] == 'i') {
20 if (s[1] == 'f') {
21 return Parser::T_IF;
22 }
23 else if (s[1] == 'n') {
24 return Parser::T_IN;
25 }
26 }
27 return Parser::T_IDENTIFIER;
28}
29
30static inline int classify3(const char *s) {
31 if (s[0] == 'f') {
32 if (s[1] == 'o') {
33 if (s[2] == 'r') {
34 return Parser::T_FOR;
35 }
36 }
37 }
38 else if (s[0] == 'i') {
39 if (s[1] == 'n') {
40 if (s[2] == 't') {
41 return Parser::T_INT;
42 }
43 }
44 }
45 else if (s[0] == 'o') {
46 if (s[1] == 'u') {
47 if (s[2] == 't') {
48 return Parser::T_OUT;
49 }
50 }
51 }
52 return Parser::T_IDENTIFIER;
53}
54
55static inline int classify4(const char *s) {
56 if (s[0] == 'b') {
57 if (s[1] == 'o') {
58 if (s[2] == 'o') {
59 if (s[3] == 'l') {
60 return Parser::T_BOOL;
61 }
62 }
63 }
64 }
65 else if (s[0] == 'c') {
66 if (s[1] == 'a') {
67 if (s[2] == 's') {
68 if (s[3] == 'e') {
69 return Parser::T_CASE | Lexer::Variant_GLSL_150;
70 }
71 }
72 }
73 }
74 else if (s[0] == 'e') {
75 if (s[1] == 'l') {
76 if (s[2] == 's') {
77 if (s[3] == 'e') {
78 return Parser::T_ELSE;
79 }
80 }
81 }
82 }
83 else if (s[0] == 'f') {
84 if (s[1] == 'l') {
85 if (s[2] == 'a') {
86 if (s[3] == 't') {
87 return Parser::T_FLAT | Lexer::Variant_GLSL_150;
88 }
89 }
90 }
91 }
92 else if (s[0] == 'l') {
93 if (s[1] == 'o') {
94 if (s[2] == 'w') {
95 if (s[3] == 'p') {
96 return Parser::T_LOWP | Lexer::Variant_GLSL_ES_100 | Lexer::Variant_GLSL_400;
97 }
98 }
99 }
100 }
101 else if (s[0] == 'm') {
102 if (s[1] == 'a') {
103 if (s[2] == 't') {
104 if (s[3] == '2') {
105 return Parser::T_MAT2;
106 }
107 else if (s[3] == '3') {
108 return Parser::T_MAT3;
109 }
110 else if (s[3] == '4') {
111 return Parser::T_MAT4;
112 }
113 }
114 }
115 }
116 else if (s[0] == 't') {
117 if (s[1] == 'r') {
118 if (s[2] == 'u') {
119 if (s[3] == 'e') {
120 return Parser::T_TRUE;
121 }
122 }
123 }
124 }
125 else if (s[0] == 'u') {
126 if (s[1] == 'i') {
127 if (s[2] == 'n') {
128 if (s[3] == 't') {
129 return Parser::T_UINT | Lexer::Variant_GLSL_150;
130 }
131 }
132 }
133 }
134 else if (s[0] == 'v') {
135 if (s[1] == 'e') {
136 if (s[2] == 'c') {
137 if (s[3] == '2') {
138 return Parser::T_VEC2;
139 }
140 else if (s[3] == '3') {
141 return Parser::T_VEC3;
142 }
143 else if (s[3] == '4') {
144 return Parser::T_VEC4;
145 }
146 }
147 }
148 else if (s[1] == 'o') {
149 if (s[2] == 'i') {
150 if (s[3] == 'd') {
151 return Parser::T_VOID;
152 }
153 }
154 }
155 }
156 return Parser::T_IDENTIFIER;
157}
158
159static inline int classify5(const char *s) {
160 if (s[0] == 'b') {
161 if (s[1] == 'r') {
162 if (s[2] == 'e') {
163 if (s[3] == 'a') {
164 if (s[4] == 'k') {
165 return Parser::T_BREAK;
166 }
167 }
168 }
169 }
170 else if (s[1] == 'v') {
171 if (s[2] == 'e') {
172 if (s[3] == 'c') {
173 if (s[4] == '2') {
174 return Parser::T_BVEC2;
175 }
176 else if (s[4] == '3') {
177 return Parser::T_BVEC3;
178 }
179 else if (s[4] == '4') {
180 return Parser::T_BVEC4;
181 }
182 }
183 }
184 }
185 }
186 else if (s[0] == 'c') {
187 if (s[1] == 'o') {
188 if (s[2] == 'n') {
189 if (s[3] == 's') {
190 if (s[4] == 't') {
191 return Parser::T_CONST;
192 }
193 }
194 }
195 }
196 }
197 else if (s[0] == 'd') {
198 if (s[1] == 'm') {
199 if (s[2] == 'a') {
200 if (s[3] == 't') {
201 if (s[4] == '2') {
202 return Parser::T_DMAT2 | Lexer::Variant_GLSL_400;
203 }
204 else if (s[4] == '3') {
205 return Parser::T_DMAT3 | Lexer::Variant_GLSL_400;
206 }
207 else if (s[4] == '4') {
208 return Parser::T_DMAT4 | Lexer::Variant_GLSL_400;
209 }
210 }
211 }
212 }
213 else if (s[1] == 'v') {
214 if (s[2] == 'e') {
215 if (s[3] == 'c') {
216 if (s[4] == '2') {
217 return Parser::T_DVEC2 | Lexer::Variant_GLSL_400;
218 }
219 else if (s[4] == '3') {
220 return Parser::T_DVEC3 | Lexer::Variant_GLSL_400;
221 }
222 else if (s[4] == '4') {
223 return Parser::T_DVEC4 | Lexer::Variant_GLSL_400;
224 }
225 }
226 }
227 }
228 }
229 else if (s[0] == 'f') {
230 if (s[1] == 'a') {
231 if (s[2] == 'l') {
232 if (s[3] == 's') {
233 if (s[4] == 'e') {
234 return Parser::T_FALSE;
235 }
236 }
237 }
238 }
239 else if (s[1] == 'l') {
240 if (s[2] == 'o') {
241 if (s[3] == 'a') {
242 if (s[4] == 't') {
243 return Parser::T_FLOAT;
244 }
245 }
246 }
247 }
248 }
249 else if (s[0] == 'h') {
250 if (s[1] == 'i') {
251 if (s[2] == 'g') {
252 if (s[3] == 'h') {
253 if (s[4] == 'p') {
254 return Parser::T_HIGHP | Lexer::Variant_GLSL_ES_100 | Lexer::Variant_GLSL_400;
255 }
256 }
257 }
258 }
259 }
260 else if (s[0] == 'i') {
261 if (s[1] == 'n') {
262 if (s[2] == 'o') {
263 if (s[3] == 'u') {
264 if (s[4] == 't') {
265 return Parser::T_INOUT;
266 }
267 }
268 }
269 }
270 else if (s[1] == 'v') {
271 if (s[2] == 'e') {
272 if (s[3] == 'c') {
273 if (s[4] == '2') {
274 return Parser::T_IVEC2;
275 }
276 else if (s[4] == '3') {
277 return Parser::T_IVEC3;
278 }
279 else if (s[4] == '4') {
280 return Parser::T_IVEC4;
281 }
282 }
283 }
284 }
285 }
286 else if (s[0] == 'p') {
287 if (s[1] == 'a') {
288 if (s[2] == 't') {
289 if (s[3] == 'c') {
290 if (s[4] == 'h') {
291 return Parser::T_PATCH | Lexer::Variant_GLSL_400;
292 }
293 }
294 }
295 }
296 }
297 else if (s[0] == 'u') {
298 if (s[1] == 'v') {
299 if (s[2] == 'e') {
300 if (s[3] == 'c') {
301 if (s[4] == '2') {
302 return Parser::T_UVEC2 | Lexer::Variant_GLSL_150;
303 }
304 else if (s[4] == '3') {
305 return Parser::T_UVEC3 | Lexer::Variant_GLSL_150;
306 }
307 else if (s[4] == '4') {
308 return Parser::T_UVEC4 | Lexer::Variant_GLSL_150;
309 }
310 }
311 }
312 }
313 }
314 else if (s[0] == 'w') {
315 if (s[1] == 'h') {
316 if (s[2] == 'i') {
317 if (s[3] == 'l') {
318 if (s[4] == 'e') {
319 return Parser::T_WHILE;
320 }
321 }
322 }
323 }
324 }
325 return Parser::T_IDENTIFIER;
326}
327
328static inline int classify6(const char *s) {
329 if (s[0] == 'd') {
330 if (s[1] == 'o') {
331 if (s[2] == 'u') {
332 if (s[3] == 'b') {
333 if (s[4] == 'l') {
334 if (s[5] == 'e') {
335 return Parser::T_DOUBLE | Lexer::Variant_GLSL_400;
336 }
337 }
338 }
339 }
340 }
341 }
342 else if (s[0] == 'l') {
343 if (s[1] == 'a') {
344 if (s[2] == 'y') {
345 if (s[3] == 'o') {
346 if (s[4] == 'u') {
347 if (s[5] == 't') {
348 return Parser::T_LAYOUT | Lexer::Variant_GLSL_150;
349 }
350 }
351 }
352 }
353 }
354 }
355 else if (s[0] == 'm') {
356 if (s[1] == 'a') {
357 if (s[2] == 't') {
358 if (s[3] == '2') {
359 if (s[4] == 'x') {
360 if (s[5] == '2') {
361 return Parser::T_MAT2X2 | Lexer::Variant_GLSL_120;
362 }
363 else if (s[5] == '3') {
364 return Parser::T_MAT2X3 | Lexer::Variant_GLSL_120;
365 }
366 else if (s[5] == '4') {
367 return Parser::T_MAT2X4 | Lexer::Variant_GLSL_120;
368 }
369 }
370 }
371 else if (s[3] == '3') {
372 if (s[4] == 'x') {
373 if (s[5] == '2') {
374 return Parser::T_MAT3X2 | Lexer::Variant_GLSL_120;
375 }
376 else if (s[5] == '3') {
377 return Parser::T_MAT3X3 | Lexer::Variant_GLSL_120;
378 }
379 else if (s[5] == '4') {
380 return Parser::T_MAT3X4 | Lexer::Variant_GLSL_120;
381 }
382 }
383 }
384 else if (s[3] == '4') {
385 if (s[4] == 'x') {
386 if (s[5] == '2') {
387 return Parser::T_MAT4X2 | Lexer::Variant_GLSL_120;
388 }
389 else if (s[5] == '3') {
390 return Parser::T_MAT4X3 | Lexer::Variant_GLSL_120;
391 }
392 else if (s[5] == '4') {
393 return Parser::T_MAT4X4 | Lexer::Variant_GLSL_120;
394 }
395 }
396 }
397 }
398 }
399 }
400 else if (s[0] == 'r') {
401 if (s[1] == 'e') {
402 if (s[2] == 't') {
403 if (s[3] == 'u') {
404 if (s[4] == 'r') {
405 if (s[5] == 'n') {
406 return Parser::T_RETURN;
407 }
408 }
409 }
410 }
411 }
412 }
413 else if (s[0] == 's') {
414 if (s[1] == 'a') {
415 if (s[2] == 'm') {
416 if (s[3] == 'p') {
417 if (s[4] == 'l') {
418 if (s[5] == 'e') {
419 return Parser::T_SAMPLE | Lexer::Variant_Reserved;
420 }
421 }
422 }
423 }
424 }
425 else if (s[1] == 'm') {
426 if (s[2] == 'o') {
427 if (s[3] == 'o') {
428 if (s[4] == 't') {
429 if (s[5] == 'h') {
430 return Parser::T_SMOOTH | Lexer::Variant_GLSL_150;
431 }
432 }
433 }
434 }
435 }
436 else if (s[1] == 't') {
437 if (s[2] == 'r') {
438 if (s[3] == 'u') {
439 if (s[4] == 'c') {
440 if (s[5] == 't') {
441 return Parser::T_STRUCT;
442 }
443 }
444 }
445 }
446 }
447 else if (s[1] == 'w') {
448 if (s[2] == 'i') {
449 if (s[3] == 't') {
450 if (s[4] == 'c') {
451 if (s[5] == 'h') {
452 return Parser::T_SWITCH | Lexer::Variant_GLSL_150;
453 }
454 }
455 }
456 }
457 }
458 }
459 return Parser::T_IDENTIFIER;
460}
461
462static inline int classify7(const char *s) {
463 if (s[0] == 'd') {
464 if (s[1] == 'e') {
465 if (s[2] == 'f') {
466 if (s[3] == 'a') {
467 if (s[4] == 'u') {
468 if (s[5] == 'l') {
469 if (s[6] == 't') {
470 return Parser::T_DEFAULT | Lexer::Variant_GLSL_150;
471 }
472 }
473 }
474 }
475 }
476 }
477 else if (s[1] == 'i') {
478 if (s[2] == 's') {
479 if (s[3] == 'c') {
480 if (s[4] == 'a') {
481 if (s[5] == 'r') {
482 if (s[6] == 'd') {
483 return Parser::T_DISCARD | Lexer::Variant_FragmentShader;
484 }
485 }
486 }
487 }
488 }
489 }
490 else if (s[1] == 'm') {
491 if (s[2] == 'a') {
492 if (s[3] == 't') {
493 if (s[4] == '2') {
494 if (s[5] == 'x') {
495 if (s[6] == '2') {
496 return Parser::T_DMAT2X2 | Lexer::Variant_GLSL_400;
497 }
498 else if (s[6] == '3') {
499 return Parser::T_DMAT2X3 | Lexer::Variant_GLSL_400;
500 }
501 else if (s[6] == '4') {
502 return Parser::T_DMAT2X4 | Lexer::Variant_GLSL_400;
503 }
504 }
505 }
506 else if (s[4] == '3') {
507 if (s[5] == 'x') {
508 if (s[6] == '2') {
509 return Parser::T_DMAT3X2 | Lexer::Variant_GLSL_400;
510 }
511 else if (s[6] == '3') {
512 return Parser::T_DMAT3X3 | Lexer::Variant_GLSL_400;
513 }
514 else if (s[6] == '4') {
515 return Parser::T_DMAT3X4 | Lexer::Variant_GLSL_400;
516 }
517 }
518 }
519 else if (s[4] == '4') {
520 if (s[5] == 'x') {
521 if (s[6] == '2') {
522 return Parser::T_DMAT4X2 | Lexer::Variant_GLSL_400;
523 }
524 else if (s[6] == '3') {
525 return Parser::T_DMAT4X3 | Lexer::Variant_GLSL_400;
526 }
527 else if (s[6] == '4') {
528 return Parser::T_DMAT4X4 | Lexer::Variant_GLSL_400;
529 }
530 }
531 }
532 }
533 }
534 }
535 }
536 else if (s[0] == 'm') {
537 if (s[1] == 'e') {
538 if (s[2] == 'd') {
539 if (s[3] == 'i') {
540 if (s[4] == 'u') {
541 if (s[5] == 'm') {
542 if (s[6] == 'p') {
543 return Parser::T_MEDIUMP | Lexer::Variant_GLSL_ES_100 | Lexer::Variant_GLSL_400;
544 }
545 }
546 }
547 }
548 }
549 }
550 }
551 else if (s[0] == 'u') {
552 if (s[1] == 'n') {
553 if (s[2] == 'i') {
554 if (s[3] == 'f') {
555 if (s[4] == 'o') {
556 if (s[5] == 'r') {
557 if (s[6] == 'm') {
558 return Parser::T_UNIFORM;
559 }
560 }
561 }
562 }
563 }
564 }
565 }
566 else if (s[0] == 'v') {
567 if (s[1] == 'a') {
568 if (s[2] == 'r') {
569 if (s[3] == 'y') {
570 if (s[4] == 'i') {
571 if (s[5] == 'n') {
572 if (s[6] == 'g') {
573 return Parser::T_VARYING;
574 }
575 }
576 }
577 }
578 }
579 }
580 }
581 return Parser::T_IDENTIFIER;
582}
583
584static inline int classify8(const char *s) {
585 if (s[0] == 'c') {
586 if (s[1] == 'e') {
587 if (s[2] == 'n') {
588 if (s[3] == 't') {
589 if (s[4] == 'r') {
590 if (s[5] == 'o') {
591 if (s[6] == 'i') {
592 if (s[7] == 'd') {
593 return Parser::T_CENTROID | Lexer::Variant_GLSL_120;
594 }
595 }
596 }
597 }
598 }
599 }
600 }
601 else if (s[1] == 'o') {
602 if (s[2] == 'n') {
603 if (s[3] == 't') {
604 if (s[4] == 'i') {
605 if (s[5] == 'n') {
606 if (s[6] == 'u') {
607 if (s[7] == 'e') {
608 return Parser::T_CONTINUE;
609 }
610 }
611 }
612 }
613 }
614 }
615 }
616 }
617 return Parser::T_IDENTIFIER;
618}
619
620static inline int classify9(const char *s) {
621 if (s[0] == 'a') {
622 if (s[1] == 't') {
623 if (s[2] == 't') {
624 if (s[3] == 'r') {
625 if (s[4] == 'i') {
626 if (s[5] == 'b') {
627 if (s[6] == 'u') {
628 if (s[7] == 't') {
629 if (s[8] == 'e') {
630 return Parser::T_ATTRIBUTE | Lexer::Variant_VertexShader;
631 }
632 }
633 }
634 }
635 }
636 }
637 }
638 }
639 }
640 else if (s[0] == 'i') {
641 if (s[1] == 'n') {
642 if (s[2] == 'v') {
643 if (s[3] == 'a') {
644 if (s[4] == 'r') {
645 if (s[5] == 'i') {
646 if (s[6] == 'a') {
647 if (s[7] == 'n') {
648 if (s[8] == 't') {
649 return Parser::T_INVARIANT;
650 }
651 }
652 }
653 }
654 }
655 }
656 }
657 }
658 }
659 else if (s[0] == 'p') {
660 if (s[1] == 'r') {
661 if (s[2] == 'e') {
662 if (s[3] == 'c') {
663 if (s[4] == 'i') {
664 if (s[5] == 's') {
665 if (s[6] == 'i') {
666 if (s[7] == 'o') {
667 if (s[8] == 'n') {
668 return Parser::T_PRECISION | Lexer::Variant_GLSL_ES_100;
669 }
670 }
671 }
672 }
673 }
674 }
675 }
676 }
677 }
678 else if (s[0] == 's') {
679 if (s[1] == 'a') {
680 if (s[2] == 'm') {
681 if (s[3] == 'p') {
682 if (s[4] == 'l') {
683 if (s[5] == 'e') {
684 if (s[6] == 'r') {
685 if (s[7] == '1') {
686 if (s[8] == 'D') {
687 return Parser::T_SAMPLER1D | Lexer::Variant_GLSL_120;
688 }
689 }
690 else if (s[7] == '2') {
691 if (s[8] == 'D') {
692 return Parser::T_SAMPLER2D;
693 }
694 }
695 else if (s[7] == '3') {
696 if (s[8] == 'D') {
697 return Parser::T_SAMPLER3D | Lexer::Variant_GLSL_120;
698 }
699 }
700 }
701 }
702 }
703 }
704 }
705 }
706 }
707 return Parser::T_IDENTIFIER;
708}
709
710static inline int classify10(const char *s) {
711 if (s[0] == 'i') {
712 if (s[1] == 's') {
713 if (s[2] == 'a') {
714 if (s[3] == 'm') {
715 if (s[4] == 'p') {
716 if (s[5] == 'l') {
717 if (s[6] == 'e') {
718 if (s[7] == 'r') {
719 if (s[8] == '1') {
720 if (s[9] == 'D') {
721 return Parser::T_ISAMPLER1D | Lexer::Variant_GLSL_150;
722 }
723 }
724 else if (s[8] == '2') {
725 if (s[9] == 'D') {
726 return Parser::T_ISAMPLER2D | Lexer::Variant_GLSL_150;
727 }
728 }
729 else if (s[8] == '3') {
730 if (s[9] == 'D') {
731 return Parser::T_ISAMPLER3D | Lexer::Variant_GLSL_150;
732 }
733 }
734 }
735 }
736 }
737 }
738 }
739 }
740 }
741 }
742 else if (s[0] == 's') {
743 if (s[1] == 'u') {
744 if (s[2] == 'b') {
745 if (s[3] == 'r') {
746 if (s[4] == 'o') {
747 if (s[5] == 'u') {
748 if (s[6] == 't') {
749 if (s[7] == 'i') {
750 if (s[8] == 'n') {
751 if (s[9] == 'e') {
752 return Parser::T_SUBROUTINE | Lexer::Variant_GLSL_400;
753 }
754 }
755 }
756 }
757 }
758 }
759 }
760 }
761 }
762 }
763 else if (s[0] == 'u') {
764 if (s[1] == 's') {
765 if (s[2] == 'a') {
766 if (s[3] == 'm') {
767 if (s[4] == 'p') {
768 if (s[5] == 'l') {
769 if (s[6] == 'e') {
770 if (s[7] == 'r') {
771 if (s[8] == '1') {
772 if (s[9] == 'D') {
773 return Parser::T_USAMPLER1D | Lexer::Variant_GLSL_150;
774 }
775 }
776 else if (s[8] == '2') {
777 if (s[9] == 'D') {
778 return Parser::T_USAMPLER2D | Lexer::Variant_GLSL_150;
779 }
780 }
781 else if (s[8] == '3') {
782 if (s[9] == 'D') {
783 return Parser::T_USAMPLER3D | Lexer::Variant_GLSL_150;
784 }
785 }
786 }
787 }
788 }
789 }
790 }
791 }
792 }
793 }
794 return Parser::T_IDENTIFIER;
795}
796
797static inline int classify11(const char *s) {
798 if (s[0] == 's') {
799 if (s[1] == 'a') {
800 if (s[2] == 'm') {
801 if (s[3] == 'p') {
802 if (s[4] == 'l') {
803 if (s[5] == 'e') {
804 if (s[6] == 'r') {
805 if (s[7] == '2') {
806 if (s[8] == 'D') {
807 if (s[9] == 'M') {
808 if (s[10] == 'S') {
809 return Parser::T_SAMPLER2DMS | Lexer::Variant_GLSL_150;
810 }
811 }
812 }
813 }
814 else if (s[7] == 'C') {
815 if (s[8] == 'u') {
816 if (s[9] == 'b') {
817 if (s[10] == 'e') {
818 return Parser::T_SAMPLERCUBE;
819 }
820 }
821 }
822 }
823 }
824 }
825 }
826 }
827 }
828 }
829 }
830 return Parser::T_IDENTIFIER;
831}
832
833static inline int classify12(const char *s) {
834 if (s[0] == 'i') {
835 if (s[1] == 's') {
836 if (s[2] == 'a') {
837 if (s[3] == 'm') {
838 if (s[4] == 'p') {
839 if (s[5] == 'l') {
840 if (s[6] == 'e') {
841 if (s[7] == 'r') {
842 if (s[8] == '2') {
843 if (s[9] == 'D') {
844 if (s[10] == 'M') {
845 if (s[11] == 'S') {
846 return Parser::T_ISAMPLER2DMS | Lexer::Variant_GLSL_150;
847 }
848 }
849 }
850 }
851 else if (s[8] == 'C') {
852 if (s[9] == 'u') {
853 if (s[10] == 'b') {
854 if (s[11] == 'e') {
855 return Parser::T_ISAMPLERCUBE | Lexer::Variant_GLSL_150;
856 }
857 }
858 }
859 }
860 }
861 }
862 }
863 }
864 }
865 }
866 }
867 }
868 else if (s[0] == 'u') {
869 if (s[1] == 's') {
870 if (s[2] == 'a') {
871 if (s[3] == 'm') {
872 if (s[4] == 'p') {
873 if (s[5] == 'l') {
874 if (s[6] == 'e') {
875 if (s[7] == 'r') {
876 if (s[8] == '2') {
877 if (s[9] == 'D') {
878 if (s[10] == 'M') {
879 if (s[11] == 'S') {
880 return Parser::T_USAMPLER2DMS | Lexer::Variant_GLSL_150;
881 }
882 }
883 }
884 }
885 else if (s[8] == 'C') {
886 if (s[9] == 'u') {
887 if (s[10] == 'b') {
888 if (s[11] == 'e') {
889 return Parser::T_USAMPLERCUBE | Lexer::Variant_GLSL_150;
890 }
891 }
892 }
893 }
894 }
895 }
896 }
897 }
898 }
899 }
900 }
901 }
902 return Parser::T_IDENTIFIER;
903}
904
905static inline int classify13(const char *s) {
906 if (s[0] == 'n') {
907 if (s[1] == 'o') {
908 if (s[2] == 'p') {
909 if (s[3] == 'e') {
910 if (s[4] == 'r') {
911 if (s[5] == 's') {
912 if (s[6] == 'p') {
913 if (s[7] == 'e') {
914 if (s[8] == 'c') {
915 if (s[9] == 't') {
916 if (s[10] == 'i') {
917 if (s[11] == 'v') {
918 if (s[12] == 'e') {
919 return Parser::T_NOPERSPECTIVE | Lexer::Variant_GLSL_150;
920 }
921 }
922 }
923 }
924 }
925 }
926 }
927 }
928 }
929 }
930 }
931 }
932 }
933 else if (s[0] == 's') {
934 if (s[1] == 'a') {
935 if (s[2] == 'm') {
936 if (s[3] == 'p') {
937 if (s[4] == 'l') {
938 if (s[5] == 'e') {
939 if (s[6] == 'r') {
940 if (s[7] == '2') {
941 if (s[8] == 'D') {
942 if (s[9] == 'R') {
943 if (s[10] == 'e') {
944 if (s[11] == 'c') {
945 if (s[12] == 't') {
946 return Parser::T_SAMPLER2DRECT;
947 }
948 }
949 }
950 }
951 }
952 }
953 else if (s[7] == 'B') {
954 if (s[8] == 'u') {
955 if (s[9] == 'f') {
956 if (s[10] == 'f') {
957 if (s[11] == 'e') {
958 if (s[12] == 'r') {
959 return Parser::T_SAMPLERBUFFER | Lexer::Variant_GLSL_150;
960 }
961 }
962 }
963 }
964 }
965 }
966 }
967 }
968 }
969 }
970 }
971 }
972 }
973 return Parser::T_IDENTIFIER;
974}
975
976static inline int classify14(const char *s) {
977 if (s[0] == 'i') {
978 if (s[1] == 's') {
979 if (s[2] == 'a') {
980 if (s[3] == 'm') {
981 if (s[4] == 'p') {
982 if (s[5] == 'l') {
983 if (s[6] == 'e') {
984 if (s[7] == 'r') {
985 if (s[8] == '2') {
986 if (s[9] == 'D') {
987 if (s[10] == 'R') {
988 if (s[11] == 'e') {
989 if (s[12] == 'c') {
990 if (s[13] == 't') {
991 return Parser::T_ISAMPLER2DRECT | Lexer::Variant_GLSL_150;
992 }
993 }
994 }
995 }
996 }
997 }
998 else if (s[8] == 'B') {
999 if (s[9] == 'u') {
1000 if (s[10] == 'f') {
1001 if (s[11] == 'f') {
1002 if (s[12] == 'e') {
1003 if (s[13] == 'r') {
1004 return Parser::T_ISAMPLERBUFFER | Lexer::Variant_GLSL_150;
1005 }
1006 }
1007 }
1008 }
1009 }
1010 }
1011 }
1012 }
1013 }
1014 }
1015 }
1016 }
1017 }
1018 }
1019 else if (s[0] == 's') {
1020 if (s[1] == 'a') {
1021 if (s[2] == 'm') {
1022 if (s[3] == 'p') {
1023 if (s[4] == 'l') {
1024 if (s[5] == 'e') {
1025 if (s[6] == 'r') {
1026 if (s[7] == '1') {
1027 if (s[8] == 'D') {
1028 if (s[9] == 'A') {
1029 if (s[10] == 'r') {
1030 if (s[11] == 'r') {
1031 if (s[12] == 'a') {
1032 if (s[13] == 'y') {
1033 return Parser::T_SAMPLER1DARRAY | Lexer::Variant_GLSL_150;
1034 }
1035 }
1036 }
1037 }
1038 }
1039 }
1040 }
1041 else if (s[7] == '2') {
1042 if (s[8] == 'D') {
1043 if (s[9] == 'A') {
1044 if (s[10] == 'r') {
1045 if (s[11] == 'r') {
1046 if (s[12] == 'a') {
1047 if (s[13] == 'y') {
1048 return Parser::T_SAMPLER2DARRAY | Lexer::Variant_GLSL_150;
1049 }
1050 }
1051 }
1052 }
1053 }
1054 }
1055 }
1056 }
1057 }
1058 }
1059 }
1060 }
1061 }
1062 }
1063 else if (s[0] == 'u') {
1064 if (s[1] == 's') {
1065 if (s[2] == 'a') {
1066 if (s[3] == 'm') {
1067 if (s[4] == 'p') {
1068 if (s[5] == 'l') {
1069 if (s[6] == 'e') {
1070 if (s[7] == 'r') {
1071 if (s[8] == '2') {
1072 if (s[9] == 'D') {
1073 if (s[10] == 'R') {
1074 if (s[11] == 'e') {
1075 if (s[12] == 'c') {
1076 if (s[13] == 't') {
1077 return Parser::T_USAMPLER2DRECT | Lexer::Variant_GLSL_150;
1078 }
1079 }
1080 }
1081 }
1082 }
1083 }
1084 else if (s[8] == 'B') {
1085 if (s[9] == 'u') {
1086 if (s[10] == 'f') {
1087 if (s[11] == 'f') {
1088 if (s[12] == 'e') {
1089 if (s[13] == 'r') {
1090 return Parser::T_USAMPLERBUFFER | Lexer::Variant_GLSL_150;
1091 }
1092 }
1093 }
1094 }
1095 }
1096 }
1097 }
1098 }
1099 }
1100 }
1101 }
1102 }
1103 }
1104 }
1105 return Parser::T_IDENTIFIER;
1106}
1107
1108static inline int classify15(const char *s) {
1109 if (s[0] == 'i') {
1110 if (s[1] == 's') {
1111 if (s[2] == 'a') {
1112 if (s[3] == 'm') {
1113 if (s[4] == 'p') {
1114 if (s[5] == 'l') {
1115 if (s[6] == 'e') {
1116 if (s[7] == 'r') {
1117 if (s[8] == '1') {
1118 if (s[9] == 'D') {
1119 if (s[10] == 'A') {
1120 if (s[11] == 'r') {
1121 if (s[12] == 'r') {
1122 if (s[13] == 'a') {
1123 if (s[14] == 'y') {
1124 return Parser::T_ISAMPLER1DARRAY | Lexer::Variant_GLSL_150;
1125 }
1126 }
1127 }
1128 }
1129 }
1130 }
1131 }
1132 else if (s[8] == '2') {
1133 if (s[9] == 'D') {
1134 if (s[10] == 'A') {
1135 if (s[11] == 'r') {
1136 if (s[12] == 'r') {
1137 if (s[13] == 'a') {
1138 if (s[14] == 'y') {
1139 return Parser::T_ISAMPLER2DARRAY | Lexer::Variant_GLSL_150;
1140 }
1141 }
1142 }
1143 }
1144 }
1145 }
1146 }
1147 }
1148 }
1149 }
1150 }
1151 }
1152 }
1153 }
1154 }
1155 else if (s[0] == 's') {
1156 if (s[1] == 'a') {
1157 if (s[2] == 'm') {
1158 if (s[3] == 'p') {
1159 if (s[4] == 'l') {
1160 if (s[5] == 'e') {
1161 if (s[6] == 'r') {
1162 if (s[7] == '1') {
1163 if (s[8] == 'D') {
1164 if (s[9] == 'S') {
1165 if (s[10] == 'h') {
1166 if (s[11] == 'a') {
1167 if (s[12] == 'd') {
1168 if (s[13] == 'o') {
1169 if (s[14] == 'w') {
1170 return Parser::T_SAMPLER1DSHADOW | Lexer::Variant_GLSL_120;
1171 }
1172 }
1173 }
1174 }
1175 }
1176 }
1177 }
1178 }
1179 else if (s[7] == '2') {
1180 if (s[8] == 'D') {
1181 if (s[9] == 'S') {
1182 if (s[10] == 'h') {
1183 if (s[11] == 'a') {
1184 if (s[12] == 'd') {
1185 if (s[13] == 'o') {
1186 if (s[14] == 'w') {
1187 return Parser::T_SAMPLER2DSHADOW | Lexer::Variant_GLSL_120;
1188 }
1189 }
1190 }
1191 }
1192 }
1193 }
1194 }
1195 }
1196 }
1197 }
1198 }
1199 }
1200 }
1201 }
1202 }
1203 else if (s[0] == 'u') {
1204 if (s[1] == 's') {
1205 if (s[2] == 'a') {
1206 if (s[3] == 'm') {
1207 if (s[4] == 'p') {
1208 if (s[5] == 'l') {
1209 if (s[6] == 'e') {
1210 if (s[7] == 'r') {
1211 if (s[8] == '1') {
1212 if (s[9] == 'D') {
1213 if (s[10] == 'A') {
1214 if (s[11] == 'r') {
1215 if (s[12] == 'r') {
1216 if (s[13] == 'a') {
1217 if (s[14] == 'y') {
1218 return Parser::T_USAMPLER1DARRAY | Lexer::Variant_GLSL_150;
1219 }
1220 }
1221 }
1222 }
1223 }
1224 }
1225 }
1226 else if (s[8] == '2') {
1227 if (s[9] == 'D') {
1228 if (s[10] == 'A') {
1229 if (s[11] == 'r') {
1230 if (s[12] == 'r') {
1231 if (s[13] == 'a') {
1232 if (s[14] == 'y') {
1233 return Parser::T_USAMPLER2DARRAY | Lexer::Variant_GLSL_150;
1234 }
1235 }
1236 }
1237 }
1238 }
1239 }
1240 }
1241 }
1242 }
1243 }
1244 }
1245 }
1246 }
1247 }
1248 }
1249 return Parser::T_IDENTIFIER;
1250}
1251
1252static inline int classify16(const char *s) {
1253 if (s[0] == 's') {
1254 if (s[1] == 'a') {
1255 if (s[2] == 'm') {
1256 if (s[3] == 'p') {
1257 if (s[4] == 'l') {
1258 if (s[5] == 'e') {
1259 if (s[6] == 'r') {
1260 if (s[7] == '2') {
1261 if (s[8] == 'D') {
1262 if (s[9] == 'M') {
1263 if (s[10] == 'S') {
1264 if (s[11] == 'A') {
1265 if (s[12] == 'r') {
1266 if (s[13] == 'r') {
1267 if (s[14] == 'a') {
1268 if (s[15] == 'y') {
1269 return Parser::T_SAMPLER2DMSARRAY | Lexer::Variant_GLSL_150;
1270 }
1271 }
1272 }
1273 }
1274 }
1275 }
1276 }
1277 }
1278 }
1279 else if (s[7] == 'C') {
1280 if (s[8] == 'u') {
1281 if (s[9] == 'b') {
1282 if (s[10] == 'e') {
1283 if (s[11] == 'A') {
1284 if (s[12] == 'r') {
1285 if (s[13] == 'r') {
1286 if (s[14] == 'a') {
1287 if (s[15] == 'y') {
1288 return Parser::T_SAMPLERCUBEARRAY | Lexer::Variant_GLSL_400;
1289 }
1290 }
1291 }
1292 }
1293 }
1294 }
1295 }
1296 }
1297 }
1298 }
1299 }
1300 }
1301 }
1302 }
1303 }
1304 }
1305 return Parser::T_IDENTIFIER;
1306}
1307
1308static inline int classify17(const char *s) {
1309 if (s[0] == 'i') {
1310 if (s[1] == 's') {
1311 if (s[2] == 'a') {
1312 if (s[3] == 'm') {
1313 if (s[4] == 'p') {
1314 if (s[5] == 'l') {
1315 if (s[6] == 'e') {
1316 if (s[7] == 'r') {
1317 if (s[8] == '2') {
1318 if (s[9] == 'D') {
1319 if (s[10] == 'M') {
1320 if (s[11] == 'S') {
1321 if (s[12] == 'A') {
1322 if (s[13] == 'r') {
1323 if (s[14] == 'r') {
1324 if (s[15] == 'a') {
1325 if (s[16] == 'y') {
1326 return Parser::T_ISAMPLER2DMSARRAY | Lexer::Variant_GLSL_150;
1327 }
1328 }
1329 }
1330 }
1331 }
1332 }
1333 }
1334 }
1335 }
1336 else if (s[8] == 'C') {
1337 if (s[9] == 'u') {
1338 if (s[10] == 'b') {
1339 if (s[11] == 'e') {
1340 if (s[12] == 'A') {
1341 if (s[13] == 'r') {
1342 if (s[14] == 'r') {
1343 if (s[15] == 'a') {
1344 if (s[16] == 'y') {
1345 return Parser::T_ISAMPLERCUBEARRAY | Lexer::Variant_GLSL_400;
1346 }
1347 }
1348 }
1349 }
1350 }
1351 }
1352 }
1353 }
1354 }
1355 }
1356 }
1357 }
1358 }
1359 }
1360 }
1361 }
1362 }
1363 else if (s[0] == 's') {
1364 if (s[1] == 'a') {
1365 if (s[2] == 'm') {
1366 if (s[3] == 'p') {
1367 if (s[4] == 'l') {
1368 if (s[5] == 'e') {
1369 if (s[6] == 'r') {
1370 if (s[7] == 'C') {
1371 if (s[8] == 'u') {
1372 if (s[9] == 'b') {
1373 if (s[10] == 'e') {
1374 if (s[11] == 'S') {
1375 if (s[12] == 'h') {
1376 if (s[13] == 'a') {
1377 if (s[14] == 'd') {
1378 if (s[15] == 'o') {
1379 if (s[16] == 'w') {
1380 return Parser::T_SAMPLERCUBESHADOW | Lexer::Variant_GLSL_400;
1381 }
1382 }
1383 }
1384 }
1385 }
1386 }
1387 }
1388 }
1389 }
1390 }
1391 }
1392 }
1393 }
1394 }
1395 }
1396 }
1397 }
1398 else if (s[0] == 'u') {
1399 if (s[1] == 's') {
1400 if (s[2] == 'a') {
1401 if (s[3] == 'm') {
1402 if (s[4] == 'p') {
1403 if (s[5] == 'l') {
1404 if (s[6] == 'e') {
1405 if (s[7] == 'r') {
1406 if (s[8] == '2') {
1407 if (s[9] == 'D') {
1408 if (s[10] == 'M') {
1409 if (s[11] == 'S') {
1410 if (s[12] == 'a') {
1411 if (s[13] == 'r') {
1412 if (s[14] == 'r') {
1413 if (s[15] == 'a') {
1414 if (s[16] == 'y') {
1415 return Parser::T_USAMPLER2DMSARRAY | Lexer::Variant_GLSL_150;
1416 }
1417 }
1418 }
1419 }
1420 }
1421 }
1422 }
1423 }
1424 }
1425 else if (s[8] == 'C') {
1426 if (s[9] == 'u') {
1427 if (s[10] == 'b') {
1428 if (s[11] == 'e') {
1429 if (s[12] == 'A') {
1430 if (s[13] == 'r') {
1431 if (s[14] == 'r') {
1432 if (s[15] == 'a') {
1433 if (s[16] == 'y') {
1434 return Parser::T_USAMPLERCUBEARRAY | Lexer::Variant_GLSL_400;
1435 }
1436 }
1437 }
1438 }
1439 }
1440 }
1441 }
1442 }
1443 }
1444 }
1445 }
1446 }
1447 }
1448 }
1449 }
1450 }
1451 }
1452 return Parser::T_IDENTIFIER;
1453}
1454
1455static inline int classify19(const char *s) {
1456 if (s[0] == 's') {
1457 if (s[1] == 'a') {
1458 if (s[2] == 'm') {
1459 if (s[3] == 'p') {
1460 if (s[4] == 'l') {
1461 if (s[5] == 'e') {
1462 if (s[6] == 'r') {
1463 if (s[7] == '2') {
1464 if (s[8] == 'D') {
1465 if (s[9] == 'R') {
1466 if (s[10] == 'e') {
1467 if (s[11] == 'c') {
1468 if (s[12] == 't') {
1469 if (s[13] == 'S') {
1470 if (s[14] == 'h') {
1471 if (s[15] == 'a') {
1472 if (s[16] == 'd') {
1473 if (s[17] == 'o') {
1474 if (s[18] == 'w') {
1475 return Parser::T_SAMPLER2DRECTSHADOW;
1476 }
1477 }
1478 }
1479 }
1480 }
1481 }
1482 }
1483 }
1484 }
1485 }
1486 }
1487 }
1488 }
1489 }
1490 }
1491 }
1492 }
1493 }
1494 }
1495 return Parser::T_IDENTIFIER;
1496}
1497
1498static inline int classify20(const char *s) {
1499 if (s[0] == 's') {
1500 if (s[1] == 'a') {
1501 if (s[2] == 'm') {
1502 if (s[3] == 'p') {
1503 if (s[4] == 'l') {
1504 if (s[5] == 'e') {
1505 if (s[6] == 'r') {
1506 if (s[7] == '1') {
1507 if (s[8] == 'D') {
1508 if (s[9] == 'A') {
1509 if (s[10] == 'r') {
1510 if (s[11] == 'r') {
1511 if (s[12] == 'a') {
1512 if (s[13] == 'y') {
1513 if (s[14] == 'S') {
1514 if (s[15] == 'h') {
1515 if (s[16] == 'a') {
1516 if (s[17] == 'd') {
1517 if (s[18] == 'o') {
1518 if (s[19] == 'w') {
1519 return Parser::T_SAMPLER1DARRAYSHADOW | Lexer::Variant_GLSL_150;
1520 }
1521 }
1522 }
1523 }
1524 }
1525 }
1526 }
1527 }
1528 }
1529 }
1530 }
1531 }
1532 }
1533 else if (s[7] == '2') {
1534 if (s[8] == 'D') {
1535 if (s[9] == 'A') {
1536 if (s[10] == 'r') {
1537 if (s[11] == 'r') {
1538 if (s[12] == 'a') {
1539 if (s[13] == 'y') {
1540 if (s[14] == 'S') {
1541 if (s[15] == 'h') {
1542 if (s[16] == 'a') {
1543 if (s[17] == 'd') {
1544 if (s[18] == 'o') {
1545 if (s[19] == 'w') {
1546 return Parser::T_SAMPLER2DARRAYSHADOW | Lexer::Variant_GLSL_150;
1547 }
1548 }
1549 }
1550 }
1551 }
1552 }
1553 }
1554 }
1555 }
1556 }
1557 }
1558 }
1559 }
1560 }
1561 }
1562 }
1563 }
1564 }
1565 }
1566 }
1567 return Parser::T_IDENTIFIER;
1568}
1569
1570static inline int classify22(const char *s) {
1571 if (s[0] == 's') {
1572 if (s[1] == 'a') {
1573 if (s[2] == 'm') {
1574 if (s[3] == 'p') {
1575 if (s[4] == 'l') {
1576 if (s[5] == 'e') {
1577 if (s[6] == 'r') {
1578 if (s[7] == 'C') {
1579 if (s[8] == 'u') {
1580 if (s[9] == 'b') {
1581 if (s[10] == 'e') {
1582 if (s[11] == 'A') {
1583 if (s[12] == 'r') {
1584 if (s[13] == 'r') {
1585 if (s[14] == 'a') {
1586 if (s[15] == 'y') {
1587 if (s[16] == 'S') {
1588 if (s[17] == 'h') {
1589 if (s[18] == 'a') {
1590 if (s[19] == 'd') {
1591 if (s[20] == 'o') {
1592 if (s[21] == 'w') {
1593 return Parser::T_SAMPLERCUBEARRAYSHADOW | Lexer::Variant_GLSL_400;
1594 }
1595 }
1596 }
1597 }
1598 }
1599 }
1600 }
1601 }
1602 }
1603 }
1604 }
1605 }
1606 }
1607 }
1608 }
1609 }
1610 }
1611 }
1612 }
1613 }
1614 }
1615 }
1616 return Parser::T_IDENTIFIER;
1617}
1618
1619int Lexer::classify(const char *s, int n) {
1620 switch (n) {
1621 case 2: return classify2(s);
1622 case 3: return classify3(s);
1623 case 4: return classify4(s);
1624 case 5: return classify5(s);
1625 case 6: return classify6(s);
1626 case 7: return classify7(s);
1627 case 8: return classify8(s);
1628 case 9: return classify9(s);
1629 case 10: return classify10(s);
1630 case 11: return classify11(s);
1631 case 12: return classify12(s);
1632 case 13: return classify13(s);
1633 case 14: return classify14(s);
1634 case 15: return classify15(s);
1635 case 16: return classify16(s);
1636 case 17: return classify17(s);
1637 case 19: return classify19(s);
1638 case 20: return classify20(s);
1639 case 22: return classify22(s);
1640 default: return Parser::T_IDENTIFIER;
1641 } // switch
1642}
1643
1644QStringList Lexer::keywords(int variant) {
1645 QStringList list;
1646 list += QLatin1String("do");
1647 list += QLatin1String("if");
1648 list += QLatin1String("in");
1649 list += QLatin1String("for");
1650 list += QLatin1String("int");
1651 list += QLatin1String("out");
1652 list += QLatin1String("bool");
1653 if (variant & (Lexer::Variant_GLSL_150))
1654 list += QLatin1String("case");
1655 list += QLatin1String("else");
1656 if (variant & (Lexer::Variant_GLSL_150))
1657 list += QLatin1String("flat");
1658 if (variant & (Lexer::Variant_GLSL_ES_100 | Lexer::Variant_GLSL_400))
1659 list += QLatin1String("lowp");
1660 list += QLatin1String("mat2");
1661 list += QLatin1String("mat3");
1662 list += QLatin1String("mat4");
1663 if (variant & (Lexer::Variant_GLSL_150))
1664 list += QLatin1String("uint");
1665 list += QLatin1String("vec2");
1666 list += QLatin1String("vec3");
1667 list += QLatin1String("vec4");
1668 list += QLatin1String("void");
1669 list += QLatin1String("true");
1670 list += QLatin1String("break");
1671 list += QLatin1String("bvec2");
1672 list += QLatin1String("bvec3");
1673 list += QLatin1String("bvec4");
1674 list += QLatin1String("const");
1675 if (variant & (Lexer::Variant_GLSL_400))
1676 list += QLatin1String("dmat2");
1677 if (variant & (Lexer::Variant_GLSL_400))
1678 list += QLatin1String("dmat3");
1679 if (variant & (Lexer::Variant_GLSL_400))
1680 list += QLatin1String("dmat4");
1681 if (variant & (Lexer::Variant_GLSL_400))
1682 list += QLatin1String("dvec2");
1683 if (variant & (Lexer::Variant_GLSL_400))
1684 list += QLatin1String("dvec3");
1685 if (variant & (Lexer::Variant_GLSL_400))
1686 list += QLatin1String("dvec4");
1687 list += QLatin1String("float");
1688 if (variant & (Lexer::Variant_GLSL_ES_100 | Lexer::Variant_GLSL_400))
1689 list += QLatin1String("highp");
1690 list += QLatin1String("inout");
1691 list += QLatin1String("ivec2");
1692 list += QLatin1String("ivec3");
1693 list += QLatin1String("ivec4");
1694 if (variant & (Lexer::Variant_GLSL_400))
1695 list += QLatin1String("patch");
1696 if (variant & (Lexer::Variant_GLSL_150))
1697 list += QLatin1String("uvec2");
1698 if (variant & (Lexer::Variant_GLSL_150))
1699 list += QLatin1String("uvec3");
1700 if (variant & (Lexer::Variant_GLSL_150))
1701 list += QLatin1String("uvec4");
1702 list += QLatin1String("while");
1703 list += QLatin1String("false");
1704 if (variant & (Lexer::Variant_GLSL_400))
1705 list += QLatin1String("double");
1706 if (variant & (Lexer::Variant_GLSL_150))
1707 list += QLatin1String("layout");
1708 if (variant & (Lexer::Variant_GLSL_120))
1709 list += QLatin1String("mat2x2");
1710 if (variant & (Lexer::Variant_GLSL_120))
1711 list += QLatin1String("mat2x3");
1712 if (variant & (Lexer::Variant_GLSL_120))
1713 list += QLatin1String("mat2x4");
1714 if (variant & (Lexer::Variant_GLSL_120))
1715 list += QLatin1String("mat3x2");
1716 if (variant & (Lexer::Variant_GLSL_120))
1717 list += QLatin1String("mat3x3");
1718 if (variant & (Lexer::Variant_GLSL_120))
1719 list += QLatin1String("mat3x4");
1720 if (variant & (Lexer::Variant_GLSL_120))
1721 list += QLatin1String("mat4x2");
1722 if (variant & (Lexer::Variant_GLSL_120))
1723 list += QLatin1String("mat4x3");
1724 if (variant & (Lexer::Variant_GLSL_120))
1725 list += QLatin1String("mat4x4");
1726 list += QLatin1String("return");
1727 if (variant & (Lexer::Variant_Reserved))
1728 list += QLatin1String("sample");
1729 if (variant & (Lexer::Variant_GLSL_150))
1730 list += QLatin1String("smooth");
1731 list += QLatin1String("struct");
1732 if (variant & (Lexer::Variant_GLSL_150))
1733 list += QLatin1String("switch");
1734 if (variant & (Lexer::Variant_GLSL_150))
1735 list += QLatin1String("default");
1736 if (variant & (Lexer::Variant_FragmentShader))
1737 list += QLatin1String("discard");
1738 if (variant & (Lexer::Variant_GLSL_400))
1739 list += QLatin1String("dmat2x2");
1740 if (variant & (Lexer::Variant_GLSL_400))
1741 list += QLatin1String("dmat2x3");
1742 if (variant & (Lexer::Variant_GLSL_400))
1743 list += QLatin1String("dmat2x4");
1744 if (variant & (Lexer::Variant_GLSL_400))
1745 list += QLatin1String("dmat3x2");
1746 if (variant & (Lexer::Variant_GLSL_400))
1747 list += QLatin1String("dmat3x3");
1748 if (variant & (Lexer::Variant_GLSL_400))
1749 list += QLatin1String("dmat3x4");
1750 if (variant & (Lexer::Variant_GLSL_400))
1751 list += QLatin1String("dmat4x2");
1752 if (variant & (Lexer::Variant_GLSL_400))
1753 list += QLatin1String("dmat4x3");
1754 if (variant & (Lexer::Variant_GLSL_400))
1755 list += QLatin1String("dmat4x4");
1756 if (variant & (Lexer::Variant_GLSL_ES_100 | Lexer::Variant_GLSL_400))
1757 list += QLatin1String("mediump");
1758 list += QLatin1String("uniform");
1759 list += QLatin1String("varying");
1760 if (variant & (Lexer::Variant_GLSL_120))
1761 list += QLatin1String("centroid");
1762 list += QLatin1String("continue");
1763 if (variant & (Lexer::Variant_VertexShader))
1764 list += QLatin1String("attribute");
1765 list += QLatin1String("invariant");
1766 if (variant & (Lexer::Variant_GLSL_ES_100))
1767 list += QLatin1String("precision");
1768 if (variant & (Lexer::Variant_GLSL_120))
1769 list += QLatin1String("sampler1D");
1770 list += QLatin1String("sampler2D");
1771 if (variant & (Lexer::Variant_GLSL_120))
1772 list += QLatin1String("sampler3D");
1773 if (variant & (Lexer::Variant_GLSL_150))
1774 list += QLatin1String("isampler1D");
1775 if (variant & (Lexer::Variant_GLSL_150))
1776 list += QLatin1String("isampler2D");
1777 if (variant & (Lexer::Variant_GLSL_150))
1778 list += QLatin1String("isampler3D");
1779 if (variant & (Lexer::Variant_GLSL_400))
1780 list += QLatin1String("subroutine");
1781 if (variant & (Lexer::Variant_GLSL_150))
1782 list += QLatin1String("usampler1D");
1783 if (variant & (Lexer::Variant_GLSL_150))
1784 list += QLatin1String("usampler2D");
1785 if (variant & (Lexer::Variant_GLSL_150))
1786 list += QLatin1String("usampler3D");
1787 if (variant & (Lexer::Variant_GLSL_150))
1788 list += QLatin1String("sampler2DMS");
1789 list += QLatin1String("samplerCube");
1790 if (variant & (Lexer::Variant_GLSL_150))
1791 list += QLatin1String("isampler2DMS");
1792 if (variant & (Lexer::Variant_GLSL_150))
1793 list += QLatin1String("isamplerCube");
1794 if (variant & (Lexer::Variant_GLSL_150))
1795 list += QLatin1String("usampler2DMS");
1796 if (variant & (Lexer::Variant_GLSL_150))
1797 list += QLatin1String("usamplerCube");
1798 if (variant & (Lexer::Variant_GLSL_150))
1799 list += QLatin1String("noperspective");
1800 list += QLatin1String("sampler2DRect");
1801 if (variant & (Lexer::Variant_GLSL_150))
1802 list += QLatin1String("samplerBuffer");
1803 if (variant & (Lexer::Variant_GLSL_150))
1804 list += QLatin1String("isampler2DRect");
1805 if (variant & (Lexer::Variant_GLSL_150))
1806 list += QLatin1String("isamplerBuffer");
1807 if (variant & (Lexer::Variant_GLSL_150))
1808 list += QLatin1String("sampler1DArray");
1809 if (variant & (Lexer::Variant_GLSL_150))
1810 list += QLatin1String("sampler2DArray");
1811 if (variant & (Lexer::Variant_GLSL_150))
1812 list += QLatin1String("usampler2DRect");
1813 if (variant & (Lexer::Variant_GLSL_150))
1814 list += QLatin1String("usamplerBuffer");
1815 if (variant & (Lexer::Variant_GLSL_150))
1816 list += QLatin1String("isampler1DArray");
1817 if (variant & (Lexer::Variant_GLSL_150))
1818 list += QLatin1String("isampler2DArray");
1819 if (variant & (Lexer::Variant_GLSL_120))
1820 list += QLatin1String("sampler1DShadow");
1821 if (variant & (Lexer::Variant_GLSL_120))
1822 list += QLatin1String("sampler2DShadow");
1823 if (variant & (Lexer::Variant_GLSL_150))
1824 list += QLatin1String("usampler1DArray");
1825 if (variant & (Lexer::Variant_GLSL_150))
1826 list += QLatin1String("usampler2DArray");
1827 if (variant & (Lexer::Variant_GLSL_150))
1828 list += QLatin1String("sampler2DMSArray");
1829 if (variant & (Lexer::Variant_GLSL_400))
1830 list += QLatin1String("samplerCubeArray");
1831 if (variant & (Lexer::Variant_GLSL_150))
1832 list += QLatin1String("isampler2DMSArray");
1833 if (variant & (Lexer::Variant_GLSL_400))
1834 list += QLatin1String("isamplerCubeArray");
1835 if (variant & (Lexer::Variant_GLSL_400))
1836 list += QLatin1String("samplerCubeShadow");
1837 if (variant & (Lexer::Variant_GLSL_150))
1838 list += QLatin1String("usampler2DMSarray");
1839 if (variant & (Lexer::Variant_GLSL_400))
1840 list += QLatin1String("usamplerCubeArray");
1841 list += QLatin1String("sampler2DRectShadow");
1842 if (variant & (Lexer::Variant_GLSL_150))
1843 list += QLatin1String("sampler1DArrayShadow");
1844 if (variant & (Lexer::Variant_GLSL_150))
1845 list += QLatin1String("sampler2DArrayShadow");
1846 if (variant & (Lexer::Variant_GLSL_400))
1847 list += QLatin1String("samplerCubeArrayShadow");
1848 return list;
1849}
1850
1851QT_END_NAMESPACE
static int classify15(const char *s)
static int classify2(const char *s)
static int classify4(const char *s)
static int classify17(const char *s)
static int classify14(const char *s)
static int classify16(const char *s)
static int classify19(const char *s)
static int classify9(const char *s)
static int classify22(const char *s)
static int classify5(const char *s)
static int classify3(const char *s)
static int classify13(const char *s)
static int classify20(const char *s)
static int classify8(const char *s)
static int classify12(const char *s)
static int classify7(const char *s)
static int classify10(const char *s)
static int classify6(const char *s)
static int classify11(const char *s)