Salome HOME
Merge from V6_main 11/02/2013
[modules/paravis.git] / src / ParaView / vtkParse.tab.c
1
2 /* A Bison parser, made by GNU Bison 2.4.1.  */
3
4 /* Skeleton implementation for Bison's Yacc-like parsers in C
5
6       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7    Free Software Foundation, Inc.
8
9    This program is free software: you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation, either version 3 of the License, or
12    (at your option) any later version.
13
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 /* As a special exception, you may create a larger work that contains
23    part or all of the Bison parser skeleton and distribute that work
24    under terms of your choice, so long as that work isn't itself a
25    parser generator using the skeleton or a modified version thereof
26    as a parser skeleton.  Alternatively, if you modify or redistribute
27    the parser skeleton itself, you may (at your option) remove this
28    special exception, which will cause the skeleton and the resulting
29    Bison output files to be licensed under the GNU General Public
30    License without this special exception.
31
32    This special exception was added by the Free Software Foundation in
33    version 2.2 of Bison.  */
34
35 /* C LALR(1) parser skeleton written by Richard Stallman, by
36    simplifying the original so-called "semantic" parser.  */
37
38 /* All symbols defined below should begin with yy or YY, to avoid
39    infringing on user name space.  This should be done even for local
40    variables, as they might otherwise be expanded by user macros.
41    There are some unavoidable exceptions within include files to
42    define necessary library symbols; they are noted "INFRINGES ON
43    USER NAME SPACE" below.  */
44
45 /* Identify Bison output.  */
46 #define YYBISON 1
47
48 /* Bison version.  */
49 #define YYBISON_VERSION "2.4.1"
50
51 /* Skeleton name.  */
52 #define YYSKELETON_NAME "yacc.c"
53
54 /* Pure parsers.  */
55 #define YYPURE 0
56
57 /* Push parsers.  */
58 #define YYPUSH 0
59
60 /* Pull parsers.  */
61 #define YYPULL 1
62
63 /* Using locations.  */
64 #define YYLSP_NEEDED 0
65
66
67
68 /* Copy the first part of user declarations.  */
69
70 /* Line 189 of yacc.c  */
71 #line 15 "vtkParse.y"
72
73
74 /*
75
76 This file must be translated to C and modified to build everywhere.
77
78 Run yacc like this:
79
80   yacc -b vtkParse vtkParse.y
81
82 Modify vtkParse.tab.c:
83   - convert TABs to spaces (eight per tab)
84   - remove spaces from ends of lines, s/ *$//g
85   - remove the "goto yyerrlab1;" that appears right before yyerrlab1:
86   - remove the #defined constants that appear right after the anonymous_enums
87
88 */
89
90 #include <stdio.h>
91 #include <stdlib.h>
92 #include <string.h>
93 #define yyerror(a) fprintf(stderr,"%s\n",a)
94 #define yywrap() 1
95
96 /* Make sure yacc-generated code knows we have included stdlib.h.  */
97 #ifndef _STDLIB_H
98 # define _STDLIB_H
99 #endif
100 #define YYINCLUDED_STDLIB_H
101
102 /* Borland and MSVC do not define __STDC__ properly. */
103 #if !defined(__STDC__)
104 # if (defined(_MSC_VER) && _MSC_VER >= 1200) || defined(__BORLANDC__)
105 #  define __STDC__ 1
106 # endif
107 #endif
108
109 /* Disable warnings in generated code. */
110 #if defined(_MSC_VER)
111 # pragma warning (disable: 4127) /* conditional expression is constant */
112 # pragma warning (disable: 4244) /* conversion to smaller integer type */
113 #endif
114 #if defined(__BORLANDC__)
115 # pragma warn -8004 /* assigned a value that is never used */
116 # pragma warn -8008 /* conditional is always true */
117 # pragma warn -8066 /* unreachable code */
118 #endif
119
120 /* Map from the type anonymous_enumeration in vtkType.h to the VTK wrapping type
121    system number for the type. */
122
123 #include "vtkParse.h"
124 #include "vtkParseInternal.h"
125 #include "vtkParsePreprocess.h"
126 #include "vtkType.h"
127
128 static unsigned int vtkParseTypeMap[] =
129   {
130   VTK_PARSE_VOID,               /* VTK_VOID                0 */
131   0,                            /* VTK_BIT                 1 */
132   VTK_PARSE_CHAR,               /* VTK_CHAR                2 */
133   VTK_PARSE_UNSIGNED_CHAR,      /* VTK_UNSIGNED_CHAR       3 */
134   VTK_PARSE_SHORT,              /* VTK_SHORT               4 */
135   VTK_PARSE_UNSIGNED_SHORT,     /* VTK_UNSIGNED_SHORT      5 */
136   VTK_PARSE_INT,                /* VTK_INT                 6 */
137   VTK_PARSE_UNSIGNED_INT,       /* VTK_UNSIGNED_INT        7 */
138   VTK_PARSE_LONG,               /* VTK_LONG                8 */
139   VTK_PARSE_UNSIGNED_LONG,      /* VTK_UNSIGNED_LONG       9 */
140   VTK_PARSE_FLOAT,              /* VTK_FLOAT              10 */
141   VTK_PARSE_DOUBLE,             /* VTK_DOUBLE             11 */
142   VTK_PARSE_ID_TYPE,            /* VTK_ID_TYPE            12 */
143   VTK_PARSE_STRING,             /* VTK_STRING             13 */
144   0,                            /* VTK_OPAQUE             14 */
145   VTK_PARSE_SIGNED_CHAR,        /* VTK_SIGNED_CHAR        15 */
146   VTK_PARSE_LONG_LONG,          /* VTK_LONG_LONG          16 */
147   VTK_PARSE_UNSIGNED_LONG_LONG, /* VTK_UNSIGNED_LONG_LONG 17 */
148   VTK_PARSE___INT64,            /* VTK___INT64            18 */
149   VTK_PARSE_UNSIGNED___INT64,   /* VTK_UNSIGNED___INT64   19 */
150   0,                            /* VTK_VARIANT            20 */
151   0,                            /* VTK_OBJECT             21 */
152   VTK_PARSE_UNICODE_STRING      /* VTK_UNICODE_STRING     22 */
153   };
154
155 /* Define some constants to simplify references to the table lookup in
156    the type_primitive production rule code.  */
157 #define VTK_PARSE_INT8 vtkParseTypeMap[VTK_TYPE_INT8]
158 #define VTK_PARSE_UINT8 vtkParseTypeMap[VTK_TYPE_UINT8]
159 #define VTK_PARSE_INT16 vtkParseTypeMap[VTK_TYPE_INT16]
160 #define VTK_PARSE_UINT16 vtkParseTypeMap[VTK_TYPE_UINT16]
161 #define VTK_PARSE_INT32 vtkParseTypeMap[VTK_TYPE_INT32]
162 #define VTK_PARSE_UINT32 vtkParseTypeMap[VTK_TYPE_UINT32]
163 #define VTK_PARSE_INT64 vtkParseTypeMap[VTK_TYPE_INT64]
164 #define VTK_PARSE_UINT64 vtkParseTypeMap[VTK_TYPE_UINT64]
165 #define VTK_PARSE_FLOAT32 vtkParseTypeMap[VTK_TYPE_FLOAT32]
166 #define VTK_PARSE_FLOAT64 vtkParseTypeMap[VTK_TYPE_FLOAT64]
167
168 #define vtkParseDebug(s1, s2) \
169   if ( parseDebug ) { fprintf(stderr, "   %s %s\n", s1, s2); }
170
171 /* the tokenizer */
172 int yylex(void);
173
174 /* the "preprocessor" */
175 PreprocessInfo preprocessor = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
176
177 /* global variables */
178 FileInfo data;
179
180 int            NumberOfConcreteClasses = 0;
181 const char   **ConcreteClasses;
182
183 NamespaceInfo *currentNamespace = NULL;
184 ClassInfo     *currentClass = NULL;
185 FunctionInfo  *currentFunction = NULL;
186 TemplateArgs  *currentTemplate = NULL;
187
188 const char    *currentEnumName = 0;
189 const char    *currentEnumValue = 0;
190
191 int            parseDebug;
192 parse_access_t access_level = VTK_ACCESS_PUBLIC;
193 int            IgnoreBTX = 0;
194
195 /* helper functions */
196 void start_class(const char *classname, int is_struct_or_union);
197 void reject_class(const char *classname, int is_struct_or_union);
198 void end_class();
199 void output_function(void);
200 void reject_function(void);
201 void set_return(FunctionInfo *func, unsigned int type,
202                 const char *typeclass, int count);
203 void add_argument(FunctionInfo *func, unsigned int type,
204                   const char *classname, int count);
205 void add_using(const char *name, int is_namespace);
206 void start_enum(const char *enumname);
207 void add_enum(const char *name, const char *value);
208 void end_enum();
209 void add_constant(const char *name, const char *value,
210                   unsigned int type, const char *typeclass, int global);
211 const char *add_const_scope(const char *name);
212 void prepend_scope(char *cp, const char *arg);
213 unsigned int add_indirection(unsigned int tval, unsigned int ptr);
214 unsigned int add_indirection_to_array(unsigned int ptr);
215 void handle_complex_type(ValueInfo *val, unsigned int datatype,
216                          unsigned int extra, const char *funcSig);
217 void handle_function_type(ValueInfo *arg, const char *name,
218                           const char *funcSig);
219
220 void outputSetVectorMacro(const char *var, unsigned int argType,
221                           const char *typeText, int n);
222 void outputGetVectorMacro(const char *var, unsigned int argType,
223                           const char *typeText, int n);
224
225 /*----------------------------------------------------------------
226  * String utility methods
227  *
228  * Strings are centrally allocated and are const, and they are not
229  * freed until the program exits.  If they need to be freed before
230  * then, vtkstrfree() can be called.
231  */
232
233 size_t stringChunkPos = 0;
234 int numberOfChunks = 0;
235 char **stringArray = NULL;
236
237 /* allocate a string of n+1 bytes */
238 static char *vtkstralloc(size_t n)
239 {
240   size_t chunk_size = 8176;
241   size_t nextChunkPos;
242   char *cp;
243
244   // align next start position on an 8-byte boundary
245   nextChunkPos = (((stringChunkPos + n + 8) | 7 ) - 7);
246
247   if (numberOfChunks == 0 || nextChunkPos > chunk_size)
248     {
249     if (n + 1 > chunk_size)
250       {
251       chunk_size = n + 1;
252       }
253     cp = (char *)malloc(chunk_size);
254     vtkParse_AddStringToArray((const char ***)&stringArray, &numberOfChunks,
255                               cp);
256     stringChunkPos = 0;
257     nextChunkPos = (((n + 8) | 7) - 7);
258     }
259
260   cp = &stringArray[numberOfChunks-1][stringChunkPos];
261   cp[0] = '\0';
262
263   stringChunkPos = nextChunkPos;
264
265   return cp;
266 }
267
268 /* free all allocated strings */
269 void vtkstrfree()
270 {
271   int i;
272
273   for (i = 0; i < numberOfChunks; i++)
274     {
275     free(stringArray[i]);
276     }
277   if (stringArray)
278     {
279     free(stringArray);
280     }
281
282   stringArray = NULL;
283   numberOfChunks = 0;
284 }
285
286 /* duplicate the first n bytes of a string and terminate */
287 static const char *vtkstrndup(const char *in, size_t n)
288 {
289   char *res = NULL;
290
291   res = vtkstralloc(n);
292   strncpy(res, in, n);
293   res[n] = '\0';
294
295   return res;
296 }
297
298 /* duplicate a string */
299 static const char *vtkstrdup(const char *in)
300 {
301   if (in)
302     {
303     return vtkstrndup(in, strlen(in));
304     }
305
306   return in;
307 }
308
309 /* helper function for concatenating strings */
310 static const char *vtkstrncat(size_t n, const char **str)
311 {
312   char *cp;
313   size_t i;
314   size_t j[8];
315   size_t m = 0;
316
317   for (i = 0; i < n; i++)
318     {
319     j[i] = 0;
320     if (str[i])
321       {
322       j[i] = strlen(str[i]);
323       m += j[i];
324       }
325     }
326   cp = vtkstralloc(m);
327   m = 0;
328   for (i = 0; i < n; i++)
329     {
330     if (j[i])
331       {
332       strncpy(&cp[m], str[i], j[i]);
333       m += j[i];
334       }
335     }
336   cp[m] = '\0';
337
338   return cp;
339 }
340
341 /* concatenate strings */
342 static const char *vtkstrcat(const char *str1, const char *str2)
343 {
344   const char *cp[2];
345
346   cp[0] = str1;
347   cp[1] = str2;
348   return vtkstrncat(2, cp);
349 }
350
351 static const char *vtkstrcat3(const char *str1, const char *str2,
352                               const char *str3)
353 {
354   const char *cp[3];
355
356   cp[0] = str1;
357   cp[1] = str2;
358   cp[2] = str3;
359   return vtkstrncat(3, cp);
360 }
361
362 static const char *vtkstrcat4(const char *str1, const char *str2,
363                               const char *str3, const char *str4)
364 {
365   const char *cp[4];
366
367   cp[0] = str1;
368   cp[1] = str2;
369   cp[2] = str3;
370   cp[3] = str4;
371   return vtkstrncat(4, cp);
372 }
373
374 static const char *vtkstrcat5(const char *str1, const char *str2,
375                               const char *str3, const char *str4,
376                               const char *str5)
377 {
378   const char *cp[5];
379
380   cp[0] = str1;
381   cp[1] = str2;
382   cp[2] = str3;
383   cp[3] = str4;
384   cp[4] = str5;
385   return vtkstrncat(5, cp);
386 }
387
388 static const char *vtkstrcat6(const char *str1, const char *str2,
389                               const char *str3, const char *str4,
390                               const char *str5, const char *str6)
391 {
392   const char *cp[6];
393
394   cp[0] = str1;
395   cp[1] = str2;
396   cp[2] = str3;
397   cp[3] = str4;
398   cp[4] = str5;
399   cp[5] = str6;
400   return vtkstrncat(6, cp);
401 }
402
403 static const char *vtkstrcat7(const char *str1, const char *str2,
404                               const char *str3, const char *str4,
405                               const char *str5, const char *str6,
406                               const char *str7)
407 {
408   const char *cp[7];
409
410   cp[0] = str1;
411   cp[1] = str2;
412   cp[2] = str3;
413   cp[3] = str4;
414   cp[4] = str5;
415   cp[5] = str6;
416   cp[6] = str7;
417   return vtkstrncat(7, cp);
418 }
419
420 /*----------------------------------------------------------------
421  * Comments
422  */
423
424 /* "private" variables */
425 char          *commentText = NULL;
426 size_t         commentLength = 0;
427 size_t         commentAllocatedLength = 0;
428 int            commentState = 0;
429
430 const char *getComment()
431 {
432   if (commentState != 0)
433     {
434     return commentText;
435     }
436   return NULL;
437 }
438
439 void clearComment()
440 {
441   commentLength = 0;
442   if (commentText)
443     {
444     commentText[commentLength] = '\0';
445     }
446   commentState = 0;
447 }
448
449 void addCommentLine(const char *line, size_t n)
450 {
451   if (commentState <= 0)
452     {
453     clearComment();
454     return;
455     }
456
457   if (commentText == NULL)
458     {
459     commentAllocatedLength = n+80;
460     commentText = (char *)malloc(commentAllocatedLength);
461     commentLength = 0;
462     commentText[0] = '\0';
463     }
464   else if (commentLength + n + 2 > commentAllocatedLength)
465     {
466     commentAllocatedLength = commentAllocatedLength + commentLength + n + 2;
467     commentText = (char *)realloc(commentText, commentAllocatedLength);
468     }
469
470   if (n > 0)
471     {
472     memcpy(&commentText[commentLength], line, n);
473     }
474   commentLength += n;
475   commentText[commentLength++] = '\n';
476   commentText[commentLength] = '\0';
477 }
478
479 void closeComment()
480 {
481   switch (commentState)
482     {
483     case 1:
484       /* Make comment persist until a new comment starts */
485       commentState = -1;
486       break;
487     case 2:
488       data.Description = vtkstrdup(getComment());
489       clearComment();
490       break;
491     case 3:
492       data.SeeAlso = vtkstrdup(getComment());
493       clearComment();
494       break;
495     case 4:
496       data.Caveats = vtkstrdup(getComment());
497       clearComment();
498       break;
499     }
500 }
501
502 void closeOrClearComment()
503 {
504   if (commentState < 0)
505     {
506     clearComment();
507     }
508   else
509     {
510     closeComment();
511     }
512 }
513
514 void setCommentState(int state)
515 {
516   switch (state)
517     {
518     case 0:
519       closeComment();
520       break;
521     default:
522       closeComment();
523       clearComment();
524       break;
525     }
526
527   commentState = state;
528 }
529
530
531 /*----------------------------------------------------------------
532  * Namespaces
533  *
534  * operates on: currentNamespace
535  */
536
537 /* "private" variables */
538 NamespaceInfo *namespaceStack[10];
539 int namespaceDepth = 0;
540
541 /* enter a namespace */
542 void pushNamespace(const char *name)
543 {
544   int i;
545   NamespaceInfo *oldNamespace = currentNamespace;
546
547   for (i = 0; i < oldNamespace->NumberOfNamespaces; i++)
548     {
549     /* see if the namespace already exists */
550     if (strcmp(name, oldNamespace->Namespaces[i]->Name) == 0)
551       {
552       currentNamespace = oldNamespace->Namespaces[i];
553       }
554     }
555
556   /* create a new namespace */
557   if (i == oldNamespace->NumberOfNamespaces)
558     {
559     currentNamespace = (NamespaceInfo *)malloc(sizeof(NamespaceInfo));
560     vtkParse_InitNamespace(currentNamespace);
561     currentNamespace->Name = vtkstrdup(name);
562     vtkParse_AddNamespaceToNamespace(oldNamespace, currentNamespace);
563     }
564
565   namespaceStack[namespaceDepth++] = oldNamespace;
566 }
567
568 /* leave the namespace */
569 void popNamespace()
570 {
571   currentNamespace = namespaceStack[--namespaceDepth];
572 }
573
574
575 /*----------------------------------------------------------------
576  * Classes
577  *
578  * operates on: currentClass, access_level
579  */
580
581 /* "private" variables */
582 ClassInfo *classStack[10];
583 parse_access_t classAccessStack[10];
584 int classDepth = 0;
585
586 /* start an internal class definition */
587 void pushClass()
588 {
589   classAccessStack[classDepth] = access_level;
590   classStack[classDepth++] = currentClass;
591 }
592
593 /* leave the internal class */
594 void popClass()
595 {
596   currentClass = classStack[--classDepth];
597   access_level = classAccessStack[classDepth];
598 }
599
600
601 /*----------------------------------------------------------------
602  * Templates
603  *
604  * operates on: currentTemplate
605  */
606
607 /* "private" variables */
608 TemplateArgs *templateStack[10];
609 int templateDepth = 0;
610
611 /* begin a template */
612 void startTemplate()
613 {
614   currentTemplate = (TemplateArgs *)malloc(sizeof(TemplateArgs));
615   vtkParse_InitTemplateArgs(currentTemplate);
616 }
617
618 /* clear a template, if set */
619 void clearTemplate()
620 {
621   if (currentTemplate)
622     {
623     free(currentTemplate);
624     }
625   currentTemplate = NULL;
626 }
627
628 /* push the template onto the stack, and start a new one */
629 void pushTemplate()
630 {
631   templateStack[templateDepth++] = currentTemplate;
632   startTemplate();
633 }
634
635 /* pop a template off the stack */
636 void popTemplate()
637 {
638   currentTemplate = templateStack[--templateDepth];
639 }
640
641 /*----------------------------------------------------------------
642  * Function signatures
643  *
644  * operates on: currentFunction
645  */
646
647 /* "private" variables */
648 int sigClosed = 0;
649 size_t sigMark[10];
650 size_t sigLength = 0;
651 size_t sigAllocatedLength = 0;
652 int sigMarkDepth = 0;
653 char *signature = NULL;
654
655 /* start a new signature */
656 void startSig()
657 {
658   signature = NULL;
659   sigLength = 0;
660   sigAllocatedLength = 0;
661   sigClosed = 0;
662   sigMarkDepth = 0;
663   sigMark[0] = 0;
664 }
665
666 /* get the signature */
667 const char *getSig()
668 {
669   return signature;
670 }
671
672 /* reallocate Signature if n chars cannot be appended */
673 void checkSigSize(size_t n)
674 {
675   const char *ccp;
676
677   if (sigAllocatedLength == 0)
678     {
679     sigAllocatedLength = 80 + n;
680     signature = vtkstralloc(sigAllocatedLength);
681     signature[0] = '\0';
682     }
683   else if (sigLength + n > sigAllocatedLength)
684     {
685     sigAllocatedLength += sigLength + n;
686     ccp = signature;
687     signature = vtkstralloc(sigAllocatedLength);
688     strncpy(signature, ccp, sigLength);
689     signature[sigLength] = '\0';
690     }
691 }
692
693 /* close the signature, i.e. allow no more additions to it */
694 void closeSig()
695 {
696   sigClosed = 1;
697 }
698
699 /* re-open the signature */
700 void openSig()
701 {
702   sigClosed = 0;
703 }
704
705 /* insert text at the beginning of the signature */
706 void preSig(const char *arg)
707 {
708   size_t n;
709
710   n = strlen(arg);
711
712   if (!signature)
713     {
714     checkSigSize(n);
715     strncpy(signature, arg, n);
716     signature[n] = '\0';
717     sigLength = n;
718     }
719   else if (!sigClosed && n > 0)
720     {
721     checkSigSize(n);
722     memmove(&signature[n], signature, sigLength);
723     strncpy(signature, arg, n);
724     sigLength += n;
725     signature[sigLength] = '\0';
726     }
727 }
728
729 /* append text to the end of the signature */
730 void postSig(const char *arg)
731 {
732   size_t n;
733
734   n = strlen(arg);
735
736   if (!signature)
737     {
738     checkSigSize(n);
739     strncpy(signature, arg, n);
740     signature[n] = '\0';
741     sigLength = n;
742     }
743   else if (!sigClosed)
744     {
745     checkSigSize(n);
746     strncpy(&signature[sigLength], arg, n);
747     sigLength += n;
748     signature[sigLength] = '\0';
749     }
750 }
751
752 /* prepend a scope:: to the ID at the end of the signature */
753 void preScopeSig(const char *arg)
754 {
755   size_t n;
756
757   n = strlen(arg);
758
759   if (!signature)
760     {
761     checkSigSize(n);
762     strncpy(signature, arg, n);
763     signature[n] = '\0';
764     sigLength = n;
765     }
766   else if (!sigClosed)
767     {
768     checkSigSize(n+2);
769     prepend_scope(signature, arg);
770     sigLength = strlen(signature);
771     }
772 }
773
774 /* set a mark in the signature for later operations */
775 void markSig()
776 {
777   sigMark[sigMarkDepth] = 0;
778   if (signature)
779     {
780     sigMark[sigMarkDepth] = sigLength;
781     }
782   sigMarkDepth++;
783 }
784
785 /* get the contents of the sig from the mark, and clear the mark */
786 const char *copySig()
787 {
788   const char *cp = NULL;
789   if (sigMarkDepth > 0)
790     {
791     sigMarkDepth--;
792     }
793   if (signature)
794     {
795     cp = &signature[sigMark[sigMarkDepth]];
796     }
797   return cp;
798 }
799
800 /* swap the signature text using the mark as the radix */
801 void swapSig()
802 {
803   if (sigMarkDepth > 0)
804     {
805     sigMarkDepth--;
806     }
807   if (signature && sigMark[sigMarkDepth] > 0)
808     {
809     size_t i, m, n, nn;
810     char c;
811     char *cp;
812     cp = signature;
813     n = sigLength;
814     m = sigMark[sigMarkDepth];
815     nn = m/2;
816     for (i = 0; i < nn; i++)
817       {
818       c = cp[i]; cp[i] = cp[m-i-1]; cp[m-i-1] = c;
819       }
820     nn = (n-m)/2;
821     for (i = 0; i < nn; i++)
822       {
823       c = cp[i+m]; cp[i+m] = cp[n-i-1]; cp[n-i-1] = c;
824       }
825     nn = n/2;
826     for (i = 0; i < nn; i++)
827       {
828       c = cp[i]; cp[i] = cp[n-i-1]; cp[n-i-1] = c;
829       }
830     }
831 }
832
833 /* chop the last space from the signature */
834 void chopSig(void)
835 {
836   if (signature)
837     {
838     size_t n = sigLength;
839     if (n > 0 && signature[n-1] == ' ')
840       {
841       signature[n-1] = '\0';
842       sigLength--;
843       }
844     }
845 }
846
847 /* mark this signature as legacy */
848 void legacySig(void)
849 {
850   currentFunction->IsLegacy = 1;
851 }
852
853 /*----------------------------------------------------------------
854  * Storage type for vars and functions
855  */
856
857 /* "private" variables */
858 unsigned int storageType = 0;
859
860 /* save the storage type */
861 void setStorageType(unsigned int val)
862 {
863   storageType = val;
864 }
865
866 /* modify the indirection (pointers, refs) in the storage type */
867 void setStorageTypeIndirection(unsigned int ind)
868 {
869   storageType = (storageType & ~VTK_PARSE_INDIRECT);
870   ind = (ind & VTK_PARSE_INDIRECT);
871   storageType = (storageType | ind);
872 }
873
874 /* retrieve the storage type */
875 unsigned int getStorageType()
876 {
877   return storageType;
878 }
879
880 /*----------------------------------------------------------------
881  * Array information
882  */
883
884 /* "private" variables */
885 int numberOfDimensions = 0;
886 const char **arrayDimensions = NULL;
887
888 /* clear the array counter */
889 void clearArray(void)
890 {
891   numberOfDimensions = 0;
892   arrayDimensions = NULL;
893 }
894
895 /* add another dimension */
896 void pushArraySize(const char *size)
897 {
898   vtkParse_AddStringToArray(&arrayDimensions, &numberOfDimensions,
899                             vtkstrdup(size));
900 }
901
902 /* add another dimension to the front */
903 void pushArrayFront(const char *size)
904 {
905   int i;
906
907   vtkParse_AddStringToArray(&arrayDimensions, &numberOfDimensions, 0);
908
909   for (i = numberOfDimensions-1; i > 0; i--)
910     {
911     arrayDimensions[i] = arrayDimensions[i-1];
912     }
913
914   arrayDimensions[0] = vtkstrdup(size);
915 }
916
917 /* get the number of dimensions */
918 int getArrayNDims()
919 {
920   return numberOfDimensions;
921 }
922
923 /* get the whole array */
924 const char **getArray()
925 {
926   if (numberOfDimensions > 0)
927     {
928     return arrayDimensions;
929     }
930   return NULL;
931 }
932
933 /*----------------------------------------------------------------
934  * Variables and Arguments
935  */
936
937 /* "private" variables */
938 char *currentVarName = 0;
939 char *currentVarValue = 0;
940 char *currentId = 0;
941
942 /* clear the var Id */
943 void clearVarName(void)
944 {
945   currentVarName = NULL;
946 }
947
948 /* set the var Id */
949 void setVarName(const char *text)
950 {
951   static char static_text[2048];
952   currentVarName = static_text;
953   strcpy(static_text, text);
954 }
955
956 /* return the var id */
957 const char *getVarName()
958 {
959   return currentVarName;
960 }
961
962 /* variable value -------------- */
963
964 /* clear the var value */
965 void clearVarValue(void)
966 {
967   currentVarValue = NULL;
968 }
969
970 /* set the var value */
971 void setVarValue(const char *text)
972 {
973   static char static_text[2048];
974   currentVarValue = static_text;
975   strcpy(static_text, text);
976 }
977
978 /* return the var value */
979 const char *getVarValue()
980 {
981   return currentVarValue;
982 }
983
984 /* variable type -------------- */
985
986 /* clear the current Id */
987 void clearTypeId(void)
988 {
989   currentId = NULL;
990 }
991
992 /* set the current Id, it is sticky until cleared */
993 void setTypeId(const char *text)
994 {
995   static char static_text[2048];
996   if (currentId == NULL)
997     {
998     currentId = static_text;
999     strcpy(static_text, text);
1000     }
1001 }
1002
1003 /* set the signature and type together */
1004 void typeSig(const char *text)
1005 {
1006   size_t n;
1007
1008   postSig(text);
1009   postSig(" ");
1010
1011   if (currentId == 0)
1012     {
1013     setTypeId(text);
1014     }
1015   else if ((currentId[0] == 'u' && strcmp(currentId, "unsigned") == 0) ||
1016            (currentId[0] == 's' && strcmp(currentId, "signed") == 0))
1017     {
1018     n = strlen(currentId);
1019     currentId[n] = ' ';
1020     strcpy(&currentId[n+1], text);
1021     }
1022 }
1023
1024 /* return the current Id */
1025 const char *getTypeId()
1026 {
1027   return currentId;
1028 }
1029
1030 /*----------------------------------------------------------------
1031  * Specifically for function pointers, the scope (i.e. class) that
1032  * the function is a method of.
1033  */
1034
1035 const char *pointerScopeStack[10];
1036 int pointerScopeDepth = 0;
1037
1038 /* save the scope for scoped method pointers */
1039 void scopeSig(const char *scope)
1040 {
1041   if (scope && scope[0] != '\0')
1042     {
1043     postSig(scope);
1044     }
1045   else
1046     {
1047     scope = NULL;
1048     }
1049   pointerScopeStack[pointerScopeDepth++] = vtkstrdup(scope);
1050 }
1051
1052 /* get the scope back */
1053 const char *getScope()
1054 {
1055   return pointerScopeStack[--pointerScopeDepth];
1056 }
1057
1058 /*----------------------------------------------------------------
1059  * Function stack
1060  *
1061  * operates on: currentFunction
1062  */
1063
1064 /* "private" variables */
1065 FunctionInfo *functionStack[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
1066 const char *functionVarNameStack[10];
1067 const char *functionTypeIdStack[10];
1068 int functionDepth = 0;
1069
1070 void pushFunction()
1071 {
1072   functionStack[functionDepth] = currentFunction;
1073   currentFunction = (FunctionInfo *)malloc(sizeof(FunctionInfo));
1074   vtkParse_InitFunction(currentFunction);
1075   if (!functionStack[functionDepth])
1076     {
1077     startSig();
1078     }
1079   functionVarNameStack[functionDepth] = vtkstrdup(getVarName());
1080   functionTypeIdStack[functionDepth] = vtkstrdup(getTypeId());
1081   clearVarName();
1082   clearTypeId();
1083   functionDepth++;
1084   functionStack[functionDepth] = 0;
1085 }
1086
1087 void popFunction()
1088 {
1089   FunctionInfo *newFunction = currentFunction;
1090
1091   --functionDepth;
1092   currentFunction = functionStack[functionDepth];
1093   clearVarName();
1094   if (functionVarNameStack[functionDepth])
1095     {
1096     setVarName(functionVarNameStack[functionDepth]);
1097     }
1098   clearTypeId();
1099   if (functionTypeIdStack[functionDepth])
1100     {
1101     setTypeId(functionTypeIdStack[functionDepth]);
1102     }
1103
1104   functionStack[functionDepth+1] = newFunction;
1105 }
1106
1107 FunctionInfo *getFunction()
1108 {
1109   return functionStack[functionDepth+1];
1110 }
1111
1112 /*----------------------------------------------------------------
1113  * Utility methods
1114  */
1115
1116 /* prepend a scope:: to a name */
1117 void prepend_scope(char *cp, const char *arg)
1118 {
1119   size_t i, j, m, n;
1120   int depth;
1121
1122   m = strlen(cp);
1123   n = strlen(arg);
1124   i = m;
1125   while (i > 0 &&
1126          ((cp[i-1] >= 'a' && cp[i-1] <= 'z') ||
1127           (cp[i-1] >= 'A' && cp[i-1] <= 'Z') ||
1128           (cp[i-1] >= '0' && cp[i-1] <= '9') ||
1129           cp[i-1] == '_' || cp[i-1] == ':' ||
1130           cp[i-1] == '>'))
1131     {
1132     i--;
1133     if (cp[i] == '>')
1134       {
1135       depth = 1;
1136       while (i > 0)
1137         {
1138         i--;
1139         if (cp[i] == '<')
1140           {
1141           if (--depth == 0)
1142             {
1143             break;
1144             }
1145           }
1146         if (cp[i] == '>')
1147           {
1148           depth++;
1149           }
1150         }
1151       }
1152     }
1153
1154   for (j = m; j > i; j--)
1155     {
1156     cp[j+n+1] = cp[j-1];
1157     }
1158   for (j = 0; j < n; j++)
1159     {
1160     cp[j+i] = arg[j];
1161     }
1162   cp[n+i] = ':'; cp[n+i+1] = ':';
1163   cp[m+n+2] = '\0';
1164 }
1165
1166 /* expand a type by including pointers from another */
1167 unsigned int add_indirection(unsigned int type1, unsigned int type2)
1168 {
1169   unsigned int ptr1 = (type1 & VTK_PARSE_POINTER_MASK);
1170   unsigned int ptr2 = (type2 & VTK_PARSE_POINTER_MASK);
1171   unsigned int reverse = 0;
1172   unsigned int result;
1173
1174   /* one of type1 or type2 will only have VTK_PARSE_INDIRECT, but
1175    * we don't know which one. */
1176   result = ((type1 & ~VTK_PARSE_POINTER_MASK) |
1177             (type2 & ~VTK_PARSE_POINTER_MASK));
1178
1179   while (ptr2)
1180     {
1181     reverse = ((reverse << 2) | (ptr2 & VTK_PARSE_POINTER_LOWMASK));
1182     ptr2 = ((ptr2 >> 2) & VTK_PARSE_POINTER_MASK);
1183     }
1184
1185   while (reverse)
1186     {
1187     ptr1 = ((ptr1 << 2) | (reverse & VTK_PARSE_POINTER_LOWMASK));
1188     reverse = ((reverse >> 2) & VTK_PARSE_POINTER_MASK);
1189
1190     /* make sure we don't exceed the VTK_PARSE_POINTER bitfield */
1191     if ((ptr1 & VTK_PARSE_POINTER_MASK) != ptr1)
1192       {
1193       ptr1 = VTK_PARSE_BAD_INDIRECT;
1194       break;
1195       }
1196     }
1197
1198   return (ptr1 | result);
1199 }
1200
1201 /* There is only one array, so add any parenthetical indirection to it */
1202 unsigned int add_indirection_to_array(unsigned int type)
1203 {
1204   unsigned int ptrs = (type & VTK_PARSE_POINTER_MASK);
1205   unsigned int result = (type & ~VTK_PARSE_POINTER_MASK);
1206   unsigned int reverse = 0;
1207
1208   if ((type & VTK_PARSE_INDIRECT) == VTK_PARSE_BAD_INDIRECT)
1209     {
1210     return (result | VTK_PARSE_BAD_INDIRECT);
1211     }
1212
1213   while (ptrs)
1214     {
1215     reverse = ((reverse << 2) | (ptrs & VTK_PARSE_POINTER_LOWMASK));
1216     ptrs = ((ptrs >> 2) & VTK_PARSE_POINTER_MASK);
1217     }
1218
1219   /* I know the reversal makes no difference, but it is still
1220    * nice to add the pointers in the correct order, just in
1221    * case const pointers are thrown into the mix. */
1222   while (reverse)
1223     {
1224     pushArrayFront("");
1225     reverse = ((reverse >> 2) & VTK_PARSE_POINTER_MASK);
1226     }
1227
1228   return result;
1229 }
1230
1231
1232
1233 /* Line 189 of yacc.c  */
1234 #line 1235 "vtkParse.tab.c"
1235
1236 /* Enabling traces.  */
1237 #ifndef YYDEBUG
1238 # define YYDEBUG 0
1239 #endif
1240
1241 /* Enabling verbose error messages.  */
1242 #ifdef YYERROR_VERBOSE
1243 # undef YYERROR_VERBOSE
1244 # define YYERROR_VERBOSE 1
1245 #else
1246 # define YYERROR_VERBOSE 0
1247 #endif
1248
1249 /* Enabling the token table.  */
1250 #ifndef YYTOKEN_TABLE
1251 # define YYTOKEN_TABLE 0
1252 #endif
1253
1254
1255 /* Tokens.  */
1256 #ifndef YYTOKENTYPE
1257 # define YYTOKENTYPE
1258    /* Put the tokens into the symbol table, so that GDB and other debuggers
1259       know about them.  */
1260    enum yytokentype {
1261      STRUCT = 258,
1262      CLASS = 259,
1263      PUBLIC = 260,
1264      PRIVATE = 261,
1265      PROTECTED = 262,
1266      VIRTUAL = 263,
1267      ID = 264,
1268      STRING_LITERAL = 265,
1269      INT_LITERAL = 266,
1270      HEX_LITERAL = 267,
1271      OCT_LITERAL = 268,
1272      FLOAT_LITERAL = 269,
1273      CHAR_LITERAL = 270,
1274      ZERO = 271,
1275      FLOAT = 272,
1276      DOUBLE = 273,
1277      LONG_DOUBLE = 274,
1278      INT = 275,
1279      UNSIGNED_INT = 276,
1280      SHORT = 277,
1281      UNSIGNED_SHORT = 278,
1282      LONG = 279,
1283      UNSIGNED_LONG = 280,
1284      LONG_LONG = 281,
1285      UNSIGNED_LONG_LONG = 282,
1286      INT64__ = 283,
1287      UNSIGNED_INT64__ = 284,
1288      CHAR = 285,
1289      SIGNED_CHAR = 286,
1290      UNSIGNED_CHAR = 287,
1291      VOID = 288,
1292      BOOL = 289,
1293      SSIZE_T = 290,
1294      SIZE_T = 291,
1295      OSTREAM = 292,
1296      ISTREAM = 293,
1297      ENUM = 294,
1298      UNION = 295,
1299      CLASS_REF = 296,
1300      OTHER = 297,
1301      CONST = 298,
1302      CONST_PTR = 299,
1303      CONST_EQUAL = 300,
1304      OPERATOR = 301,
1305      UNSIGNED = 302,
1306      SIGNED = 303,
1307      FRIEND = 304,
1308      INLINE = 305,
1309      MUTABLE = 306,
1310      TEMPLATE = 307,
1311      TYPENAME = 308,
1312      TYPEDEF = 309,
1313      NAMESPACE = 310,
1314      USING = 311,
1315      VTK_ID = 312,
1316      STATIC = 313,
1317      EXTERN = 314,
1318      VAR_FUNCTION = 315,
1319      VTK_LEGACY = 316,
1320      NEW = 317,
1321      DELETE = 318,
1322      EXPLICIT = 319,
1323      STATIC_CAST = 320,
1324      DYNAMIC_CAST = 321,
1325      CONST_CAST = 322,
1326      REINTERPRET_CAST = 323,
1327      OP_LSHIFT_EQ = 324,
1328      OP_RSHIFT_EQ = 325,
1329      OP_LSHIFT = 326,
1330      OP_RSHIFT = 327,
1331      OP_ARROW_POINTER = 328,
1332      OP_ARROW = 329,
1333      OP_INCR = 330,
1334      OP_DECR = 331,
1335      OP_PLUS_EQ = 332,
1336      OP_MINUS_EQ = 333,
1337      OP_TIMES_EQ = 334,
1338      OP_DIVIDE_EQ = 335,
1339      OP_REMAINDER_EQ = 336,
1340      OP_AND_EQ = 337,
1341      OP_OR_EQ = 338,
1342      OP_XOR_EQ = 339,
1343      OP_LOGIC_AND_EQ = 340,
1344      OP_LOGIC_OR_EQ = 341,
1345      OP_LOGIC_AND = 342,
1346      OP_LOGIC_OR = 343,
1347      OP_LOGIC_EQ = 344,
1348      OP_LOGIC_NEQ = 345,
1349      OP_LOGIC_LEQ = 346,
1350      OP_LOGIC_GEQ = 347,
1351      ELLIPSIS = 348,
1352      DOUBLE_COLON = 349,
1353      LP = 350,
1354      LA = 351,
1355      QT_ID = 352,
1356      StdString = 353,
1357      UnicodeString = 354,
1358      IdType = 355,
1359      FloatType = 356,
1360      TypeInt8 = 357,
1361      TypeUInt8 = 358,
1362      TypeInt16 = 359,
1363      TypeUInt16 = 360,
1364      TypeInt32 = 361,
1365      TypeUInt32 = 362,
1366      TypeInt64 = 363,
1367      TypeUInt64 = 364,
1368      TypeFloat32 = 365,
1369      TypeFloat64 = 366,
1370      SetMacro = 367,
1371      GetMacro = 368,
1372      SetStringMacro = 369,
1373      GetStringMacro = 370,
1374      SetClampMacro = 371,
1375      SetObjectMacro = 372,
1376      GetObjectMacro = 373,
1377      BooleanMacro = 374,
1378      SetVector2Macro = 375,
1379      SetVector3Macro = 376,
1380      SetVector4Macro = 377,
1381      SetVector6Macro = 378,
1382      GetVector2Macro = 379,
1383      GetVector3Macro = 380,
1384      GetVector4Macro = 381,
1385      GetVector6Macro = 382,
1386      SetVectorMacro = 383,
1387      GetVectorMacro = 384,
1388      ViewportCoordinateMacro = 385,
1389      WorldCoordinateMacro = 386,
1390      TypeMacro = 387,
1391      VTK_BYTE_SWAP_DECL = 388
1392    };
1393 #endif
1394
1395
1396
1397
1398 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1399 typedef union YYSTYPE
1400 {
1401
1402 /* Line 214 of yacc.c  */
1403 #line 1182 "vtkParse.y"
1404
1405   const char   *str;
1406   unsigned int  integer;
1407
1408
1409
1410 /* Line 214 of yacc.c  */
1411 #line 1544 "vtkParse.tab.c"
1412 } YYSTYPE;
1413 # define YYSTYPE_IS_TRIVIAL 1
1414 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
1415 # define YYSTYPE_IS_DECLARED 1
1416 #endif
1417
1418
1419 /* Copy the second part of user declarations.  */
1420
1421
1422 /* Line 264 of yacc.c  */
1423 #line 1556 "vtkParse.tab.c"
1424
1425 #ifdef short
1426 # undef short
1427 #endif
1428
1429 #ifdef YYTYPE_UINT8
1430 typedef YYTYPE_UINT8 yytype_uint8;
1431 #else
1432 typedef unsigned char yytype_uint8;
1433 #endif
1434
1435 #ifdef YYTYPE_INT8
1436 typedef YYTYPE_INT8 yytype_int8;
1437 #elif (defined __STDC__ || defined __C99__FUNC__ \
1438      || defined __cplusplus || defined _MSC_VER)
1439 typedef signed char yytype_int8;
1440 #else
1441 typedef short int yytype_int8;
1442 #endif
1443
1444 #ifdef YYTYPE_UINT16
1445 typedef YYTYPE_UINT16 yytype_uint16;
1446 #else
1447 typedef unsigned short int yytype_uint16;
1448 #endif
1449
1450 #ifdef YYTYPE_INT16
1451 typedef YYTYPE_INT16 yytype_int16;
1452 #else
1453 typedef short int yytype_int16;
1454 #endif
1455
1456 #ifndef YYSIZE_T
1457 # ifdef __SIZE_TYPE__
1458 #  define YYSIZE_T __SIZE_TYPE__
1459 # elif defined size_t
1460 #  define YYSIZE_T size_t
1461 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
1462      || defined __cplusplus || defined _MSC_VER)
1463 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
1464 #  define YYSIZE_T size_t
1465 # else
1466 #  define YYSIZE_T unsigned int
1467 # endif
1468 #endif
1469
1470 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
1471
1472 #ifndef YY_
1473 # if YYENABLE_NLS
1474 #  if ENABLE_NLS
1475 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
1476 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
1477 #  endif
1478 # endif
1479 # ifndef YY_
1480 #  define YY_(msgid) msgid
1481 # endif
1482 #endif
1483
1484 /* Suppress unused-variable warnings by "using" E.  */
1485 #if ! defined lint || defined __GNUC__
1486 # define YYUSE(e) ((void) (e))
1487 #else
1488 # define YYUSE(e) /* empty */
1489 #endif
1490
1491 /* Identity function, used to suppress warnings about constant conditions.  */
1492 #ifndef lint
1493 # define YYID(n) (n)
1494 #else
1495 #if (defined __STDC__ || defined __C99__FUNC__ \
1496      || defined __cplusplus || defined _MSC_VER)
1497 static int
1498 YYID (int yyi)
1499 #else
1500 static int
1501 YYID (yyi)
1502     int yyi;
1503 #endif
1504 {
1505   return yyi;
1506 }
1507 #endif
1508
1509 #if ! defined yyoverflow || YYERROR_VERBOSE
1510
1511 /* The parser invokes alloca or malloc; define the necessary symbols.  */
1512
1513 # ifdef YYSTACK_USE_ALLOCA
1514 #  if YYSTACK_USE_ALLOCA
1515 #   ifdef __GNUC__
1516 #    define YYSTACK_ALLOC __builtin_alloca
1517 #   elif defined __BUILTIN_VA_ARG_INCR
1518 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1519 #   elif defined _AIX
1520 #    define YYSTACK_ALLOC __alloca
1521 #   elif defined _MSC_VER
1522 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1523 #    define alloca _alloca
1524 #   else
1525 #    define YYSTACK_ALLOC alloca
1526 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
1527      || defined __cplusplus || defined _MSC_VER)
1528 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1529 #     ifndef _STDLIB_H
1530 #      define _STDLIB_H 1
1531 #     endif
1532 #    endif
1533 #   endif
1534 #  endif
1535 # endif
1536
1537 # ifdef YYSTACK_ALLOC
1538    /* Pacify GCC's `empty if-body' warning.  */
1539 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
1540 #  ifndef YYSTACK_ALLOC_MAXIMUM
1541     /* The OS might guarantee only one guard page at the bottom of the stack,
1542        and a page size can be as small as 4096 bytes.  So we cannot safely
1543        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
1544        to allow for a few compiler-allocated temporary stack slots.  */
1545 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1546 #  endif
1547 # else
1548 #  define YYSTACK_ALLOC YYMALLOC
1549 #  define YYSTACK_FREE YYFREE
1550 #  ifndef YYSTACK_ALLOC_MAXIMUM
1551 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1552 #  endif
1553 #  if (defined __cplusplus && ! defined _STDLIB_H \
1554        && ! ((defined YYMALLOC || defined malloc) \
1555              && (defined YYFREE || defined free)))
1556 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1557 #   ifndef _STDLIB_H
1558 #    define _STDLIB_H 1
1559 #   endif
1560 #  endif
1561 #  ifndef YYMALLOC
1562 #   define YYMALLOC malloc
1563 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
1564      || defined __cplusplus || defined _MSC_VER)
1565 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1566 #   endif
1567 #  endif
1568 #  ifndef YYFREE
1569 #   define YYFREE free
1570 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
1571      || defined __cplusplus || defined _MSC_VER)
1572 void free (void *); /* INFRINGES ON USER NAME SPACE */
1573 #   endif
1574 #  endif
1575 # endif
1576 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
1577
1578
1579 #if (! defined yyoverflow \
1580      && (! defined __cplusplus \
1581          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1582
1583 /* A type that is properly aligned for any stack member.  */
1584 union yyalloc
1585 {
1586   yytype_int16 yyss_alloc;
1587   YYSTYPE yyvs_alloc;
1588 };
1589
1590 /* The size of the maximum gap between one aligned stack and the next.  */
1591 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
1592
1593 /* The size of an array large to enough to hold all stacks, each with
1594    N elements.  */
1595 # define YYSTACK_BYTES(N) \
1596      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
1597       + YYSTACK_GAP_MAXIMUM)
1598
1599 /* Copy COUNT objects from FROM to TO.  The source and destination do
1600    not overlap.  */
1601 # ifndef YYCOPY
1602 #  if defined __GNUC__ && 1 < __GNUC__
1603 #   define YYCOPY(To, From, Count) \
1604       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
1605 #  else
1606 #   define YYCOPY(To, From, Count)                \
1607       do                                        \
1608         {                                        \
1609           YYSIZE_T yyi;                                \
1610           for (yyi = 0; yyi < (Count); yyi++)        \
1611             (To)[yyi] = (From)[yyi];                \
1612         }                                        \
1613       while (YYID (0))
1614 #  endif
1615 # endif
1616
1617 /* Relocate STACK from its old location to the new one.  The
1618    local variables YYSIZE and YYSTACKSIZE give the old and new number of
1619    elements in the stack, and YYPTR gives the new location of the
1620    stack.  Advance YYPTR to a properly aligned location for the next
1621    stack.  */
1622 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                                \
1623     do                                                                        \
1624       {                                                                        \
1625         YYSIZE_T yynewbytes;                                                \
1626         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                        \
1627         Stack = &yyptr->Stack_alloc;                                        \
1628         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
1629         yyptr += yynewbytes / sizeof (*yyptr);                                \
1630       }                                                                        \
1631     while (YYID (0))
1632
1633 #endif
1634
1635 /* YYFINAL -- State number of the termination state.  */
1636 #define YYFINAL  2
1637 /* YYLAST -- Last index in YYTABLE.  */
1638 #define YYLAST   7055
1639
1640 /* YYNTOKENS -- Number of terminals.  */
1641 #define YYNTOKENS  157
1642 /* YYNNTS -- Number of nonterminals.  */
1643 #define YYNNTS  196
1644 /* YYNRULES -- Number of rules.  */
1645 #define YYNRULES  581
1646 /* YYNRULES -- Number of states.  */
1647 #define YYNSTATES  1021
1648
1649 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
1650 #define YYUNDEFTOK  2
1651 #define YYMAXUTOK   388
1652
1653 #define YYTRANSLATE(YYX)                                                \
1654   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1655
1656 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
1657 static const yytype_uint8 yytranslate[] =
1658 {
1659        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1660        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1661        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1662        2,     2,     2,   155,     2,     2,     2,   149,   150,     2,
1663      135,   136,   147,   145,   142,   144,   156,   148,     2,     2,
1664        2,     2,     2,     2,     2,     2,     2,     2,   141,   134,
1665      139,   143,   140,     2,     2,     2,     2,     2,     2,     2,
1666        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1667        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1668        2,   153,     2,   154,   152,     2,     2,     2,     2,     2,
1669        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1670        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1671        2,     2,     2,   137,   151,   138,   146,     2,     2,     2,
1672        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1673        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1674        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1675        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1676        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1677        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1678        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1679        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1680        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1681        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1682        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1683        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1684        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
1685        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
1686       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
1687       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
1688       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
1689       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1690       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
1691       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
1692       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
1693       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1694       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
1695      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
1696      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
1697      125,   126,   127,   128,   129,   130,   131,   132,   133
1698 };
1699
1700 #if YYDEBUG
1701 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1702    YYRHS.  */
1703 static const yytype_uint16 yyprhs[] =
1704 {
1705        0,     0,     3,     4,     5,     9,    11,    15,    17,    19,
1706       21,    23,    27,    32,    34,    37,    41,    44,    47,    50,
1707       54,    57,    59,    62,    67,    72,    77,    79,    85,    86,
1708       93,    98,    99,   107,   108,   119,   120,   128,   129,   140,
1709      145,   146,   154,   155,   166,   171,   172,   173,   177,   181,
1710      183,   187,   189,   191,   195,   200,   203,   206,   208,   211,
1711      215,   219,   222,   226,   230,   233,   239,   241,   243,   244,
1712      247,   249,   253,   255,   258,   261,   264,   266,   268,   270,
1713      271,   278,   279,   285,   286,   288,   292,   294,   298,   300,
1714      302,   304,   306,   308,   310,   312,   314,   316,   318,   319,
1715      323,   324,   329,   330,   335,   337,   339,   341,   343,   345,
1716      347,   349,   351,   353,   355,   357,   359,   361,   364,   368,
1717      372,   375,   379,   382,   384,   390,   394,   399,   404,   409,
1718      413,   415,   420,   425,   429,   433,   434,   440,   442,   443,
1719      448,   451,   454,   455,   459,   461,   463,   464,   465,   469,
1720      474,   479,   482,   486,   491,   497,   501,   506,   513,   521,
1721      527,   534,   537,   541,   544,   548,   552,   554,   557,   560,
1722      563,   567,   569,   572,   575,   579,   583,   585,   588,   592,
1723      593,   594,   603,   604,   608,   609,   610,   618,   619,   623,
1724      624,   627,   630,   632,   634,   638,   639,   645,   646,   647,
1725      657,   658,   662,   663,   669,   670,   674,   675,   679,   684,
1726      686,   687,   693,   694,   695,   698,   700,   702,   703,   708,
1727      709,   710,   716,   718,   720,   723,   724,   726,   727,   731,
1728      736,   741,   745,   748,   749,   752,   753,   754,   759,   760,
1729      763,   764,   768,   771,   772,   778,   781,   782,   788,   790,
1730      792,   794,   796,   798,   799,   801,   802,   803,   809,   811,
1731      813,   816,   818,   821,   822,   824,   826,   827,   829,   830,
1732      833,   834,   840,   841,   843,   844,   846,   848,   850,   852,
1733      854,   856,   858,   860,   862,   864,   866,   868,   870,   872,
1734      874,   876,   878,   880,   882,   884,   886,   888,   890,   893,
1735      896,   900,   903,   906,   910,   912,   915,   917,   920,   922,
1736      925,   928,   930,   932,   934,   936,   937,   941,   942,   948,
1737      949,   955,   956,   962,   964,   965,   970,   972,   974,   976,
1738      978,   980,   982,   984,   986,   988,   990,   992,   996,  1000,
1739     1002,  1004,  1006,  1008,  1010,  1012,  1014,  1016,  1019,  1021,
1740     1023,  1026,  1028,  1030,  1032,  1035,  1038,  1041,  1044,  1046,
1741     1048,  1050,  1052,  1054,  1056,  1058,  1060,  1062,  1064,  1066,
1742     1068,  1070,  1072,  1074,  1076,  1078,  1080,  1082,  1084,  1086,
1743     1088,  1090,  1092,  1094,  1096,  1098,  1100,  1102,  1104,  1106,
1744     1108,  1110,  1112,  1114,  1116,  1118,  1120,  1122,  1124,  1126,
1745     1128,  1130,  1132,  1133,  1140,  1141,  1143,  1144,  1145,  1150,
1746     1152,  1153,  1157,  1158,  1162,  1164,  1165,  1170,  1171,  1172,
1747     1182,  1184,  1186,  1188,  1190,  1192,  1195,  1197,  1199,  1201,
1748     1203,  1205,  1207,  1209,  1210,  1218,  1219,  1220,  1221,  1231,
1749     1232,  1238,  1239,  1245,  1246,  1247,  1258,  1259,  1267,  1268,
1750     1269,  1270,  1280,  1287,  1288,  1296,  1297,  1305,  1306,  1314,
1751     1315,  1323,  1324,  1332,  1333,  1341,  1342,  1350,  1351,  1359,
1752     1360,  1370,  1371,  1381,  1386,  1391,  1399,  1402,  1405,  1409,
1753     1413,  1415,  1417,  1419,  1421,  1423,  1425,  1427,  1429,  1431,
1754     1433,  1435,  1437,  1439,  1441,  1443,  1445,  1447,  1449,  1451,
1755     1453,  1455,  1457,  1459,  1461,  1463,  1465,  1467,  1469,  1471,
1756     1473,  1475,  1477,  1479,  1481,  1483,  1485,  1487,  1489,  1491,
1757     1493,  1495,  1496,  1499,  1500,  1503,  1505,  1507,  1509,  1511,
1758     1513,  1515,  1517,  1519,  1521,  1523,  1525,  1527,  1529,  1531,
1759     1533,  1535,  1537,  1539,  1541,  1543,  1545,  1547,  1549,  1551,
1760     1553,  1555,  1557,  1559,  1561,  1563,  1565,  1567,  1569,  1571,
1761     1573,  1575,  1577,  1579,  1581,  1583,  1585,  1587,  1589,  1591,
1762     1593,  1595,  1597,  1599,  1601,  1603,  1605,  1607,  1611,  1615,
1763     1619,  1623
1764 };
1765
1766 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
1767 static const yytype_int16 yyrhs[] =
1768 {
1769      158,     0,    -1,    -1,    -1,   158,   159,   160,    -1,   252,
1770       -1,   178,   254,   134,    -1,   196,    -1,   162,    -1,   161,
1771       -1,   194,    -1,   164,   254,   134,    -1,   197,   164,   254,
1772      134,    -1,    41,    -1,   214,   226,    -1,   197,   214,   226,
1773       -1,   213,   226,    -1,   208,   226,    -1,   209,   226,    -1,
1774      197,   208,   226,    -1,   206,   226,    -1,   321,    -1,   299,
1775      134,    -1,     9,   135,   346,   136,    -1,    57,   135,   346,
1776      136,    -1,    97,   135,   346,   136,    -1,   134,    -1,    59,
1777       10,   137,   158,   138,    -1,    -1,    55,   299,   163,   137,
1778      158,   138,    -1,    55,   137,   346,   138,    -1,    -1,     4,
1779      280,   165,   174,   137,   171,   138,    -1,    -1,     4,   280,
1780      139,   294,   140,   166,   174,   137,   171,   138,    -1,    -1,
1781        3,   280,   167,   174,   137,   171,   138,    -1,    -1,     3,
1782      280,   139,   294,   140,   168,   174,   137,   171,   138,    -1,
1783        3,   137,   346,   138,    -1,    -1,    40,   280,   169,   174,
1784      137,   171,   138,    -1,    -1,    40,   280,   139,   294,   140,
1785      170,   174,   137,   171,   138,    -1,    40,   137,   346,   138,
1786       -1,    -1,    -1,   171,   172,   173,    -1,   171,   177,   141,
1787       -1,   252,    -1,   178,   254,   134,    -1,   196,    -1,   194,
1788       -1,   164,   254,   134,    -1,   197,   164,   254,   134,    -1,
1789       49,   192,    -1,    49,   191,    -1,    41,    -1,   214,   226,
1790       -1,    49,   214,   226,    -1,   197,   214,   226,    -1,   211,
1791      226,    -1,    49,   211,   226,    -1,   197,   211,   226,    -1,
1792      207,   226,    -1,   133,   135,   346,   136,   134,    -1,   321,
1793       -1,   134,    -1,    -1,   141,   175,    -1,   176,    -1,   176,
1794      142,   175,    -1,   297,    -1,     6,   297,    -1,     7,   297,
1795       -1,     5,   297,    -1,     5,    -1,     6,    -1,     7,    -1,
1796       -1,    39,   280,   179,   137,   181,   138,    -1,    -1,    39,
1797      180,   137,   181,   138,    -1,    -1,   182,    -1,   182,   142,
1798      181,    -1,   280,    -1,   280,   143,   185,    -1,   184,    -1,
1799      280,    -1,   298,    -1,   290,    -1,    16,    -1,    11,    -1,
1800       13,    -1,    12,    -1,    15,    -1,   183,    -1,    -1,   189,
1801      186,   185,    -1,    -1,   183,   190,   187,   185,    -1,    -1,
1802      135,   188,   185,   136,    -1,   144,    -1,   145,    -1,   146,
1803       -1,   144,    -1,   145,    -1,   147,    -1,   148,    -1,   149,
1804       -1,   150,    -1,   151,    -1,   152,    -1,    71,    -1,    72,
1805       -1,   197,   192,    -1,     4,   280,   193,    -1,     3,   280,
1806      193,    -1,     3,   193,    -1,    40,   280,   193,    -1,    40,
1807      193,    -1,   134,    -1,   137,   346,   138,   347,   134,    -1,
1808      141,   347,   134,    -1,   195,   285,   262,   134,    -1,   195,
1809      164,   248,   134,    -1,   195,   178,   248,   134,    -1,   195,
1810       60,   134,    -1,    54,    -1,    56,    55,   297,   134,    -1,
1811       56,    53,   297,   134,    -1,    56,   297,   134,    -1,    52,
1812      139,   140,    -1,    -1,    52,   139,   198,   199,   140,    -1,
1813      201,    -1,    -1,   201,   142,   200,   199,    -1,   304,   204,
1814       -1,   203,   204,    -1,    -1,   202,   197,   204,    -1,     4,
1815       -1,    53,    -1,    -1,    -1,   280,   205,   249,    -1,    61,
1816      135,   208,   136,    -1,    61,   135,   211,   136,    -1,   283,
1817      223,    -1,   283,   210,   223,    -1,   299,    94,   146,   238,
1818       -1,    50,   299,    94,   146,   238,    -1,   299,    94,   231,
1819       -1,    50,   299,    94,   231,    -1,   299,    94,   299,    94,
1820      146,   238,    -1,    50,   299,    94,   299,    94,   146,   238,
1821       -1,   299,    94,   299,    94,   231,    -1,    50,   299,    94,
1822      299,    94,   231,    -1,   299,    94,    -1,   210,   299,    94,
1823       -1,   146,   238,    -1,    50,   146,   238,    -1,     8,   146,
1824      238,    -1,   231,    -1,    50,   231,    -1,   212,   231,    -1,
1825      283,   223,    -1,     8,   283,   223,    -1,    64,    -1,    50,
1826       64,    -1,    64,    50,    -1,   299,    94,   215,    -1,   283,
1827      210,   218,    -1,   215,    -1,   283,   218,    -1,     8,   285,
1828      218,    -1,    -1,    -1,    46,   283,   135,   216,   241,   136,
1829      217,   225,    -1,    -1,   220,   219,   225,    -1,    -1,    -1,
1830       46,   344,   221,   135,   222,   241,   136,    -1,    -1,   227,
1831      224,   225,    -1,    -1,   143,    16,    -1,    45,    16,    -1,
1832       43,    -1,   134,    -1,   137,   346,   138,    -1,    -1,   280,
1833      135,   228,   241,   136,    -1,    -1,    -1,   280,   139,   229,
1834      294,   140,   135,   230,   241,   136,    -1,    -1,   233,   232,
1835      235,    -1,    -1,   280,   135,   234,   241,   136,    -1,    -1,
1836      141,   237,   236,    -1,    -1,   142,   237,   236,    -1,   297,
1837      135,   346,   136,    -1,   239,    -1,    -1,   280,   135,   240,
1838      241,   136,    -1,    -1,    -1,   242,   243,    -1,    93,    -1,
1839      245,    -1,    -1,   245,   142,   244,   243,    -1,    -1,    -1,
1840      246,   285,   260,   247,   249,    -1,    60,    -1,   280,    -1,
1841      300,   280,    -1,    -1,   250,    -1,    -1,   143,   251,   307,
1842       -1,   283,   253,   255,   134,    -1,    58,    60,   255,   134,
1843       -1,    60,   255,   134,    -1,   262,   249,    -1,    -1,   257,
1844      255,    -1,    -1,    -1,   255,   142,   256,   257,    -1,    -1,
1845      258,   253,    -1,    -1,   300,   259,   253,    -1,   271,   273,
1846       -1,    -1,   264,   269,   136,   261,   267,    -1,   272,   273,
1847       -1,    -1,   265,   270,   136,   263,   267,    -1,   135,    -1,
1848       95,    -1,    96,    -1,    95,    -1,    96,    -1,    -1,    43,
1849       -1,    -1,    -1,   135,   268,   241,   136,   266,    -1,   274,
1850       -1,   260,    -1,   300,   260,    -1,   262,    -1,   300,   262,
1851       -1,    -1,   272,    -1,   280,    -1,    -1,   274,    -1,    -1,
1852      275,   276,    -1,    -1,   278,   153,   277,   279,   154,    -1,
1853       -1,   276,    -1,    -1,   185,    -1,    57,    -1,    97,    -1,
1854        9,    -1,    38,    -1,    37,    -1,    98,    -1,    99,    -1,
1855      281,    -1,   282,    -1,   102,    -1,   103,    -1,   104,    -1,
1856      105,    -1,   106,    -1,   107,    -1,   108,    -1,   109,    -1,
1857      110,    -1,   111,    -1,   100,    -1,   101,    -1,   285,    -1,
1858       51,   285,    -1,    59,   285,    -1,    59,    10,   285,    -1,
1859       50,   285,    -1,   284,   285,    -1,    50,   284,   285,    -1,
1860       58,    -1,    58,    50,    -1,   286,    -1,   286,   300,    -1,
1861      288,    -1,   287,   288,    -1,   288,   287,    -1,    43,    -1,
1862      303,    -1,   290,    -1,   298,    -1,    -1,    53,   289,   297,
1863       -1,    -1,    57,   139,   291,   294,   140,    -1,    -1,     9,
1864      139,   292,   294,   140,    -1,    -1,    97,   139,   293,   294,
1865      140,    -1,   296,    -1,    -1,   296,   142,   295,   294,    -1,
1866      285,    -1,   184,    -1,    57,    -1,     9,    -1,    97,    -1,
1867       38,    -1,    37,    -1,    98,    -1,    99,    -1,   290,    -1,
1868      298,    -1,   299,    94,   297,    -1,   290,    94,   297,    -1,
1869        9,    -1,    97,    -1,    57,    -1,    38,    -1,    37,    -1,
1870       98,    -1,    99,    -1,   150,    -1,   301,   150,    -1,   301,
1871       -1,   302,    -1,   301,   302,    -1,   147,    -1,    44,    -1,
1872      304,    -1,     4,   305,    -1,     3,   305,    -1,    40,   305,
1873       -1,    39,   305,    -1,   306,    -1,   305,    -1,    98,    -1,
1874       99,    -1,    37,    -1,    38,    -1,     9,    -1,    57,    -1,
1875       97,    -1,    33,    -1,    34,    -1,    35,    -1,    36,    -1,
1876      102,    -1,   103,    -1,   104,    -1,   105,    -1,   106,    -1,
1877      107,    -1,   108,    -1,   109,    -1,   110,    -1,   111,    -1,
1878      100,    -1,   101,    -1,    17,    -1,    18,    -1,    19,    -1,
1879       30,    -1,    31,    -1,    32,    -1,    20,    -1,    21,    -1,
1880       22,    -1,    23,    -1,    24,    -1,    25,    -1,    26,    -1,
1881       27,    -1,    28,    -1,    29,    -1,    48,    -1,    47,    -1,
1882      312,    -1,    -1,   137,   308,   307,   310,   309,   138,    -1,
1883       -1,   142,    -1,    -1,    -1,   310,   142,   311,   307,    -1,
1884      320,    -1,    -1,   145,   313,   320,    -1,    -1,   144,   314,
1885      320,    -1,   319,    -1,    -1,   135,   315,   312,   136,    -1,
1886       -1,    -1,   318,   139,   316,   286,   140,   135,   317,   312,
1887      136,    -1,    65,    -1,    67,    -1,    66,    -1,    68,    -1,
1888       10,    -1,   319,    10,    -1,    16,    -1,    11,    -1,    13,
1889       -1,    12,    -1,    14,    -1,    15,    -1,   297,    -1,    -1,
1890      112,   135,   280,   142,   322,   285,   136,    -1,    -1,    -1,
1891       -1,   113,   135,   323,   280,   142,   324,   285,   325,   136,
1892       -1,    -1,   114,   135,   326,   280,   136,    -1,    -1,   115,
1893      135,   327,   280,   136,    -1,    -1,    -1,   116,   135,   280,
1894      142,   328,   303,   329,   142,   347,   136,    -1,    -1,   117,
1895      135,   280,   142,   330,   303,   136,    -1,    -1,    -1,    -1,
1896      118,   135,   331,   280,   142,   332,   303,   333,   136,    -1,
1897      119,   135,   280,   142,   303,   136,    -1,    -1,   120,   135,
1898      280,   142,   334,   303,   136,    -1,    -1,   124,   135,   280,
1899      142,   335,   303,   136,    -1,    -1,   121,   135,   280,   142,
1900      336,   303,   136,    -1,    -1,   125,   135,   280,   142,   337,
1901      303,   136,    -1,    -1,   122,   135,   280,   142,   338,   303,
1902      136,    -1,    -1,   126,   135,   280,   142,   339,   303,   136,
1903       -1,    -1,   123,   135,   280,   142,   340,   303,   136,    -1,
1904       -1,   127,   135,   280,   142,   341,   303,   136,    -1,    -1,
1905      128,   135,   280,   142,   342,   303,   142,    11,   136,    -1,
1906       -1,   129,   135,   280,   142,   343,   303,   142,    11,   136,
1907       -1,   130,   135,   280,   136,    -1,   131,   135,   280,   136,
1908       -1,   132,   135,   280,   142,   280,   309,   136,    -1,   135,
1909      136,    -1,   153,   154,    -1,    62,   153,   154,    -1,    63,
1910      153,   154,    -1,   345,    -1,   143,    -1,   147,    -1,   148,
1911       -1,   144,    -1,   145,    -1,   155,    -1,   146,    -1,   142,
1912       -1,   139,    -1,   140,    -1,   150,    -1,   151,    -1,   152,
1913       -1,   149,    -1,    62,    -1,    63,    -1,    69,    -1,    70,
1914       -1,    71,    -1,    72,    -1,    73,    -1,    74,    -1,    77,
1915       -1,    78,    -1,    79,    -1,    80,    -1,    81,    -1,    75,
1916       -1,    76,    -1,    82,    -1,    83,    -1,    84,    -1,    85,
1917       -1,    86,    -1,    87,    -1,    88,    -1,    89,    -1,    90,
1918       -1,    91,    -1,    92,    -1,    -1,   346,   348,    -1,    -1,
1919      347,   349,    -1,   134,    -1,   349,    -1,    42,    -1,   350,
1920       -1,   352,    -1,   351,    -1,    54,    -1,   345,    -1,   141,
1921       -1,   156,    -1,    94,    -1,     4,    -1,    52,    -1,    38,
1922       -1,    37,    -1,    98,    -1,    99,    -1,   306,    -1,    13,
1923       -1,    11,    -1,    12,    -1,    14,    -1,    15,    -1,    10,
1924       -1,    41,    -1,    43,    -1,    44,    -1,    45,    -1,     3,
1925       -1,    46,    -1,    58,    -1,    50,    -1,     8,    -1,    39,
1926       -1,    40,    -1,    53,    -1,    16,    -1,    60,    -1,    93,
1927       -1,     5,    -1,     7,    -1,     6,    -1,    55,    -1,    56,
1928       -1,    59,    -1,     9,    -1,    57,    -1,    97,    -1,    67,
1929       -1,    66,    -1,    65,    -1,    68,    -1,   137,   346,   138,
1930       -1,   153,   346,   154,    -1,   135,   346,   136,    -1,    95,
1931      346,   136,    -1,    96,   346,   136,    -1
1932 };
1933
1934 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
1935 static const yytype_uint16 yyrline[] =
1936 {
1937        0,  1332,  1332,  1333,  1332,  1337,  1338,  1339,  1340,  1341,
1938     1342,  1343,  1344,  1345,  1346,  1347,  1348,  1349,  1350,  1351,
1939     1352,  1353,  1354,  1355,  1356,  1357,  1358,  1364,  1370,  1370,
1940     1372,  1378,  1378,  1380,  1380,  1382,  1382,  1384,  1384,  1386,
1941     1387,  1387,  1389,  1389,  1391,  1393,  1395,  1394,  1397,  1400,
1942     1401,  1402,  1403,  1404,  1405,  1406,  1407,  1408,  1409,  1410,
1943     1412,  1413,  1414,  1416,  1417,  1418,  1419,  1420,  1422,  1422,
1944     1424,  1424,  1426,  1427,  1428,  1429,  1436,  1437,  1438,  1448,
1945     1448,  1450,  1450,  1453,  1453,  1453,  1455,  1456,  1458,  1459,
1946     1460,  1460,  1462,  1462,  1462,  1462,  1462,  1464,  1465,  1465,
1947     1469,  1469,  1473,  1473,  1478,  1478,  1479,  1481,  1481,  1482,
1948     1482,  1483,  1483,  1484,  1484,  1485,  1486,  1492,  1494,  1495,
1949     1496,  1497,  1498,  1500,  1501,  1502,  1508,  1531,  1532,  1533,
1950     1535,  1542,  1543,  1544,  1551,  1552,  1552,  1558,  1559,  1559,
1951     1562,  1572,  1580,  1580,  1592,  1593,  1595,  1595,  1595,  1602,
1952     1604,  1610,  1612,  1613,  1614,  1615,  1616,  1617,  1618,  1619,
1953     1620,  1622,  1623,  1625,  1626,  1627,  1632,  1633,  1634,  1641,
1954     1642,  1650,  1650,  1650,  1652,  1653,  1656,  1657,  1658,  1668,
1955     1672,  1667,  1684,  1684,  1693,  1694,  1693,  1701,  1701,  1710,
1956     1711,  1720,  1730,  1736,  1736,  1739,  1738,  1743,  1744,  1743,
1957     1751,  1751,  1758,  1758,  1760,  1760,  1762,  1762,  1764,  1766,
1958     1775,  1775,  1781,  1781,  1781,  1784,  1785,  1786,  1786,  1789,
1959     1791,  1789,  1820,  1844,  1844,  1846,  1846,  1848,  1848,  1855,
1960     1856,  1857,  1859,  1910,  1911,  1913,  1914,  1914,  1917,  1917,
1961     1918,  1918,  1922,  1923,  1923,  1937,  1938,  1938,  1951,  1952,
1962     1954,  1957,  1959,  1962,  1962,  1964,  1965,  1965,  1967,  1970,
1963     1971,  1975,  1976,  1979,  1979,  1981,  1983,  1983,  1985,  1985,
1964     1987,  1987,  1989,  1989,  1991,  1992,  1998,  1999,  2000,  2001,
1965     2002,  2003,  2004,  2005,  2006,  2009,  2010,  2011,  2012,  2013,
1966     2014,  2015,  2016,  2017,  2018,  2021,  2022,  2029,  2030,  2031,
1967     2032,  2034,  2035,  2037,  2041,  2042,  2044,  2045,  2047,  2048,
1968     2049,  2051,  2053,  2054,  2056,  2058,  2058,  2062,  2062,  2065,
1969     2065,  2068,  2068,  2072,  2073,  2073,  2076,  2076,  2078,  2079,
1970     2080,  2081,  2082,  2083,  2084,  2085,  2086,  2088,  2093,  2099,
1971     2099,  2099,  2099,  2099,  2100,  2100,  2116,  2117,  2118,  2123,
1972     2124,  2136,  2137,  2140,  2141,  2142,  2143,  2144,  2147,  2148,
1973     2151,  2152,  2153,  2154,  2155,  2156,  2157,  2160,  2161,  2162,
1974     2163,  2164,  2165,  2166,  2167,  2168,  2169,  2170,  2171,  2172,
1975     2173,  2174,  2175,  2176,  2177,  2178,  2179,  2180,  2181,  2183,
1976     2184,  2186,  2187,  2189,  2190,  2192,  2193,  2195,  2196,  2198,
1977     2199,  2205,  2206,  2206,  2212,  2212,  2214,  2215,  2215,  2220,
1978     2221,  2221,  2222,  2222,  2226,  2227,  2227,  2228,  2230,  2228,
1979     2250,  2251,  2252,  2253,  2255,  2256,  2259,  2260,  2261,  2262,
1980     2263,  2264,  2265,  2275,  2275,  2285,  2286,  2286,  2285,  2295,
1981     2295,  2305,  2305,  2314,  2314,  2314,  2347,  2346,  2357,  2358,
1982     2358,  2357,  2367,  2385,  2385,  2390,  2390,  2395,  2395,  2400,
1983     2400,  2405,  2405,  2410,  2410,  2415,  2415,  2420,  2420,  2425,
1984     2425,  2442,  2442,  2456,  2493,  2531,  2588,  2589,  2590,  2591,
1985     2592,  2594,  2595,  2595,  2596,  2596,  2597,  2597,  2598,  2598,
1986     2599,  2599,  2600,  2600,  2601,  2602,  2603,  2604,  2605,  2606,
1987     2607,  2608,  2609,  2610,  2611,  2612,  2613,  2614,  2615,  2616,
1988     2617,  2618,  2619,  2620,  2621,  2622,  2623,  2624,  2625,  2626,
1989     2627,  2633,  2633,  2634,  2634,  2636,  2636,  2638,  2638,  2638,
1990     2638,  2638,  2639,  2639,  2639,  2639,  2639,  2639,  2640,  2640,
1991     2640,  2640,  2640,  2641,  2641,  2641,  2641,  2641,  2642,  2642,
1992     2642,  2642,  2642,  2642,  2643,  2643,  2643,  2643,  2643,  2643,
1993     2643,  2644,  2644,  2644,  2644,  2644,  2644,  2645,  2645,  2645,
1994     2645,  2645,  2645,  2646,  2646,  2646,  2646,  2648,  2649,  2650,
1995     2650,  2650
1996 };
1997 #endif
1998
1999 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
2000 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2001    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
2002 static const char *const yytname[] =
2003 {
2004   "$end", "error", "$undefined", "STRUCT", "CLASS", "PUBLIC", "PRIVATE",
2005   "PROTECTED", "VIRTUAL", "ID", "STRING_LITERAL", "INT_LITERAL",
2006   "HEX_LITERAL", "OCT_LITERAL", "FLOAT_LITERAL", "CHAR_LITERAL", "ZERO",
2007   "FLOAT", "DOUBLE", "LONG_DOUBLE", "INT", "UNSIGNED_INT", "SHORT",
2008   "UNSIGNED_SHORT", "LONG", "UNSIGNED_LONG", "LONG_LONG",
2009   "UNSIGNED_LONG_LONG", "INT64__", "UNSIGNED_INT64__", "CHAR",
2010   "SIGNED_CHAR", "UNSIGNED_CHAR", "VOID", "BOOL", "SSIZE_T", "SIZE_T",
2011   "OSTREAM", "ISTREAM", "ENUM", "UNION", "CLASS_REF", "OTHER", "CONST",
2012   "CONST_PTR", "CONST_EQUAL", "OPERATOR", "UNSIGNED", "SIGNED", "FRIEND",
2013   "INLINE", "MUTABLE", "TEMPLATE", "TYPENAME", "TYPEDEF", "NAMESPACE",
2014   "USING", "VTK_ID", "STATIC", "EXTERN", "VAR_FUNCTION", "VTK_LEGACY",
2015   "NEW", "DELETE", "EXPLICIT", "STATIC_CAST", "DYNAMIC_CAST", "CONST_CAST",
2016   "REINTERPRET_CAST", "OP_LSHIFT_EQ", "OP_RSHIFT_EQ", "OP_LSHIFT",
2017   "OP_RSHIFT", "OP_ARROW_POINTER", "OP_ARROW", "OP_INCR", "OP_DECR",
2018   "OP_PLUS_EQ", "OP_MINUS_EQ", "OP_TIMES_EQ", "OP_DIVIDE_EQ",
2019   "OP_REMAINDER_EQ", "OP_AND_EQ", "OP_OR_EQ", "OP_XOR_EQ",
2020   "OP_LOGIC_AND_EQ", "OP_LOGIC_OR_EQ", "OP_LOGIC_AND", "OP_LOGIC_OR",
2021   "OP_LOGIC_EQ", "OP_LOGIC_NEQ", "OP_LOGIC_LEQ", "OP_LOGIC_GEQ",
2022   "ELLIPSIS", "DOUBLE_COLON", "LP", "LA", "QT_ID", "StdString",
2023   "UnicodeString", "IdType", "FloatType", "TypeInt8", "TypeUInt8",
2024   "TypeInt16", "TypeUInt16", "TypeInt32", "TypeUInt32", "TypeInt64",
2025   "TypeUInt64", "TypeFloat32", "TypeFloat64", "SetMacro", "GetMacro",
2026   "SetStringMacro", "GetStringMacro", "SetClampMacro", "SetObjectMacro",
2027   "GetObjectMacro", "BooleanMacro", "SetVector2Macro", "SetVector3Macro",
2028   "SetVector4Macro", "SetVector6Macro", "GetVector2Macro",
2029   "GetVector3Macro", "GetVector4Macro", "GetVector6Macro",
2030   "SetVectorMacro", "GetVectorMacro", "ViewportCoordinateMacro",
2031   "WorldCoordinateMacro", "TypeMacro", "VTK_BYTE_SWAP_DECL", "';'", "'('",
2032   "')'", "'{'", "'}'", "'<'", "'>'", "':'", "','", "'='", "'-'", "'+'",
2033   "'~'", "'*'", "'/'", "'%'", "'&'", "'|'", "'^'", "'['", "']'", "'!'",
2034   "'.'", "$accept", "strt", "$@1", "file_item", "extern", "namespace",
2035   "$@2", "class_def", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8",
2036   "class_def_body", "$@9", "class_def_item", "optional_scope",
2037   "scope_list", "scope_list_item", "scope_type", "enum_def", "$@10",
2038   "$@11", "enum_list", "enum_item", "integer_value", "integer_literal",
2039   "integer_expression", "$@12", "$@13", "$@14", "math_unary_op",
2040   "math_binary_op", "template_internal_class", "internal_class",
2041   "internal_class_body", "type_def", "typedef_start", "using", "template",
2042   "$@15", "template_args", "$@16", "template_arg", "$@17",
2043   "class_or_typename", "maybe_template_id", "$@18", "legacy_function",
2044   "legacy_method", "function", "scoped_method", "scope", "method",
2045   "explicit_mod", "scoped_operator", "operator", "typecast_op_func",
2046   "$@19", "$@20", "op_func", "$@21", "op_sig", "$@22", "$@23", "func",
2047   "$@24", "func_trailer", "func_body", "func_sig", "$@25", "$@26", "@27",
2048   "constructor", "$@28", "constructor_sig", "$@29", "maybe_initializers",
2049   "more_initializers", "initializer", "destructor", "destructor_sig",
2050   "$@30", "args_list", "$@31", "more_args", "$@32", "arg", "$@33", "$@34",
2051   "maybe_indirect_id", "maybe_var_assign", "var_assign", "$@35", "var",
2052   "var_id_maybe_assign", "maybe_vars", "maybe_other_vars", "$@36",
2053   "other_var", "$@37", "$@38", "maybe_complex_var_id", "$@39",
2054   "complex_var_id", "$@40", "p_or_lp_or_la", "lp_or_la",
2055   "maybe_func_const", "maybe_array_or_args", "$@41",
2056   "maybe_indirect_maybe_var_id", "maybe_indirect_var_id", "maybe_var_id",
2057   "var_id", "maybe_var_array", "var_array", "$@42", "array", "$@43",
2058   "more_array", "array_size", "any_id", "sized_type_id", "special_type_id",
2059   "storage_type", "static_mod", "type", "type_red", "const_mod",
2060   "type_red1", "$@44", "templated_id", "$@45", "$@46", "$@47",
2061   "template_params", "$@48", "template_param", "maybe_scoped_id",
2062   "scoped_id", "class_id", "type_indirection", "pointers",
2063   "pointer_or_const_pointer", "type_red2", "type_simple", "type_id",
2064   "type_primitive", "value", "$@49", "maybe_comma", "more_values", "$@50",
2065   "literal", "$@51", "$@52", "$@53", "$@54", "$@55", "any_cast",
2066   "string_literal", "literal2", "macro", "$@56", "$@57", "$@58", "$@59",
2067   "$@60", "$@61", "$@62", "$@63", "$@64", "$@65", "$@66", "$@67", "$@68",
2068   "$@69", "$@70", "$@71", "$@72", "$@73", "$@74", "$@75", "$@76", "$@77",
2069   "op_token", "op_token_no_delim", "maybe_other", "maybe_other_no_semi",
2070   "other_stuff", "other_stuff_no_semi", "braces", "brackets", "parens", 0
2071 };
2072 #endif
2073
2074 # ifdef YYPRINT
2075 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
2076    token YYLEX-NUM.  */
2077 static const yytype_uint16 yytoknum[] =
2078 {
2079        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
2080      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
2081      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
2082      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
2083      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
2084      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
2085      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
2086      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
2087      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
2088      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
2089      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
2090      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
2091      375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
2092      385,   386,   387,   388,    59,    40,    41,   123,   125,    60,
2093       62,    58,    44,    61,    45,    43,   126,    42,    47,    37,
2094       38,   124,    94,    91,    93,    33,    46
2095 };
2096 # endif
2097
2098 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
2099 static const yytype_uint16 yyr1[] =
2100 {
2101        0,   157,   158,   159,   158,   160,   160,   160,   160,   160,
2102      160,   160,   160,   160,   160,   160,   160,   160,   160,   160,
2103      160,   160,   160,   160,   160,   160,   160,   161,   163,   162,
2104      162,   165,   164,   166,   164,   167,   164,   168,   164,   164,
2105      169,   164,   170,   164,   164,   171,   172,   171,   171,   173,
2106      173,   173,   173,   173,   173,   173,   173,   173,   173,   173,
2107      173,   173,   173,   173,   173,   173,   173,   173,   174,   174,
2108      175,   175,   176,   176,   176,   176,   177,   177,   177,   179,
2109      178,   180,   178,   181,   181,   181,   182,   182,   183,   183,
2110      183,   183,   184,   184,   184,   184,   184,   185,   186,   185,
2111      187,   185,   188,   185,   189,   189,   189,   190,   190,   190,
2112      190,   190,   190,   190,   190,   190,   190,   191,   192,   192,
2113      192,   192,   192,   193,   193,   193,   194,   194,   194,   194,
2114      195,   196,   196,   196,   197,   198,   197,   199,   200,   199,
2115      201,   201,   202,   201,   203,   203,   204,   205,   204,   206,
2116      207,   208,   209,   209,   209,   209,   209,   209,   209,   209,
2117      209,   210,   210,   211,   211,   211,   211,   211,   211,   211,
2118      211,   212,   212,   212,   213,   213,   214,   214,   214,   216,
2119      217,   215,   219,   218,   221,   222,   220,   224,   223,   225,
2120      225,   225,   225,   226,   226,   228,   227,   229,   230,   227,
2121      232,   231,   234,   233,   235,   235,   236,   236,   237,   238,
2122      240,   239,   241,   242,   241,   243,   243,   244,   243,   246,
2123      247,   245,   245,   248,   248,   249,   249,   251,   250,   252,
2124      252,   252,   253,   254,   254,   255,   256,   255,   258,   257,
2125      259,   257,   260,   261,   260,   262,   263,   262,   264,   264,
2126      264,   265,   265,   266,   266,   267,   268,   267,   267,   269,
2127      269,   270,   270,   271,   271,   272,   273,   273,   275,   274,
2128      277,   276,   278,   278,   279,   279,   280,   280,   280,   280,
2129      280,   280,   280,   280,   280,   281,   281,   281,   281,   281,
2130      281,   281,   281,   281,   281,   282,   282,   283,   283,   283,
2131      283,   283,   283,   283,   284,   284,   285,   285,   286,   286,
2132      286,   287,   288,   288,   288,   289,   288,   291,   290,   292,
2133      290,   293,   290,   294,   295,   294,   296,   296,   297,   297,
2134      297,   297,   297,   297,   297,   297,   297,   298,   298,   299,
2135      299,   299,   299,   299,   299,   299,   300,   300,   300,   301,
2136      301,   302,   302,   303,   303,   303,   303,   303,   304,   304,
2137      305,   305,   305,   305,   305,   305,   305,   306,   306,   306,
2138      306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
2139      306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
2140      306,   306,   306,   306,   306,   306,   306,   306,   306,   306,
2141      306,   307,   308,   307,   309,   309,   310,   311,   310,   312,
2142      313,   312,   314,   312,   312,   315,   312,   316,   317,   312,
2143      318,   318,   318,   318,   319,   319,   320,   320,   320,   320,
2144      320,   320,   320,   322,   321,   323,   324,   325,   321,   326,
2145      321,   327,   321,   328,   329,   321,   330,   321,   331,   332,
2146      333,   321,   321,   334,   321,   335,   321,   336,   321,   337,
2147      321,   338,   321,   339,   321,   340,   321,   341,   321,   342,
2148      321,   343,   321,   321,   321,   321,   344,   344,   344,   344,
2149      344,   345,   345,   345,   345,   345,   345,   345,   345,   345,
2150      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
2151      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
2152      345,   345,   345,   345,   345,   345,   345,   345,   345,   345,
2153      345,   346,   346,   347,   347,   348,   348,   349,   349,   349,
2154      349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2155      349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2156      349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2157      349,   349,   349,   349,   349,   349,   349,   349,   349,   349,
2158      349,   349,   349,   349,   349,   349,   349,   350,   351,   352,
2159      352,   352
2160 };
2161
2162 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
2163 static const yytype_uint8 yyr2[] =
2164 {
2165        0,     2,     0,     0,     3,     1,     3,     1,     1,     1,
2166        1,     3,     4,     1,     2,     3,     2,     2,     2,     3,
2167        2,     1,     2,     4,     4,     4,     1,     5,     0,     6,
2168        4,     0,     7,     0,    10,     0,     7,     0,    10,     4,
2169        0,     7,     0,    10,     4,     0,     0,     3,     3,     1,
2170        3,     1,     1,     3,     4,     2,     2,     1,     2,     3,
2171        3,     2,     3,     3,     2,     5,     1,     1,     0,     2,
2172        1,     3,     1,     2,     2,     2,     1,     1,     1,     0,
2173        6,     0,     5,     0,     1,     3,     1,     3,     1,     1,
2174        1,     1,     1,     1,     1,     1,     1,     1,     0,     3,
2175        0,     4,     0,     4,     1,     1,     1,     1,     1,     1,
2176        1,     1,     1,     1,     1,     1,     1,     2,     3,     3,
2177        2,     3,     2,     1,     5,     3,     4,     4,     4,     3,
2178        1,     4,     4,     3,     3,     0,     5,     1,     0,     4,
2179        2,     2,     0,     3,     1,     1,     0,     0,     3,     4,
2180        4,     2,     3,     4,     5,     3,     4,     6,     7,     5,
2181        6,     2,     3,     2,     3,     3,     1,     2,     2,     2,
2182        3,     1,     2,     2,     3,     3,     1,     2,     3,     0,
2183        0,     8,     0,     3,     0,     0,     7,     0,     3,     0,
2184        2,     2,     1,     1,     3,     0,     5,     0,     0,     9,
2185        0,     3,     0,     5,     0,     3,     0,     3,     4,     1,
2186        0,     5,     0,     0,     2,     1,     1,     0,     4,     0,
2187        0,     5,     1,     1,     2,     0,     1,     0,     3,     4,
2188        4,     3,     2,     0,     2,     0,     0,     4,     0,     2,
2189        0,     3,     2,     0,     5,     2,     0,     5,     1,     1,
2190        1,     1,     1,     0,     1,     0,     0,     5,     1,     1,
2191        2,     1,     2,     0,     1,     1,     0,     1,     0,     2,
2192        0,     5,     0,     1,     0,     1,     1,     1,     1,     1,
2193        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2194        1,     1,     1,     1,     1,     1,     1,     1,     2,     2,
2195        3,     2,     2,     3,     1,     2,     1,     2,     1,     2,
2196        2,     1,     1,     1,     1,     0,     3,     0,     5,     0,
2197        5,     0,     5,     1,     0,     4,     1,     1,     1,     1,
2198        1,     1,     1,     1,     1,     1,     1,     3,     3,     1,
2199        1,     1,     1,     1,     1,     1,     1,     2,     1,     1,
2200        2,     1,     1,     1,     2,     2,     2,     2,     1,     1,
2201        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2202        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2203        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2204        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2205        1,     1,     0,     6,     0,     1,     0,     0,     4,     1,
2206        0,     3,     0,     3,     1,     0,     4,     0,     0,     9,
2207        1,     1,     1,     1,     1,     2,     1,     1,     1,     1,
2208        1,     1,     1,     0,     7,     0,     0,     0,     9,     0,
2209        5,     0,     5,     0,     0,    10,     0,     7,     0,     0,
2210        0,     9,     6,     0,     7,     0,     7,     0,     7,     0,
2211        7,     0,     7,     0,     7,     0,     7,     0,     7,     0,
2212        9,     0,     9,     4,     4,     7,     2,     2,     3,     3,
2213        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2214        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2215        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2216        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2217        1,     0,     2,     0,     2,     1,     1,     1,     1,     1,
2218        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2219        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2220        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2221        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
2222        1,     1,     1,     1,     1,     1,     1,     3,     3,     3,
2223        3,     3
2224 };
2225
2226 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
2227    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
2228    means the default is an error.  */
2229 static const yytype_uint16 yydefact[] =
2230 {
2231        2,     3,     1,     0,     0,     0,     0,   364,   383,   384,
2232      385,   389,   390,   391,   392,   393,   394,   395,   396,   397,
2233      398,   386,   387,   388,   367,   368,   369,   370,   362,   363,
2234       81,     0,    13,   311,     0,   400,   399,     0,     0,     0,
2235      315,   130,     0,     0,   365,   304,     0,   235,     0,   366,
2236      360,   361,   381,   382,   371,   372,   373,   374,   375,   376,
2237      377,   378,   379,   380,     0,     0,     0,     0,     0,     0,
2238        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2239        0,     0,     0,     0,     0,    26,     4,     9,     8,   238,
2240      238,    10,     0,     7,     0,     0,     0,     0,     0,     0,
2241      176,     5,     0,     0,   297,   306,     0,   308,   313,   314,
2242        0,   312,   353,   359,   358,    21,   364,   362,   363,   365,
2243      366,   360,   361,   295,   296,   285,   286,   287,   288,   289,
2244      290,   291,   292,   293,   294,   521,    35,   283,   284,   355,
2245       31,   354,     0,     0,   364,     0,     0,   365,   366,     0,
2246        0,   521,   319,     0,    79,   357,   521,    40,   356,     0,
2247      304,     0,     0,     0,   301,     0,   298,   135,     0,   339,
2248      343,   342,   341,   340,   344,   345,   521,    28,   329,   332,
2249      331,     0,     0,   328,   330,   333,   334,   335,     0,   336,
2250      521,   317,   305,   235,     0,   299,     0,     0,   521,   321,
2251        0,   435,   439,   441,     0,     0,   448,     0,     0,     0,
2252        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2253        0,   352,   351,   346,     0,   235,     0,   240,   348,   349,
2254        0,     0,     0,     0,     0,   238,     0,     0,     0,   193,
2255      521,    20,    17,    18,    16,    14,   278,   280,   279,     0,
2256      276,   251,   252,   277,   281,   282,     0,   177,   182,   151,
2257      187,   235,   225,     0,   266,   265,     0,   302,   307,   309,
2258      310,     0,     0,    22,     0,     0,    68,     0,    68,   364,
2259      362,   363,   365,   366,   360,   361,   178,     0,     0,     0,
2260       83,     0,     0,     0,    68,     0,   179,   303,     0,   134,
2261      142,   316,     0,     0,     0,     0,   133,     0,     0,     0,
2262        2,   300,   231,   236,     0,     0,     0,     0,   278,   280,
2263      279,   276,   277,   281,   282,     0,     0,     0,     0,     0,
2264        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2265        0,     0,     0,     0,     0,     0,    11,   234,   239,   265,
2266        0,   347,   350,     6,   129,     0,   223,     0,     0,     0,
2267        0,    19,    15,     0,     0,   495,   496,   497,   498,   499,
2268      500,   501,   502,   508,   509,   503,   504,   505,   506,   507,
2269      510,   511,   512,   513,   514,   515,   516,   517,   518,   519,
2270      520,     0,   489,   490,   488,   481,   484,   485,   487,   482,
2271      483,   494,   491,   492,   493,     0,   486,   184,   480,   175,
2272      152,     0,   189,   189,     0,   227,   232,   226,   261,     0,
2273        0,   245,   267,   272,   195,   197,   161,   338,   329,   332,
2274      331,   328,   330,   333,   334,     0,   174,   155,   200,     0,
2275      337,     0,   553,   536,   564,   566,   565,   557,   570,   548,
2276      544,   545,   543,   546,   547,   561,   539,   538,   558,   559,
2277      549,   527,   550,   551,   552,   554,   556,   537,   560,   531,
2278      567,   568,   571,   555,   569,   562,   495,   496,   575,   574,
2279      573,   576,   563,   535,   521,   521,   572,   540,   541,   525,
2280      521,   521,    39,   533,   521,   534,   542,   532,   522,   526,
2281      528,   530,   529,    93,    95,    94,    96,    92,   327,   326,
2282        0,   323,     0,     0,     0,     0,    23,     0,     0,    84,
2283       86,    83,    44,     0,     0,   213,     0,   156,     0,   144,
2284      145,     0,   137,     0,   146,   146,    30,     2,   132,   131,
2285       24,     0,   230,     3,   238,   149,    25,     0,   433,     0,
2286        0,     0,   443,   446,     0,     0,   453,   457,   461,   465,
2287      455,   459,   463,   467,   469,   471,   473,   474,     0,   241,
2288      127,   224,   128,   126,    12,   194,     0,     0,   476,   477,
2289        0,   162,   192,     0,     0,   183,   188,   229,     0,   246,
2290      262,   269,     0,   213,     0,   153,   209,     0,   204,   202,
2291        0,     0,     0,     0,     0,     0,    37,   324,     0,     0,
2292        0,    69,    70,    72,    45,    33,    45,   320,    82,    83,
2293        0,     0,    42,    45,     0,   219,   154,     0,   136,   138,
2294      146,   141,   147,   140,     3,   318,    27,   237,   322,     0,
2295      436,   440,   442,     0,     0,   449,     0,     0,     0,     0,
2296        0,     0,     0,     0,     0,     0,     0,   404,   478,   479,
2297      185,   191,   190,   424,   427,   429,   428,   430,   431,   426,
2298      420,   422,   421,   423,   415,   402,   412,   410,   432,   228,
2299      401,     0,   414,   409,   255,   270,     0,     0,   210,     0,
2300      201,   213,     0,   159,   580,   581,   579,   577,   578,    68,
2301        0,    75,    73,    74,     0,    46,    68,    46,    85,   278,
2302      276,   277,   102,   104,   105,   106,    97,    88,    87,    98,
2303       89,    91,    90,    80,    68,    46,   180,   222,   215,   214,
2304      216,     0,     0,   160,   142,   143,   225,    29,     0,     0,
2305      444,     0,     0,   452,     0,     0,     0,     0,     0,     0,
2306        0,     0,     0,     0,   405,     0,   213,     0,     0,     0,
2307        0,   417,   425,   256,   247,   258,   274,   196,     0,   213,
2308      206,     0,     0,   157,     0,   325,    71,    76,    77,    78,
2309       36,     0,     0,     0,    32,     0,   115,   116,   107,   108,
2310      109,   110,   111,   112,   113,   114,   100,     0,     0,    41,
2311      189,   217,   263,   158,   139,   148,   434,   437,     0,   447,
2312      450,   454,   458,   462,   466,   456,   460,   464,   468,     0,
2313        0,   475,     0,     0,   406,   413,   411,     0,   213,   275,
2314        0,   198,     0,     0,   205,   521,   203,    45,     0,   364,
2315      362,   363,    57,     0,     0,   365,     0,   171,   366,   360,
2316      361,   381,   382,   371,   372,   373,   374,   375,   376,   377,
2317      378,   379,   380,     0,    67,     0,   238,    47,   238,    52,
2318       51,     0,     0,     0,     0,     0,   166,    49,     0,    66,
2319       48,    45,     0,     0,    99,    45,   181,   219,   249,   250,
2320      248,   220,   263,   266,   264,     0,   523,     0,     0,     0,
2321      186,   416,   404,     0,     0,   271,   213,   211,   206,     0,
2322       46,     0,     0,   297,     0,     0,     0,    56,    55,     0,
2323        0,     0,     0,   172,     0,   167,     0,   173,   521,   163,
2324        0,     0,   238,     0,     0,    64,    61,   168,    58,   169,
2325       46,   103,   101,    46,   218,   225,   259,     0,   263,   242,
2326      438,     0,   451,   470,   472,   407,     0,     0,   253,     0,
2327      207,   208,    38,   165,   170,   123,   521,   523,   120,     0,
2328        0,   122,     0,     0,     0,     0,   117,    62,    59,   164,
2329        0,     0,     0,     0,    53,    50,     0,    63,    60,    34,
2330       43,   221,   243,   260,   445,   524,     0,   403,   418,   254,
2331      257,   199,     0,     0,   119,   118,   121,   150,     0,    54,
2332      255,   408,     0,   523,   125,    65,   244,     0,     0,   419,
2333      124
2334 };
2335
2336 /* YYDEFGOTO[NTERM-NUM].  */
2337 static const yytype_int16 yydefgoto[] =
2338 {
2339       -1,     1,     3,    86,    87,    88,   303,    89,   278,   706,
2340      276,   699,   294,   724,   705,   781,   867,   513,   611,   612,
2341      782,    90,   291,   153,   518,   519,   716,   508,   718,   797,
2342      883,   785,   719,   796,   917,   918,   968,    91,    92,    93,
2343       94,   300,   531,   734,   532,   533,   534,   631,   736,    95,
2344      872,    96,    97,   256,   873,   874,    98,    99,   100,   525,
2345      800,   257,   412,   258,   580,   756,   259,   413,   585,   241,
2346      260,   593,   594,   906,   876,   598,   438,   691,   690,   834,
2347      770,   595,   596,   769,   624,   625,   729,   887,   730,   731,
2348      945,   355,   416,   417,   588,   101,   261,   224,   196,   544,
2349      225,   226,   350,   891,  1010,   262,   684,   892,   263,  1000,
2350      764,   828,   947,   419,   893,   264,   421,   422,   423,   591,
2351      766,   592,   830,   439,   137,   138,   912,   103,   104,   105,
2352      106,   107,   168,   108,   308,   289,   317,   510,   700,   511,
2353      678,   109,   150,   227,   228,   229,   111,   112,   113,   114,
2354      679,   758,   755,   902,   996,   680,   760,   759,   757,   827,
2355     1012,   681,   682,   683,   115,   639,   326,   739,   895,   327,
2356      328,   643,   808,   644,   331,   742,   897,   647,   651,   648,
2357      652,   649,   653,   650,   654,   655,   656,   407,   497,   274,
2358      951,   498,   499,   500,   501,   502
2359 };
2360
2361 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2362    STATE-NUM.  */
2363 #define YYPACT_NINF -917
2364 static const yytype_int16 yypact[] =
2365 {
2366     -917,    52,  -917,  5135,  5259,  6825,  6259,    51,  -917,  -917,
2367     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2368     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,   -14,    98,
2369     6825,  5274,  -917,  -917,  5714,  -917,  -917,  5823,  6259,   -63,
2370     -917,  -917,    81,   264,   170,    55,  5932,  -917,   -44,   181,
2371      108,   132,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2372     -917,  -917,  -917,  -917,    38,    49,    53,    54,    64,    86,
2373      113,   122,   156,   158,   171,   172,   196,   198,   201,   209,
2374      215,   216,   219,   220,   224,  -917,  -917,  -917,  -917,    10,
2375       10,  -917,  6041,  -917,  5496,   134,   134,   134,   134,   134,
2376     -917,  -917,  6615,  6259,  -917,    15,  6368,   151,   188,  -917,
2377      147,  -917,  -917,  -917,  -917,  -917,   191,   206,   272,   387,
2378      395,   412,   413,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2379     -917,  -917,  -917,  -917,  -917,  -917,    36,  -917,  -917,  -917,
2380      229,  -917,   343,   343,   -22,   343,   343,     0,    22,   289,
2381      282,  -917,  -917,   240,  -917,  -917,  -917,   239,  -917,  5823,
2382      332,  6150,   249,  6259,  -917,   296,  -917,   251,   408,  -917,
2383     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,   -22,   300,
2384      301,   408,   408,     0,    22,   303,   310,   188,   271,  -917,
2385     -917,  -917,  -917,  -917,  4932,  -917,   138,  5714,  -917,  -917,
2386     6850,  -917,  -917,  -917,  6850,  6850,  -917,  6850,  6850,  6850,
2387     6850,  6850,  6850,  6850,  6850,  6850,  6850,  6850,  6850,  6850,
2388     6850,  -917,  -917,  -917,   278,  -917,  4819,  -917,    19,  -917,
2389      280,   281,   848,   848,  4819,    10,   134,   134,  6720,  -917,
2390     -917,  -917,  -917,  -917,  -917,  -917,   325,   300,   301,  6900,
2391      326,  -917,  -917,   327,   303,   310,  6795,  -917,  -917,  -917,
2392     -917,  -917,   279,  4456,   277,   -58,   330,  -917,  -917,  -917,
2393     -917,   408,  4606,  -917,  1000,  5605,   284,  5605,   284,  -917,
2394     -917,  -917,  -917,  -917,  -917,  -917,  -917,   408,  1154,  5605,
2395     6850,   295,  1308,  5605,   284,  6259,  -917,  -917,  4588,  -917,
2396     6585,  -917,  1462,   302,   304,   318,  -917,  1616,  5605,   166,
2397     -917,  -917,  -917,  -917,   308,  6850,  1770,  5605,  -917,  -917,
2398     -917,  -917,  -917,  -917,  -917,   311,  6850,  6850,  6850,   314,
2399      324,  6850,   335,   336,   338,   339,   340,   362,   368,   376,
2400      377,   378,   381,   391,   397,   393,  -917,   396,  -917,  -917,
2401     4819,  -917,  -917,  -917,  -917,   405,  -917,  6850,   407,   414,
2402      422,  -917,  -917,   -58,  1924,   389,   404,  -917,  -917,  -917,
2403     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2404     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2405     -917,   423,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2406     -917,  -917,  -917,  -917,  -917,   283,  -917,  -917,  -917,  -917,
2407     -917,   464,    40,    40,   184,  -917,  -917,  -917,  -917,   424,
2408     4819,  -917,  -917,  -917,  -917,  -917,  -917,  -917,    28,   -12,
2409        5,   139,   175,   123,   125,  6850,  -917,  -917,  -917,   426,
2410     -917,   469,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2411     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2412     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2413     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2414     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2415     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2416     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2417      425,   427,   351,   429,   428,   433,  -917,   431,   434,   432,
2418      430,  6850,  -917,   439,   443,   445,  6850,  -917,   488,  -917,
2419     -917,   444,   447,   533,  6850,  6850,  -917,  -917,  -917,  -917,
2420     -917,   448,  -917,   453,    15,  -917,  -917,   452,  -917,   451,
2421      450,   459,  -917,  -917,   454,  6477,  -917,  -917,  -917,  -917,
2422     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  6850,  -917,
2423     -917,  -917,  -917,  -917,  -917,  -917,   449,   455,  -917,  -917,
2424      462,  -917,  -917,   585,   586,  -917,  -917,  -917,  4768,  -917,
2425     -917,   458,   461,   445,  5605,  -917,  -917,   470,   463,  -917,
2426     4663,  2078,  2232,  2386,  2540,  2694,  -917,  -917,   408,   408,
2427      408,  -917,   465,  -917,  -917,  -917,  -917,  -917,  -917,  6850,
2428     4531,   468,  -917,  -917,   472,    41,  -917,  4693,  -917,  -917,
2429     6850,  -917,  -917,  -917,   474,  -917,  -917,  -917,  -917,  6259,
2430     -917,  -917,  -917,  6477,  6477,  -917,   482,  6477,  6477,  6477,
2431     6477,  6477,  6477,  6477,  6477,  6477,  6477,   477,  -917,  -917,
2432     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2433     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2434     -917,   481,   611,  -917,   144,  -917,   486,   483,  -917,   408,
2435     -917,   445,  6850,  -917,  -917,  -917,  -917,  -917,  -917,   284,
2436     5605,  -917,  -917,  -917,   351,    43,   284,    59,  -917,   -22,
2437        0,    22,  -917,  -917,  -917,  -917,   364,  -917,  -917,  -917,
2438     -917,   188,  -917,  -917,   284,    82,  -917,  -917,  -917,  -917,
2439      485,  6259,  6850,  -917,  6585,  -917,   279,  -917,   489,  6259,
2440     -917,   493,  6477,  -917,   494,   495,   496,   497,   498,   499,
2441      500,   501,   502,   503,  -917,   504,   445,  4803,  4768,   446,
2442      446,  -917,  -917,  -917,  -917,  -917,  4531,  -917,   506,   445,
2443      505,   507,   510,  -917,   487,  -917,  -917,  -917,  -917,  -917,
2444     -917,  3772,   508,   511,  -917,  4531,  -917,  -917,  -917,  -917,
2445     -917,  -917,  -917,  -917,  -917,  -917,  -917,  4531,   513,  -917,
2446       40,  -917,  5377,  -917,  -917,  -917,  -917,  -917,   509,  -917,
2447     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,   627,
2448      628,  -917,   516,   517,  -917,  -917,  -917,  6259,   445,  -917,
2449      512,  -917,   518,   408,  -917,  -917,  -917,  -917,  4294,    28,
2450      -12,     5,  -917,  3904,  4424,   139,   520,   607,   175,   123,
2451      125,   523,   524,   525,   526,   528,   529,   530,   532,   534,
2452      535,   538,   539,   540,  -917,  6850,    10,  -917,    10,  -917,
2453     -917,  4034,   134,   134,  6850,   134,  -917,  -917,  6690,  -917,
2454     -917,  -917,   542,  4531,  -917,  -917,  -917,    41,  -917,  -917,
2455     -917,  -917,   390,   277,  -917,   544,  -917,   545,   546,   547,
2456     -917,  -917,   543,   536,   550,  -917,   445,  -917,   505,  2848,
2457       97,  6850,  6850,   289,  4987,  6825,  4987,  -917,  -917,   243,
2458      134,   134,  6720,  -917,  6850,  -917,  4164,  -917,  -917,  -917,
2459      553,   555,    10,   134,   134,  -917,  -917,  -917,  -917,  -917,
2460      102,  -917,  -917,   107,  -917,   279,  -917,   554,  5377,  -917,
2461     -917,  3310,  -917,  -917,  -917,   557,   558,   556,   625,   562,
2462     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,   200,
2463      200,  -917,   200,  5008,  6850,  5008,  -917,  -917,  -917,  -917,
2464     4294,   563,  6850,  3002,  -917,  -917,   559,  -917,  -917,  -917,
2465     -917,  -917,  -917,  -917,  -917,  -917,  4768,  -917,  -917,  -917,
2466     -917,  -917,  3156,  3464,  -917,  -917,  -917,  -917,   566,  -917,
2467      144,  -917,  4803,  -917,  -917,  -917,  -917,   565,  3618,  -917,
2468     -917
2469 };
2470
2471 /* YYPGOTO[NTERM-NUM].  */
2472 static const yytype_int16 yypgoto[] =
2473 {
2474     -917,  -270,  -917,  -917,  -917,  -917,  -917,   -72,  -917,  -917,
2475     -917,  -917,  -917,  -917,  -587,  -917,  -917,  -273,    -2,  -917,
2476     -917,   -84,  -917,  -917,  -476,  -917,  -917,  -541,  -660,  -917,
2477     -917,  -917,  -917,  -917,  -917,  -227,  -680,   -78,  -917,   -77,
2478     -505,  -917,   -29,  -917,  -917,  -917,  -917,  -466,  -917,  -917,
2479     -917,   -27,  -917,  -917,  -750,  -917,  -917,   -70,   435,  -917,
2480     -917,  -146,  -917,  -917,  -917,  -917,  -250,  -917,  -399,   -81,
2481     -917,  -917,  -917,  -917,  -261,  -917,  -917,  -917,  -917,  -202,
2482     -125,  -501,  -917,  -917,  -532,  -917,  -175,  -917,  -917,  -917,
2483     -917,   480,  -690,  -917,  -917,   -71,  -182,   -83,     2,  -917,
2484      173,  -917,  -917,  -837,  -917,  -177,  -917,  -917,  -917,  -917,
2485     -296,  -917,  -917,  -917,  -917,  -761,  -178,  -661,  -917,  -917,
2486     -917,  -917,  -917,    -4,  -917,  -917,     1,   -35,    90,  -111,
2487      613,   612,  -917,   -33,  -917,  -917,  -917,  -246,  -917,  -917,
2488      131,   -10,    31,   -86,  -917,   514,  -180,  -291,     8,  -232,
2489     -726,  -917,  -181,  -917,  -917,  -727,  -917,  -917,  -917,  -917,
2490     -917,  -917,  -917,  -630,   -59,  -917,  -917,  -917,  -917,  -917,
2491     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,
2492     -917,  -917,  -917,  -917,  -917,  -917,  -917,  -917,   519,   -98,
2493     -916,  -917,  -877,  -917,  -917,  -917
2494 };
2495
2496 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
2497    positive, shift that token.  If negative, reduce the rule which
2498    number is the opposite.  If zero, do what YYDEFACT says.
2499    If YYTABLE_NINF, syntax error.  */
2500 #define YYTABLE_NINF -406
2501 static const yytype_int16 yytable[] =
2502 {
2503      136,   140,   163,   286,   102,   515,   410,   230,   233,   535,
2504      187,   437,   139,   141,   586,   242,   243,   244,   245,   268,
2505      232,   524,   235,   765,   237,   626,   154,   157,   630,   707,
2506      823,   514,   824,   189,   110,   162,   725,   527,   155,   158,
2507      543,   894,   496,   517,   348,   621,   805,   523,   777,   778,
2508      779,  1003,     2,   288,   221,   946,   496,   359,   292,   221,
2509      496,   686,   541,   221,   777,   778,   779,   236,   165,   633,
2510      496,   547,  -339,   177,   995,   496,   167,   424,   302,   717,
2511     -343,   425,  -343,   582,   496,   583,   418,   777,   778,   779,
2512      169,   197,   307,   920,  -341,   238,   149,  1018,   265,  -342,
2513      316,   727,   777,   778,   779,   192,   829,   777,   778,   779,
2514      409,   993,   777,   778,   779,   193,  -340,   152,   170,   171,
2515     -343,   933,  -339,  -280,   163,   882,   995,   164,   166,   825,
2516      826,   894,   496,   266,   728,   187,   195,   884,   172,   191,
2517     -279,   995,   364,   708,  -233,  -339,   357,   357,   187,   187,
2518      139,   141,   360,   155,   158,   361,   362,   222,   189,   772,
2519      223,   199,   222,  -278,   735,   223,   222,   152,   569,   351,
2520      314,   189,   189,   200,   188,   275,   981,   420,   173,   174,
2521      175,   780,   234,   584,   201,  -339,   151,   894,   202,   203,
2522      152,   773,  -342,   267,    33,   309,   325,   784,   315,   204,
2523      329,   330,  -344,   332,   333,   334,   335,   336,   337,   338,
2524      339,   340,   341,   342,   343,   344,   345,  -344,   176,  -345,
2525      799,   205,   349,   942,   822,   717,  -345,   347,   356,   356,
2526      349,   803,  -342,  -341,   363,   962,   971,   832,   187,   187,
2527      989,   272,  -344,   590,   717,   990,   973,   974,   206,   164,
2528      910,   195,   363,   297,   187,   991,   717,   207,  -281,   349,
2529     -282,   189,   189,   414,  -341,   187,  -345,   634,   239,  -340,
2530     1011,   240,   312,   178,  -276,  -340,   871,   189,   191,   763,
2531      313,   273,   271,   975,   311,  1017,   520,   411,   189,  1004,
2532     1005,   208,  1006,   209,   940,   971,   904,  -268,   943,   301,
2533      542,   179,   180,   441,  -341,   190,   210,   211,   313,   191,
2534     -277,   363,   304,   305,   199,  -340,   198,   181,   587,   182,
2535      199,   183,   549,   550,   551,  -278,   313,   554,  -278,   528,
2536     -278,   212,  -278,   213,   965,   249,   214,   966,   919,   693,
2537     -280,   967,   717,  -280,   215,  -280,   349,  -280,   687,   765,
2538      216,   217,   279,   571,   218,   219,   608,   609,   610,   220,
2539      178,   184,   185,   186,   929,   509,   733,   509,   277,   496,
2540      496,   496,   496,   496,   959,   646,   287,   290,   293,   509,
2541      280,   281,   192,   509,   296,   311,   601,   602,   179,   180,
2542      298,   299,   603,   604,  -343,  -342,   605,  -344,   509,   318,
2543      282,   886,   427,   440,  -345,   306,  -279,   509,   183,  -279,
2544      963,  -279,   346,  -279,   353,   354,   349,   178,   440,  -339,
2545     -341,  -340,   415,   979,   426,   512,   774,   319,   320,   440,
2546     -268,   597,   521,   783,   221,   786,   787,   579,   538,   537,
2547      283,   284,   285,   535,   545,   179,   180,   321,   184,   185,
2548      186,   798,   539,   548,   775,   178,   552,   664,   665,   666,
2549      667,   668,   669,   740,   741,   183,   553,   744,   745,   746,
2550      747,   748,   749,   750,   751,   752,   753,   555,   556,   187,
2551      557,   558,   559,   179,   180,   888,   889,   322,   323,   324,
2552      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
2553      133,   134,   189,   183,   560,   184,   185,   186,   788,   789,
2554      561,   790,   791,   792,   793,   794,   795,   520,   562,   563,
2555      564,  -276,   597,   565,  -276,   890,  -276,   566,  -276,  -277,
2556      632,   632,  -277,   567,  -277,   568,  -277,   222,   313,   570,
2557      223,   572,   576,   184,   185,   186,  -281,  -282,   573,  -281,
2558     -282,  -281,  -282,  -281,  -282,   187,   574,   577,   581,   578,
2559      589,   599,   810,   600,   657,   606,   614,   187,   615,   607,
2560      616,   617,   618,   620,   619,   187,   187,   187,   189,   622,
2561      623,  -212,   627,   925,   628,    39,   641,   721,   635,   629,
2562      189,   636,   638,   640,   187,   642,   645,   660,   189,   189,
2563      189,   661,   662,   658,   689,   688,   723,   704,   726,   659,
2564      722,  -273,   737,   937,   685,   520,   720,   189,   743,   754,
2565      761,   762,   767,   768,   837,   806,   632,   801,   939,   809,
2566      811,   812,   813,   814,   815,   816,   817,   818,   898,   899,
2567      821,   831,   835,   613,   819,   820,   836,   833,   881,   880,
2568      885,   896,   900,   901,   907,   926,   187,   927,  -295,  -296,
2569     -285,  -286,   964,  -287,  -288,  -289,   905,  -290,   999,  -291,
2570     -292,   187,   939,  -293,  -294,   928,   957,   496,   941,   189,
2571      950,   952,   953,   954,   509,   955,   958,   984,   597,   985,
2572      992,   998,   976,  1009,   189,  -405,   997,   868,  1001,  1007,
2573     1015,  1019,   776,   869,   870,   804,   960,   436,   908,   866,
2574      877,   875,   944,   358,  1016,   949,   903,   637,   269,   496,
2575      270,   956,   879,     0,   187,   187,   187,   187,   597,   738,
2576        0,   440,   939,   721,     0,     0,     0,   909,     0,   701,
2577      702,   703,   352,     0,     0,     0,     0,   189,   189,   189,
2578      189,   496,   721,     0,     0,     0,   722,     0,   440,     0,
2579        0,     0,   720,     0,   721,     0,     0,   286,   408,     0,
2580      496,   496,     0,   921,     0,   722,     0,     0,     0,     0,
2581        0,   720,   878,   930,     0,   931,   496,   722,     0,     0,
2582      509,   935,   936,   720,   938,     0,     0,     0,   349,   932,
2583      187,   934,     0,     0,     0,     0,   948,     0,     0,   163,
2584        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2585      771,   802,     0,   189,     0,     0,     0,     0,     0,   807,
2586      983,     0,     0,     0,     0,   613,     0,     0,     0,   977,
2587      978,     0,     0,     0,   922,     0,     0,     0,     0,   986,
2588      721,     0,   987,   988,     0,     0,     0,   318,     0,     0,
2589        0,   597,     0,     0,     0,     0,     0,     0,  1002,     0,
2590        0,     0,   922,   722,   265,     0,     0,     0,     0,   720,
2591        0,     0,     0,     0,     0,   319,   320,     0,   349,     0,
2592        0,     0,   221,     0,     0,     0,     0,     0,     0,     0,
2593        0,     0,     0,     0,     0,   321,     0,   597,   363,     0,
2594      969,   970,   972,     0,     0,     0,     0,     0,   363,     0,
2595      597,     0,   139,   141,   158,     0,     0,   982,   913,     0,
2596        0,     0,     0,     0,   164,     0,     0,     0,     0,     0,
2597        0,     0,     0,     0,   349,   322,   323,   324,   123,   124,
2598      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
2599        0,     0,     0,   187,   771,     0,     0,     0,     0,   969,
2600      970,   972,     0,     0,     0,     0,     0,     0,   363,   187,
2601        0,     0,     0,     0,     0,     0,   189,     0,     0,     0,
2602        0,     0,     0,     0,     0,   222,     0,     0,   223,     0,
2603        0,     0,   189,   442,   443,   444,   445,   446,   447,   448,
2604      449,   450,   451,   452,   453,   454,   455,     8,     9,    10,
2605       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
2606       21,    22,    23,    24,    25,    26,    27,   456,   457,   458,
2607      459,   460,   461,   462,   463,   464,   465,    35,    36,     0,
2608      466,     0,   467,   468,   469,   470,   471,   472,   473,   474,
2609      475,     0,   476,   477,     0,   478,   479,   480,   481,   367,
2610      368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
2611      378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
2612      388,   389,   390,   482,   483,   484,   485,   486,   487,   488,
2613       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
2614       62,    63,     0,     0,     0,     0,     0,     0,     0,     0,
2615        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2616        0,     0,     0,     0,   489,   490,     0,   491,   492,   392,
2617      393,   493,   394,   395,   396,   397,   398,   399,   400,   401,
2618      402,   403,   404,   494,     0,   406,   495,   442,   443,   444,
2619      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
2620      455,     8,     9,    10,    11,    12,    13,    14,    15,    16,
2621       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
2622       27,   456,   457,   458,   459,   460,   461,   462,   463,   464,
2623      465,    35,    36,     0,   466,     0,   467,   468,   469,   470,
2624      471,   472,   473,   474,   475,     0,   476,   477,     0,   478,
2625      479,   480,   481,   367,   368,   369,   370,   371,   372,   373,
2626      374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
2627      384,   385,   386,   387,   388,   389,   390,   482,   483,   484,
2628      485,   486,   487,   488,    52,    53,    54,    55,    56,    57,
2629       58,    59,    60,    61,    62,    63,     0,     0,     0,     0,
2630        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2631        0,     0,     0,     0,     0,     0,     0,     0,   489,   490,
2632      516,   491,     0,   392,   393,   493,   394,   395,   396,   397,
2633      398,   399,   400,   401,   402,   403,   404,   494,     0,   406,
2634      495,   442,   443,   444,   445,   446,   447,   448,   449,   450,
2635      451,   452,   453,   454,   455,     8,     9,    10,    11,    12,
2636       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
2637       23,    24,    25,    26,    27,   456,   457,   458,   459,   460,
2638      461,   462,   463,   464,   465,    35,    36,     0,   466,     0,
2639      467,   468,   469,   470,   471,   472,   473,   474,   475,     0,
2640      476,   477,     0,   478,   479,   480,   481,   367,   368,   369,
2641      370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
2642      380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
2643      390,   482,   483,   484,   485,   486,   487,   488,    52,    53,
2644       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
2645        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2646        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2647        0,     0,   489,   490,     0,   491,   522,   392,   393,   493,
2648      394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
2649      404,   494,     0,   406,   495,   442,   443,   444,   445,   446,
2650      447,   448,   449,   450,   451,   452,   453,   454,   455,     8,
2651        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
2652       19,    20,    21,    22,    23,    24,    25,    26,    27,   456,
2653      457,   458,   459,   460,   461,   462,   463,   464,   465,    35,
2654       36,     0,   466,     0,   467,   468,   469,   470,   471,   472,
2655      473,   474,   475,     0,   476,   477,     0,   478,   479,   480,
2656      481,   367,   368,   369,   370,   371,   372,   373,   374,   375,
2657      376,   377,   378,   379,   380,   381,   382,   383,   384,   385,
2658      386,   387,   388,   389,   390,   482,   483,   484,   485,   486,
2659      487,   488,    52,    53,    54,    55,    56,    57,    58,    59,
2660       60,    61,    62,    63,     0,     0,     0,     0,     0,     0,
2661        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2662        0,     0,     0,     0,     0,     0,   489,   490,     0,   491,
2663      536,   392,   393,   493,   394,   395,   396,   397,   398,   399,
2664      400,   401,   402,   403,   404,   494,     0,   406,   495,   442,
2665      443,   444,   445,   446,   447,   448,   449,   450,   451,   452,
2666      453,   454,   455,     8,     9,    10,    11,    12,    13,    14,
2667       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
2668       25,    26,    27,   456,   457,   458,   459,   460,   461,   462,
2669      463,   464,   465,    35,    36,     0,   466,     0,   467,   468,
2670      469,   470,   471,   472,   473,   474,   475,     0,   476,   477,
2671        0,   478,   479,   480,   481,   367,   368,   369,   370,   371,
2672      372,   373,   374,   375,   376,   377,   378,   379,   380,   381,
2673      382,   383,   384,   385,   386,   387,   388,   389,   390,   482,
2674      483,   484,   485,   486,   487,   488,    52,    53,    54,    55,
2675       56,    57,    58,    59,    60,    61,    62,    63,     0,     0,
2676        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2677        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2678      489,   490,   540,   491,     0,   392,   393,   493,   394,   395,
2679      396,   397,   398,   399,   400,   401,   402,   403,   404,   494,
2680        0,   406,   495,   442,   443,   444,   445,   446,   447,   448,
2681      449,   450,   451,   452,   453,   454,   455,     8,     9,    10,
2682       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
2683       21,    22,    23,    24,    25,    26,    27,   456,   457,   458,
2684      459,   460,   461,   462,   463,   464,   465,    35,    36,     0,
2685      466,     0,   467,   468,   469,   470,   471,   472,   473,   474,
2686      475,     0,   476,   477,     0,   478,   479,   480,   481,   367,
2687      368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
2688      378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
2689      388,   389,   390,   482,   483,   484,   485,   486,   487,   488,
2690       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
2691       62,    63,     0,     0,     0,     0,     0,     0,     0,     0,
2692        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2693        0,     0,     0,     0,   489,   490,   546,   491,     0,   392,
2694      393,   493,   394,   395,   396,   397,   398,   399,   400,   401,
2695      402,   403,   404,   494,     0,   406,   495,   442,   443,   444,
2696      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
2697      455,     8,     9,    10,    11,    12,    13,    14,    15,    16,
2698       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
2699       27,   456,   457,   458,   459,   460,   461,   462,   463,   464,
2700      465,    35,    36,     0,   466,     0,   467,   468,   469,   470,
2701      471,   472,   473,   474,   475,     0,   476,   477,     0,   478,
2702      479,   480,   481,   367,   368,   369,   370,   371,   372,   373,
2703      374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
2704      384,   385,   386,   387,   388,   389,   390,   482,   483,   484,
2705      485,   486,   487,   488,    52,    53,    54,    55,    56,    57,
2706       58,    59,    60,    61,    62,    63,     0,     0,     0,     0,
2707        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2708        0,     0,     0,     0,     0,     0,     0,     0,   489,   490,
2709        0,   491,   575,   392,   393,   493,   394,   395,   396,   397,
2710      398,   399,   400,   401,   402,   403,   404,   494,     0,   406,
2711      495,   442,   443,   444,   445,   446,   447,   448,   449,   450,
2712      451,   452,   453,   454,   455,     8,     9,    10,    11,    12,
2713       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
2714       23,    24,    25,    26,    27,   456,   457,   458,   459,   460,
2715      461,   462,   463,   464,   465,    35,    36,     0,   466,     0,
2716      467,   468,   469,   470,   471,   472,   473,   474,   475,     0,
2717      476,   477,     0,   478,   479,   480,   481,   367,   368,   369,
2718      370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
2719      380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
2720      390,   482,   483,   484,   485,   486,   487,   488,    52,    53,
2721       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
2722        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2723        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2724        0,     0,   489,   490,   694,   491,     0,   392,   393,   493,
2725      394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
2726      404,   494,     0,   406,   495,   442,   443,   444,   445,   446,
2727      447,   448,   449,   450,   451,   452,   453,   454,   455,     8,
2728        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
2729       19,    20,    21,    22,    23,    24,    25,    26,    27,   456,
2730      457,   458,   459,   460,   461,   462,   463,   464,   465,    35,
2731       36,     0,   466,     0,   467,   468,   469,   470,   471,   472,
2732      473,   474,   475,     0,   476,   477,     0,   478,   479,   480,
2733      481,   367,   368,   369,   370,   371,   372,   373,   374,   375,
2734      376,   377,   378,   379,   380,   381,   382,   383,   384,   385,
2735      386,   387,   388,   389,   390,   482,   483,   484,   485,   486,
2736      487,   488,    52,    53,    54,    55,    56,    57,    58,    59,
2737       60,    61,    62,    63,     0,     0,     0,     0,     0,     0,
2738        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2739        0,     0,     0,     0,     0,     0,   489,   490,   695,   491,
2740        0,   392,   393,   493,   394,   395,   396,   397,   398,   399,
2741      400,   401,   402,   403,   404,   494,     0,   406,   495,   442,
2742      443,   444,   445,   446,   447,   448,   449,   450,   451,   452,
2743      453,   454,   455,     8,     9,    10,    11,    12,    13,    14,
2744       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
2745       25,    26,    27,   456,   457,   458,   459,   460,   461,   462,
2746      463,   464,   465,    35,    36,     0,   466,     0,   467,   468,
2747      469,   470,   471,   472,   473,   474,   475,     0,   476,   477,
2748        0,   478,   479,   480,   481,   367,   368,   369,   370,   371,
2749      372,   373,   374,   375,   376,   377,   378,   379,   380,   381,
2750      382,   383,   384,   385,   386,   387,   388,   389,   390,   482,
2751      483,   484,   485,   486,   487,   488,    52,    53,    54,    55,
2752       56,    57,    58,    59,    60,    61,    62,    63,     0,     0,
2753        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2754        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2755      489,   490,   696,   491,     0,   392,   393,   493,   394,   395,
2756      396,   397,   398,   399,   400,   401,   402,   403,   404,   494,
2757        0,   406,   495,   442,   443,   444,   445,   446,   447,   448,
2758      449,   450,   451,   452,   453,   454,   455,     8,     9,    10,
2759       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
2760       21,    22,    23,    24,    25,    26,    27,   456,   457,   458,
2761      459,   460,   461,   462,   463,   464,   465,    35,    36,     0,
2762      466,     0,   467,   468,   469,   470,   471,   472,   473,   474,
2763      475,     0,   476,   477,     0,   478,   479,   480,   481,   367,
2764      368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
2765      378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
2766      388,   389,   390,   482,   483,   484,   485,   486,   487,   488,
2767       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
2768       62,    63,     0,     0,     0,     0,     0,     0,     0,     0,
2769        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2770        0,     0,     0,     0,   489,   490,     0,   491,   697,   392,
2771      393,   493,   394,   395,   396,   397,   398,   399,   400,   401,
2772      402,   403,   404,   494,     0,   406,   495,   442,   443,   444,
2773      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
2774      455,     8,     9,    10,    11,    12,    13,    14,    15,    16,
2775       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
2776       27,   456,   457,   458,   459,   460,   461,   462,   463,   464,
2777      465,    35,    36,     0,   466,     0,   467,   468,   469,   470,
2778      471,   472,   473,   474,   475,     0,   476,   477,     0,   478,
2779      479,   480,   481,   367,   368,   369,   370,   371,   372,   373,
2780      374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
2781      384,   385,   386,   387,   388,   389,   390,   482,   483,   484,
2782      485,   486,   487,   488,    52,    53,    54,    55,    56,    57,
2783       58,    59,    60,    61,    62,    63,     0,     0,     0,     0,
2784        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2785        0,     0,     0,     0,     0,     0,     0,     0,   489,   490,
2786        0,   491,     0,   392,   393,   493,   394,   395,   396,   397,
2787      398,   399,   400,   401,   402,   403,   404,   494,   698,   406,
2788      495,   442,   443,   444,   445,   446,   447,   448,   449,   450,
2789      451,   452,   453,   454,   455,     8,     9,    10,    11,    12,
2790       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
2791       23,    24,    25,    26,    27,   456,   457,   458,   459,   460,
2792      461,   462,   463,   464,   465,    35,    36,     0,   466,     0,
2793      467,   468,   469,   470,   471,   472,   473,   474,   475,     0,
2794      476,   477,     0,   478,   479,   480,   481,   367,   368,   369,
2795      370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
2796      380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
2797      390,   482,   483,   484,   485,   486,   487,   488,    52,    53,
2798       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
2799        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2800        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2801        0,     0,   489,   490,   961,   491,     0,   392,   393,   493,
2802      394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
2803      404,   494,     0,   406,   495,   442,   443,   444,   445,   446,
2804      447,   448,   449,   450,   451,   452,   453,   454,   455,     8,
2805        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
2806       19,    20,    21,    22,    23,    24,    25,    26,    27,   456,
2807      457,   458,   459,   460,   461,   462,   463,   464,   465,    35,
2808       36,     0,   466,     0,   467,   468,   469,   470,   471,   472,
2809      473,   474,   475,     0,   476,   477,     0,   478,   479,   480,
2810      481,   367,   368,   369,   370,   371,   372,   373,   374,   375,
2811      376,   377,   378,   379,   380,   381,   382,   383,   384,   385,
2812      386,   387,   388,   389,   390,   482,   483,   484,   485,   486,
2813      487,   488,    52,    53,    54,    55,    56,    57,    58,    59,
2814       60,    61,    62,    63,     0,     0,     0,     0,     0,     0,
2815        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2816        0,     0,     0,     0,     0,     0,   489,   490,  1008,   491,
2817        0,   392,   393,   493,   394,   395,   396,   397,   398,   399,
2818      400,   401,   402,   403,   404,   494,     0,   406,   495,   442,
2819      443,   444,   445,   446,   447,   448,   449,   450,   451,   452,
2820      453,   454,   455,     8,     9,    10,    11,    12,    13,    14,
2821       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
2822       25,    26,    27,   456,   457,   458,   459,   460,   461,   462,
2823      463,   464,   465,    35,    36,     0,   466,     0,   467,   468,
2824      469,   470,   471,   472,   473,   474,   475,     0,   476,   477,
2825        0,   478,   479,   480,   481,   367,   368,   369,   370,   371,
2826      372,   373,   374,   375,   376,   377,   378,   379,   380,   381,
2827      382,   383,   384,   385,   386,   387,   388,   389,   390,   482,
2828      483,   484,   485,   486,   487,   488,    52,    53,    54,    55,
2829       56,    57,    58,    59,    60,    61,    62,    63,     0,     0,
2830        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2831        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2832      489,   490,     0,   491,  1013,   392,   393,   493,   394,   395,
2833      396,   397,   398,   399,   400,   401,   402,   403,   404,   494,
2834        0,   406,   495,   442,   443,   444,   445,   446,   447,   448,
2835      449,   450,   451,   452,   453,   454,   455,     8,     9,    10,
2836       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
2837       21,    22,    23,    24,    25,    26,    27,   456,   457,   458,
2838      459,   460,   461,   462,   463,   464,   465,    35,    36,     0,
2839      466,     0,   467,   468,   469,   470,   471,   472,   473,   474,
2840      475,     0,   476,   477,     0,   478,   479,   480,   481,   367,
2841      368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
2842      378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
2843      388,   389,   390,   482,   483,   484,   485,   486,   487,   488,
2844       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
2845       62,    63,     0,     0,     0,     0,     0,     0,     0,     0,
2846        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2847        0,     0,     0,     0,     0,   490,   994,   491,     0,   392,
2848      393,   493,   394,   395,   396,   397,   398,   399,   400,   401,
2849      402,   403,   404,   494,     0,   406,   495,   442,   443,   444,
2850      445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
2851      455,     8,     9,    10,    11,    12,    13,    14,    15,    16,
2852       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
2853       27,   456,   457,   458,   459,   460,   461,   462,   463,   464,
2854      465,    35,    36,     0,   466,     0,   467,   468,   469,   470,
2855      471,   472,   473,   474,   475,     0,   476,   477,     0,   478,
2856      479,   480,   481,   367,   368,   369,   370,   371,   372,   373,
2857      374,   375,   376,   377,   378,   379,   380,   381,   382,   383,
2858      384,   385,   386,   387,   388,   389,   390,   482,   483,   484,
2859      485,   486,   487,   488,    52,    53,    54,    55,    56,    57,
2860       58,    59,    60,    61,    62,    63,     0,     0,     0,     0,
2861        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2862        0,     0,     0,     0,     0,     0,     0,     0,  1014,   490,
2863        0,   491,     0,   392,   393,   493,   394,   395,   396,   397,
2864      398,   399,   400,   401,   402,   403,   404,   494,     0,   406,
2865      495,   442,   443,   444,   445,   446,   447,   448,   449,   450,
2866      451,   452,   453,   454,   455,     8,     9,    10,    11,    12,
2867       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
2868       23,    24,    25,    26,    27,   456,   457,   458,   459,   460,
2869      461,   462,   463,   464,   465,    35,    36,     0,   466,     0,
2870      467,   468,   469,   470,   471,   472,   473,   474,   475,     0,
2871      476,   477,     0,   478,   479,   480,   481,   367,   368,   369,
2872      370,   371,   372,   373,   374,   375,   376,   377,   378,   379,
2873      380,   381,   382,   383,   384,   385,   386,   387,   388,   389,
2874      390,   482,   483,   484,   485,   486,   487,   488,    52,    53,
2875       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
2876        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2877        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2878        0,     0,  1020,   490,     0,   491,     0,   392,   393,   493,
2879      394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
2880      404,   494,     0,   406,   495,     4,     5,     0,     0,     0,
2881      838,   839,     0,     0,     0,     0,     0,     0,     0,     8,
2882        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
2883       19,    20,    21,    22,    23,    24,    25,    26,    27,   840,
2884      841,    30,    31,   842,     0,    33,     0,     0,    34,    35,
2885       36,   843,   844,    38,    39,    40,    41,     0,    43,   845,
2886       45,   161,    47,   846,     0,     0,   847,     0,     0,     0,
2887        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2888        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2889        0,     0,     0,     0,     0,     0,     0,     0,     0,   848,
2890      849,   850,   851,   852,   853,   854,   855,   856,   857,   858,
2891      859,   860,   861,   862,    64,    65,    66,    67,    68,    69,
2892       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
2893       80,    81,    82,    83,    84,   863,   864,   914,   915,     0,
2894        0,     0,   838,   839,     0,     0,     0,     0,   865,     0,
2895        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
2896       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
2897       27,   840,   841,   145,   916,     0,     0,    33,     0,     0,
2898       34,    35,    36,     0,   844,    38,    39,    40,     0,     0,
2899        0,   845,   160,   161,     0,     0,     0,     0,   847,     0,
2900        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2901        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2902        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2903        0,   848,   849,   850,   851,   852,   853,   854,   855,   856,
2904      857,   858,   859,   860,   861,   862,     0,     0,     0,     0,
2905        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2906        0,     0,     0,     0,     0,     0,     0,     4,     5,     0,
2907        0,     0,   838,   839,     0,     0,     0,     0,     0,     0,
2908      865,     8,     9,    10,    11,    12,    13,    14,    15,    16,
2909       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
2910       27,   840,   841,   145,    31,     0,     0,    33,     0,     0,
2911       34,    35,    36,     0,   844,    38,     0,    40,     0,     0,
2912        0,   845,   160,   161,     0,     0,     0,     0,   847,     0,
2913        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2914        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2915        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2916        0,   848,   849,   850,   851,   852,   853,   854,   855,   856,
2917      857,   858,   859,   860,   861,   862,     0,     0,     0,     0,
2918        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2919        0,     0,     0,     0,     0,     0,     0,   142,   143,     0,
2920        0,     0,   980,   839,     0,     0,     0,     0,     0,     0,
2921      865,     8,     9,    10,    11,    12,    13,    14,    15,    16,
2922       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
2923       27,   840,   841,   145,   146,     0,     0,    33,     0,     0,
2924        0,    35,    36,     0,   844,    38,     0,    40,     0,     0,
2925        0,   845,   160,   161,     0,     0,     0,     0,   847,     0,
2926        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2927        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2928        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2929        0,   848,   849,   850,   851,   852,   853,   854,   855,   856,
2930      857,   858,   859,   860,   861,   862,     0,     0,     0,     0,
2931        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2932        0,     0,     0,     0,     0,     0,     0,   142,   143,     0,
2933        0,     0,     0,   144,     0,     0,     0,     0,     0,     0,
2934      865,     8,     9,    10,    11,    12,    13,    14,    15,    16,
2935       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
2936       27,    28,    29,   145,   146,     0,     0,    33,     0,     0,
2937        0,    35,    36,     0,   159,    38,     0,    40,     0,     0,
2938        0,   147,   160,   161,     0,     0,     0,     0,     0,     0,
2939        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2940        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2941        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2942        0,   148,    50,    51,    52,    53,    54,    55,    56,    57,
2943       58,    59,    60,    61,    62,    63,     0,     0,     0,     0,
2944        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2945        0,     0,     0,     0,     0,     0,     0,   142,   143,     0,
2946        0,     0,     0,   839,     0,     0,     0,     0,     0,     0,
2947      911,     8,     9,    10,    11,    12,    13,    14,    15,    16,
2948       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
2949       27,   840,   841,   145,   146,   318,     0,    33,     0,     0,
2950        0,    35,    36,     0,     0,     0,     0,    40,     0,     0,
2951        0,   845,   160,     0,     0,     0,     0,     0,   923,     0,
2952        0,     0,     0,   319,   320,     0,     0,     0,     0,     0,
2953      221,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2954        0,     0,     0,   321,     0,     0,     0,     0,     0,     0,
2955        0,   848,   849,   850,   851,   852,   853,   854,   855,   856,
2956      857,   858,   859,   860,   861,   862,     0,     0,     0,     0,
2957      709,     0,   503,   504,   505,     0,   506,   507,     0,     0,
2958        0,   251,   252,   322,   323,   324,   123,   124,   125,   126,
2959      127,   128,   129,   130,   131,   132,   133,   134,   247,   248,
2960      924,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2961        0,     0,     0,     0,     0,     0,     0,     0,   710,     0,
2962        0,     0,     0,     0,     0,     0,     0,   428,     0,     0,
2963        0,     0,     0,   222,     0,     0,   223,     0,     0,     0,
2964        0,     0,     0,     0,     0,   428,     0,     0,     0,     0,
2965        0,     0,     0,     0,     0,   429,   430,     0,   711,   254,
2966      255,   123,   124,   125,   126,   127,   128,   129,   130,   131,
2967      132,   133,   134,   429,   430,   431,     0,     0,     0,     0,
2968        0,     0,    34,     0,     0,     0,     0,     0,     0,     0,
2969        0,     0,     0,   431,     0,     0,   712,     0,     0,     0,
2970        0,     0,   428,     0,     0,   713,   714,   715,     0,     0,
2971        0,     0,     0,     0,     0,   432,   433,   434,   123,   124,
2972      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
2973      429,   430,   428,   432,   433,   434,   123,   124,   125,   126,
2974      127,   128,   129,   130,   131,   132,   133,   134,     0,     0,
2975      431,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2976      429,   430,     0,     0,   526,     0,     0,     0,     0,     0,
2977        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2978      431,     0,   435,     0,     0,     0,     0,     0,     0,     0,
2979      432,   433,   434,   123,   124,   125,   126,   127,   128,   129,
2980      130,   131,   132,   133,   134,     0,     0,   178,   663,   664,
2981      665,   666,   667,   668,   669,     0,     0,     0,     0,     0,
2982      432,   433,   434,   123,   124,   125,   126,   127,   128,   129,
2983      130,   131,   132,   133,   134,   179,   180,     0,     0,   692,
2984        0,     0,   178,   663,   664,   665,   666,   667,   668,   669,
2985        0,     0,     0,     0,     0,   183,     0,     0,   318,     0,
2986        0,     0,     0,   670,   671,   672,   673,     0,     0,   732,
2987      179,   180,     0,     0,     0,     0,     0,     0,     0,     0,
2988        0,     0,     0,     0,     0,     0,   319,   320,     0,     0,
2989      183,     0,     0,     0,     0,   184,   185,   186,   670,   671,
2990      672,   673,     0,     0,     0,     0,   321,     0,     0,     0,
2991        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2992        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
2993      184,   185,   186,   674,     0,   675,     0,     0,     0,     0,
2994        0,     0,   676,   677,   251,   252,   322,   323,   324,   123,
2995      124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
2996      134,     0,     0,     0,     0,   142,   143,     0,   674,     0,
2997        0,   144,     0,     0,     0,     0,     0,   676,   677,     8,
2998        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
2999       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
3000       29,   145,   146,     0,     0,    33,     0,     0,     0,    35,
3001       36,     0,     0,     0,     0,    40,     0,     0,     0,   147,
3002        0,     0,     0,     0,     0,     0,   116,     0,     0,     0,
3003        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3004        0,     0,     0,     0,     0,     0,     0,   318,     0,     0,
3005        0,     0,     0,     0,   117,   118,     0,     0,     0,   148,
3006       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
3007       60,    61,    62,    63,   119,   319,   320,     0,     0,     0,
3008        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3009        0,     0,     0,     0,     0,   321,     0,     0,     0,   310,
3010        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3011        0,     0,     0,     0,   120,   121,   122,   123,   124,   125,
3012      126,   127,   128,   129,   130,   131,   132,   133,   134,     0,
3013        0,     0,     0,     0,     0,   322,   323,   324,   123,   124,
3014      125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
3015        0,   965,     0,     0,   966,     0,     0,     0,   967,     0,
3016        0,     0,     0,     0,     0,     0,     0,     0,     4,     5,
3017        0,     0,   965,     6,     7,   966,     0,     0,     0,   967,
3018        0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
3019       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3020       26,    27,    28,    29,    30,    31,    32,     0,    33,     0,
3021        0,    34,    35,    36,     0,    37,    38,    39,    40,    41,
3022       42,    43,    44,    45,    46,    47,    48,     0,     0,     0,
3023        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3024        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3025        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3026        0,     0,    49,    50,    51,    52,    53,    54,    55,    56,
3027       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
3028       67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
3029       77,    78,    79,    80,    81,    82,    83,    84,   116,    85,
3030        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3031        0,     0,     0,   116,     0,     0,     0,     0,     0,     0,
3032        0,     0,     0,     0,     0,     0,   117,   118,     0,     0,
3033        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3034        0,   117,   118,     0,     0,     0,   119,     0,     0,     0,
3035        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3036        0,   119,     0,     0,     0,     0,     0,     0,     0,     0,
3037        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3038        0,     0,     0,     0,     0,     0,   120,   121,   122,   123,
3039      124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
3040      134,   120,   121,   122,   123,   124,   125,   126,   127,   128,
3041      129,   130,   131,   132,   133,   134,   318,     0,     0,     0,
3042        0,     0,     0,     0,     0,     0,   135,     0,     0,     0,
3043        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3044        0,   156,     0,     0,   319,   320,     0,     0,     0,     0,
3045        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3046        0,     0,     0,     0,   321,     0,     0,     0,     0,     0,
3047        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3048        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3049        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3050        0,     0,   888,   889,   322,   323,   324,   123,   124,   125,
3051      126,   127,   128,   129,   130,   131,   132,   133,   134,     0,
3052        0,     0,     0,     0,     0,     0,     0,     0,     0,     4,
3053        5,     0,     0,     0,     6,   144,     0,     0,     0,     0,
3054        0,     0,   890,     8,     9,    10,    11,    12,    13,    14,
3055       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
3056       25,    26,    27,    28,    29,   145,    31,     0,     0,    33,
3057        0,     0,    34,    35,    36,     0,   159,    38,     0,    40,
3058        0,     0,     0,   147,   160,   161,     0,     0,     0,     0,
3059        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3060        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3061        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3062        0,     0,     0,   148,    50,    51,    52,    53,    54,    55,
3063       56,    57,    58,    59,    60,    61,    62,    63,   142,   143,
3064        0,     0,     0,     0,   144,     0,   503,   504,   505,     0,
3065      506,   507,     8,     9,    10,    11,    12,    13,    14,    15,
3066       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3067       26,    27,    28,    29,   145,   146,     0,     0,    33,     0,
3068        0,     0,    35,    36,     0,     0,     0,     0,    40,     0,
3069        0,     0,   147,     0,     0,     0,     0,     0,     0,     0,
3070        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3071        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3072        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3073        0,     0,   148,    50,    51,    52,    53,    54,    55,    56,
3074       57,    58,    59,    60,    61,    62,    63,   142,   143,     0,
3075        0,     0,     0,   144,     0,     0,     0,     0,     0,     0,
3076        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
3077       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
3078       27,    28,    29,   145,   146,     0,     0,    33,     0,     0,
3079        0,    35,    36,     0,   159,    38,     0,    40,     0,     0,
3080        0,   147,   160,   161,     0,     0,     0,     0,     0,     0,
3081        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3082        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3083        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3084        0,   148,    50,    51,    52,    53,    54,    55,    56,    57,
3085       58,    59,    60,    61,    62,    63,   142,   143,     0,     0,
3086        0,     0,   144,     0,     0,     0,     0,     0,     0,     0,
3087        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
3088       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
3089       28,    29,   145,   146,     0,     0,    33,     0,     0,     0,
3090       35,    36,     0,     0,     0,     0,    40,     0,     0,     0,
3091      147,   160,     0,     0,     0,     0,     0,     0,     0,     0,
3092        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3093        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3094        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3095      148,    50,    51,    52,    53,    54,    55,    56,    57,    58,
3096       59,    60,    61,    62,    63,   142,   143,     0,     0,     0,
3097        0,   144,   194,     0,     0,     0,     0,     0,     0,     8,
3098        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
3099       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
3100       29,   145,   146,     0,     0,    33,     0,     0,     0,    35,
3101       36,     0,     0,     0,     0,    40,     0,     0,     0,   147,
3102        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3103        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3104        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3105        0,     0,     0,     0,     0,     0,     0,     0,     0,   148,
3106       50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
3107       60,    61,    62,    63,     4,     5,     0,     0,     0,     0,
3108      144,     0,     0,     0,     0,     0,     0,     0,     8,     9,
3109       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
3110       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
3111       30,    31,     0,     0,    33,     0,     0,     0,    35,    36,
3112        0,     0,     0,     0,    40,     0,     0,     0,   147,     0,
3113        0,   231,     0,     0,     0,     0,     0,     0,     0,     0,
3114        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3115        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3116        0,     0,     0,     0,     0,     0,     0,     0,   148,    50,
3117       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
3118       61,    62,    63,   142,   143,     0,     0,     0,     0,   144,
3119      295,     0,     0,     0,     0,     0,     0,     8,     9,    10,
3120       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
3121       21,    22,    23,    24,    25,    26,    27,    28,    29,   145,
3122      146,     0,     0,    33,     0,     0,     0,    35,    36,     0,
3123        0,     0,     0,    40,     0,     0,     0,   147,     0,     0,
3124        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3125        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3126        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3127        0,     0,     0,     0,     0,     0,     0,   148,    50,    51,
3128       52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
3129       62,    63,   142,   143,     0,     0,     0,     0,   144,     0,
3130        0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
3131       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
3132       22,    23,    24,    25,    26,    27,    28,    29,   145,   146,
3133        0,     0,    33,     0,     0,     0,    35,    36,     0,     0,
3134        0,     0,    40,     0,     0,     0,   147,     0,     0,     0,
3135        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3136        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3137        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3138        0,     0,     0,     0,     0,     0,   148,    50,    51,    52,
3139       53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
3140       63,   142,   143,     0,     0,     0,     0,   144,     0,     0,
3141        0,     0,     0,     0,     0,     8,     9,    10,    11,    12,
3142       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
3143       23,    24,    25,    26,    27,    28,    29,   145,   146,     0,
3144        0,     0,     0,     0,     0,    35,    36,     0,     0,     0,
3145        0,    40,     0,     0,     0,   147,     0,     0,     0,     0,
3146        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3147        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3148        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3149        0,     0,     0,     0,     0,   148,    50,    51,    52,    53,
3150       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
3151      142,   143,     0,     0,     0,     0,   279,     0,     0,     0,
3152        0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
3153       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
3154       24,    25,    26,    27,   280,   281,   145,   146,     0,     0,
3155        0,     0,     0,     0,    35,    36,     0,     0,     0,     0,
3156        0,     0,     0,     0,   282,     0,     0,     0,     0,     0,
3157        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3158        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3159        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3160        0,     0,     0,     0,   283,   284,   285,    52,    53,    54,
3161       55,    56,    57,    58,    59,    60,    61,    62,    63,   529,
3162        0,     0,     0,     0,   279,     0,     0,     0,     0,     0,
3163        0,     0,     8,     9,    10,    11,    12,    13,    14,    15,
3164       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3165       26,    27,   280,   281,   246,     0,     0,     0,     0,     0,
3166        0,     0,    35,    36,     0,     0,     0,     0,   530,     0,
3167        0,     0,   282,     0,     0,     0,     0,     0,     0,     0,
3168        0,     0,   247,   248,     0,     0,     0,     0,     0,     0,
3169        0,   249,     0,     0,     0,     0,     0,     0,     0,     0,
3170        0,     0,   250,     0,     0,     0,     0,     0,     0,     0,
3171        0,     0,   283,   284,   285,    52,    53,    54,    55,    56,
3172       57,    58,    59,    60,    61,    62,    63,     0,     0,   318,
3173        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3174      251,   252,   253,   254,   255,   123,   124,   125,   126,   127,
3175      128,   129,   130,   131,   132,   133,   134,   319,   320,   318,
3176        0,     0,     0,     0,     0,     0,   249,     0,     0,     0,
3177        0,     0,     0,     0,     0,     0,     0,   321,     0,     0,
3178        0,     0,     0,     0,     0,     0,     0,   319,   320,     0,
3179        0,     0,     0,     0,     0,     0,   249,     0,     0,     0,
3180        0,     0,     0,     0,     0,     0,     0,   321,     0,     0,
3181        0,     0,     0,     0,     0,   251,   252,   322,   323,   324,
3182      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
3183      133,   134,     0,     0,   246,     0,     0,     0,     0,     0,
3184        0,     0,     0,     0,     0,     0,     0,   322,   323,   324,
3185      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
3186      133,   134,   247,   248,   116,     0,     0,     0,     0,     0,
3187        0,   249,     0,     0,     0,     0,     0,     0,     0,     0,
3188        0,     0,   250,     0,     0,     0,     0,     0,     0,   318,
3189        0,     0,   117,   118,     0,     0,     0,     0,     0,     0,
3190        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3191        0,     0,   119,     0,     0,     0,     0,   319,   320,     0,
3192        0,     0,   253,   254,   255,   123,   124,   125,   126,   127,
3193      128,   129,   130,   131,   132,   133,   134,   321,     0,     0,
3194        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3195        0,     0,   120,   121,   122,   123,   124,   125,   126,   127,
3196      128,   129,   130,   131,   132,   133,   134,     0,     0,     0,
3197        0,     0,     0,     0,     0,     0,     0,   322,   323,   324,
3198      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
3199      133,   134,   365,   366,     0,     0,     0,     0,     0,   367,
3200      368,   369,   370,   371,   372,   373,   374,   375,   376,   377,
3201      378,   379,   380,   381,   382,   383,   384,   385,   386,   387,
3202      388,   389,   390,     0,     0,     0,     0,     0,     0,     0,
3203        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3204        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3205        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
3206        0,     0,     0,     0,     0,   391,     0,     0,     0,   392,
3207      393,     0,   394,   395,   396,   397,   398,   399,   400,   401,
3208      402,   403,   404,   405,     0,   406
3209 };
3210
3211 static const yytype_int16 yycheck[] =
3212 {
3213        4,     5,    37,   149,     3,   278,   256,    90,    92,   300,
3214       43,   272,     4,     5,   413,    96,    97,    98,    99,   105,
3215       92,   294,    94,   684,    94,   526,    30,    31,   533,   616,
3216      757,   277,   758,    43,     3,    34,   623,   298,    30,    31,
3217      310,   802,   274,   289,   226,   521,   736,   293,     5,     6,
3218        7,   967,     0,   151,    44,   892,   288,   234,   156,    44,
3219      292,   593,   308,    44,     5,     6,     7,    94,    37,   535,
3220      302,   317,    94,    42,   951,   307,   139,   135,   176,   620,
3221       94,   139,    94,    43,   316,    45,   263,     5,     6,     7,
3222        9,   135,   190,   843,    94,    94,     6,  1013,   102,    94,
3223      198,    60,     5,     6,     7,    50,   766,     5,     6,     7,
3224      256,   948,     5,     6,     7,    60,    94,   139,    37,    38,
3225      134,   871,    94,   135,   159,   785,  1003,    37,    38,   759,
3226      760,   892,   364,   102,    93,   168,    46,   797,    57,   139,
3227      135,  1018,   240,   619,   134,    94,   232,   233,   181,   182,
3228      142,   143,   235,   145,   146,   236,   237,   147,   168,   691,
3229      150,   139,   147,   135,   630,   150,   147,   139,   350,   150,
3230      197,   181,   182,   135,    43,   139,   926,   263,    97,    98,
3231       99,   138,    92,   143,   135,   134,   135,   948,   135,   135,
3232      139,   692,    94,   103,    43,   193,   200,   138,   197,   135,
3233      204,   205,    94,   207,   208,   209,   210,   211,   212,   213,
3234      214,   215,   216,   217,   218,   219,   220,    94,   137,    94,
3235      138,   135,   226,   883,   756,   766,    94,   225,   232,   233,
3236      234,   732,   134,    94,   238,   138,   916,   769,   271,   272,
3237      138,    94,   134,   420,   785,   138,     3,     4,   135,   159,
3238      837,   161,   256,   163,   287,   945,   797,   135,   135,   263,
3239      135,   271,   272,   261,    94,   298,   134,   537,   134,    94,
3240      996,   137,   134,     9,   135,    94,   781,   287,   139,   135,
3241      142,   134,    94,    40,   194,  1012,   290,   256,   298,   969,
3242      970,   135,   972,   135,   881,   975,   828,   153,   885,   168,
3243      134,    37,    38,   272,   134,   135,   135,   135,   142,   139,
3244      135,   315,   181,   182,   139,   134,   135,    53,   134,    55,
3245      139,    57,   326,   327,   328,   134,   142,   331,   137,   298,
3246      139,   135,   141,   135,   134,    46,   135,   137,   843,   600,
3247      134,   141,   883,   137,   135,   139,   350,   141,   594,  1010,
3248      135,   135,     9,   357,   135,   135,     5,     6,     7,   135,
3249        9,    97,    98,    99,   865,   275,   627,   277,   139,   601,
3250      602,   603,   604,   605,   906,   555,    94,   137,   139,   289,
3251       37,    38,    50,   293,   135,   295,   484,   485,    37,    38,
3252       94,   140,   490,   491,    94,    94,   494,    94,   308,     9,
3253       57,   800,   271,   272,    94,   134,   134,   317,    57,   137,
3254      911,   139,   134,   141,   134,   134,   420,     9,   287,    94,
3255       94,    94,   143,   924,    94,   141,   699,    37,    38,   298,
3256      153,   435,   137,   706,    44,    71,    72,   154,   134,   137,
3257       97,    98,    99,   734,   136,    37,    38,    57,    97,    98,
3258       99,   724,   134,   142,   700,     9,   142,    11,    12,    13,
3259       14,    15,    16,   643,   644,    57,   142,   647,   648,   649,
3260      650,   651,   652,   653,   654,   655,   656,   142,   142,   512,
3261      142,   142,   142,    37,    38,    95,    96,    97,    98,    99,
3262      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
3263      110,   111,   512,    57,   142,    97,    98,    99,   144,   145,
3264      142,   147,   148,   149,   150,   151,   152,   521,   142,   142,
3265      142,   134,   526,   142,   137,   135,   139,   136,   141,   134,
3266      534,   535,   137,   136,   139,   142,   141,   147,   142,   134,
3267      150,   134,   153,    97,    98,    99,   134,   134,   134,   137,
3268      137,   139,   139,   141,   141,   588,   134,   153,    94,   136,
3269      136,   135,   742,    94,   568,   140,   137,   600,   140,   142,
3270      137,   140,   138,   143,   142,   608,   609,   610,   588,   140,
3271      137,   136,    94,   844,   140,    52,   136,   620,   140,   142,
3272      600,   138,   140,   142,   627,   136,   142,   135,   608,   609,
3273      610,    16,    16,   154,   141,   135,   138,   142,   136,   154,
3274      620,   153,   138,   874,   153,   619,   620,   627,   136,   142,
3275      139,    10,   136,   140,   137,   136,   630,   142,   878,   136,
3276      136,   136,   136,   136,   136,   136,   136,   136,    11,    11,
3277      136,   135,   135,   512,   142,   142,   136,   142,   137,   141,
3278      137,   142,   136,   136,   136,   135,   689,    50,   135,   135,
3279      135,   135,   912,   135,   135,   135,   154,   135,    43,   135,
3280      135,   704,   922,   135,   135,   135,   140,   909,   136,   689,
3281      136,   136,   136,   136,   594,   142,   136,   134,   692,   134,
3282      136,   135,   919,   134,   704,   138,   138,   781,   136,   136,
3283      134,   136,   704,   781,   781,   734,   908,   272,   833,   781,
3284      781,   781,   887,   233,  1010,   893,   827,   544,   106,   951,
3285      107,   902,   781,    -1,   757,   758,   759,   760,   732,   639,
3286       -1,   600,   982,   766,    -1,    -1,    -1,   835,    -1,   608,
3287      609,   610,   228,    -1,    -1,    -1,    -1,   757,   758,   759,
3288      760,   983,   785,    -1,    -1,    -1,   766,    -1,   627,    -1,
3289       -1,    -1,   766,    -1,   797,    -1,    -1,   913,   249,    -1,
3290     1002,  1003,    -1,   843,    -1,   785,    -1,    -1,    -1,    -1,
3291       -1,   785,   781,   866,    -1,   868,  1018,   797,    -1,    -1,
3292      700,   872,   873,   797,   875,    -1,    -1,    -1,   802,   871,
3293      833,   871,    -1,    -1,    -1,    -1,   892,    -1,    -1,   844,
3294       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3295      689,   731,    -1,   833,    -1,    -1,    -1,    -1,    -1,   739,
3296      928,    -1,    -1,    -1,    -1,   704,    -1,    -1,    -1,   920,
3297      921,    -1,    -1,    -1,   843,    -1,    -1,    -1,    -1,   932,
3298      883,    -1,   933,   934,    -1,    -1,    -1,     9,    -1,    -1,
3299       -1,   865,    -1,    -1,    -1,    -1,    -1,    -1,   966,    -1,
3300       -1,    -1,   871,   883,   878,    -1,    -1,    -1,    -1,   883,
3301       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,   892,    -1,
3302       -1,    -1,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3303       -1,    -1,    -1,    -1,    -1,    57,    -1,   911,   912,    -1,
3304      914,   915,   916,    -1,    -1,    -1,    -1,    -1,   922,    -1,
3305      924,    -1,   914,   915,   916,    -1,    -1,   926,   838,    -1,
3306       -1,    -1,    -1,    -1,   844,    -1,    -1,    -1,    -1,    -1,
3307       -1,    -1,    -1,    -1,   948,    97,    98,    99,   100,   101,
3308      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
3309       -1,    -1,    -1,   996,   833,    -1,    -1,    -1,    -1,   973,
3310      974,   975,    -1,    -1,    -1,    -1,    -1,    -1,   982,  1012,
3311       -1,    -1,    -1,    -1,    -1,    -1,   996,    -1,    -1,    -1,
3312       -1,    -1,    -1,    -1,    -1,   147,    -1,    -1,   150,    -1,
3313       -1,    -1,  1012,     3,     4,     5,     6,     7,     8,     9,
3314       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
3315       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
3316       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
3317       40,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
3318       50,    -1,    52,    53,    54,    55,    56,    57,    58,    59,
3319       60,    -1,    62,    63,    -1,    65,    66,    67,    68,    69,
3320       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
3321       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
3322       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
3323      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
3324      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3325       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3326       -1,    -1,    -1,    -1,   134,   135,    -1,   137,   138,   139,
3327      140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
3328      150,   151,   152,   153,    -1,   155,   156,     3,     4,     5,
3329        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
3330       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3331       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
3332       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
3333       46,    47,    48,    -1,    50,    -1,    52,    53,    54,    55,
3334       56,    57,    58,    59,    60,    -1,    62,    63,    -1,    65,
3335       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
3336       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
3337       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
3338       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3339      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
3340       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3341       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
3342      136,   137,    -1,   139,   140,   141,   142,   143,   144,   145,
3343      146,   147,   148,   149,   150,   151,   152,   153,    -1,   155,
3344      156,     3,     4,     5,     6,     7,     8,     9,    10,    11,
3345       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
3346       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
3347       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
3348       42,    43,    44,    45,    46,    47,    48,    -1,    50,    -1,
3349       52,    53,    54,    55,    56,    57,    58,    59,    60,    -1,
3350       62,    63,    -1,    65,    66,    67,    68,    69,    70,    71,
3351       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
3352       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
3353       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
3354      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
3355       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3356       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3357       -1,    -1,   134,   135,    -1,   137,   138,   139,   140,   141,
3358      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
3359      152,   153,    -1,   155,   156,     3,     4,     5,     6,     7,
3360        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
3361       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
3362       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
3363       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
3364       48,    -1,    50,    -1,    52,    53,    54,    55,    56,    57,
3365       58,    59,    60,    -1,    62,    63,    -1,    65,    66,    67,
3366       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
3367       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
3368       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
3369       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
3370      108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
3371       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3372       -1,    -1,    -1,    -1,    -1,    -1,   134,   135,    -1,   137,
3373      138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
3374      148,   149,   150,   151,   152,   153,    -1,   155,   156,     3,
3375        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
3376       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
3377       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
3378       34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
3379       44,    45,    46,    47,    48,    -1,    50,    -1,    52,    53,
3380       54,    55,    56,    57,    58,    59,    60,    -1,    62,    63,
3381       -1,    65,    66,    67,    68,    69,    70,    71,    72,    73,
3382       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
3383       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
3384       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
3385      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
3386       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3387       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3388      134,   135,   136,   137,    -1,   139,   140,   141,   142,   143,
3389      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
3390       -1,   155,   156,     3,     4,     5,     6,     7,     8,     9,
3391       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
3392       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
3393       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
3394       40,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
3395       50,    -1,    52,    53,    54,    55,    56,    57,    58,    59,
3396       60,    -1,    62,    63,    -1,    65,    66,    67,    68,    69,
3397       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
3398       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
3399       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
3400      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
3401      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3402       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3403       -1,    -1,    -1,    -1,   134,   135,   136,   137,    -1,   139,
3404      140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
3405      150,   151,   152,   153,    -1,   155,   156,     3,     4,     5,
3406        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
3407       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3408       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
3409       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
3410       46,    47,    48,    -1,    50,    -1,    52,    53,    54,    55,
3411       56,    57,    58,    59,    60,    -1,    62,    63,    -1,    65,
3412       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
3413       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
3414       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
3415       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3416      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
3417       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3418       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
3419       -1,   137,   138,   139,   140,   141,   142,   143,   144,   145,
3420      146,   147,   148,   149,   150,   151,   152,   153,    -1,   155,
3421      156,     3,     4,     5,     6,     7,     8,     9,    10,    11,
3422       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
3423       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
3424       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
3425       42,    43,    44,    45,    46,    47,    48,    -1,    50,    -1,
3426       52,    53,    54,    55,    56,    57,    58,    59,    60,    -1,
3427       62,    63,    -1,    65,    66,    67,    68,    69,    70,    71,
3428       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
3429       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
3430       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
3431      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
3432       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3433       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3434       -1,    -1,   134,   135,   136,   137,    -1,   139,   140,   141,
3435      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
3436      152,   153,    -1,   155,   156,     3,     4,     5,     6,     7,
3437        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
3438       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
3439       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
3440       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
3441       48,    -1,    50,    -1,    52,    53,    54,    55,    56,    57,
3442       58,    59,    60,    -1,    62,    63,    -1,    65,    66,    67,
3443       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
3444       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
3445       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
3446       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
3447      108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
3448       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3449       -1,    -1,    -1,    -1,    -1,    -1,   134,   135,   136,   137,
3450       -1,   139,   140,   141,   142,   143,   144,   145,   146,   147,
3451      148,   149,   150,   151,   152,   153,    -1,   155,   156,     3,
3452        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
3453       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
3454       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
3455       34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
3456       44,    45,    46,    47,    48,    -1,    50,    -1,    52,    53,
3457       54,    55,    56,    57,    58,    59,    60,    -1,    62,    63,
3458       -1,    65,    66,    67,    68,    69,    70,    71,    72,    73,
3459       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
3460       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
3461       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
3462      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
3463       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3464       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3465      134,   135,   136,   137,    -1,   139,   140,   141,   142,   143,
3466      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
3467       -1,   155,   156,     3,     4,     5,     6,     7,     8,     9,
3468       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
3469       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
3470       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
3471       40,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
3472       50,    -1,    52,    53,    54,    55,    56,    57,    58,    59,
3473       60,    -1,    62,    63,    -1,    65,    66,    67,    68,    69,
3474       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
3475       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
3476       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
3477      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
3478      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3479       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3480       -1,    -1,    -1,    -1,   134,   135,    -1,   137,   138,   139,
3481      140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
3482      150,   151,   152,   153,    -1,   155,   156,     3,     4,     5,
3483        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
3484       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3485       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
3486       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
3487       46,    47,    48,    -1,    50,    -1,    52,    53,    54,    55,
3488       56,    57,    58,    59,    60,    -1,    62,    63,    -1,    65,
3489       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
3490       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
3491       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
3492       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3493      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
3494       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3495       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
3496       -1,   137,    -1,   139,   140,   141,   142,   143,   144,   145,
3497      146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
3498      156,     3,     4,     5,     6,     7,     8,     9,    10,    11,
3499       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
3500       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
3501       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
3502       42,    43,    44,    45,    46,    47,    48,    -1,    50,    -1,
3503       52,    53,    54,    55,    56,    57,    58,    59,    60,    -1,
3504       62,    63,    -1,    65,    66,    67,    68,    69,    70,    71,
3505       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
3506       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
3507       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
3508      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
3509       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3510       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3511       -1,    -1,   134,   135,   136,   137,    -1,   139,   140,   141,
3512      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
3513      152,   153,    -1,   155,   156,     3,     4,     5,     6,     7,
3514        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
3515       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
3516       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
3517       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
3518       48,    -1,    50,    -1,    52,    53,    54,    55,    56,    57,
3519       58,    59,    60,    -1,    62,    63,    -1,    65,    66,    67,
3520       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
3521       78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
3522       88,    89,    90,    91,    92,    93,    94,    95,    96,    97,
3523       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
3524      108,   109,   110,   111,    -1,    -1,    -1,    -1,    -1,    -1,
3525       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3526       -1,    -1,    -1,    -1,    -1,    -1,   134,   135,   136,   137,
3527       -1,   139,   140,   141,   142,   143,   144,   145,   146,   147,
3528      148,   149,   150,   151,   152,   153,    -1,   155,   156,     3,
3529        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
3530       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
3531       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
3532       34,    35,    36,    37,    38,    39,    40,    41,    42,    43,
3533       44,    45,    46,    47,    48,    -1,    50,    -1,    52,    53,
3534       54,    55,    56,    57,    58,    59,    60,    -1,    62,    63,
3535       -1,    65,    66,    67,    68,    69,    70,    71,    72,    73,
3536       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
3537       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
3538       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
3539      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
3540       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3541       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3542      134,   135,    -1,   137,   138,   139,   140,   141,   142,   143,
3543      144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
3544       -1,   155,   156,     3,     4,     5,     6,     7,     8,     9,
3545       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
3546       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
3547       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
3548       40,    41,    42,    43,    44,    45,    46,    47,    48,    -1,
3549       50,    -1,    52,    53,    54,    55,    56,    57,    58,    59,
3550       60,    -1,    62,    63,    -1,    65,    66,    67,    68,    69,
3551       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
3552       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
3553       90,    91,    92,    93,    94,    95,    96,    97,    98,    99,
3554      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
3555      110,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3556       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3557       -1,    -1,    -1,    -1,    -1,   135,   136,   137,    -1,   139,
3558      140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
3559      150,   151,   152,   153,    -1,   155,   156,     3,     4,     5,
3560        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
3561       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3562       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
3563       36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
3564       46,    47,    48,    -1,    50,    -1,    52,    53,    54,    55,
3565       56,    57,    58,    59,    60,    -1,    62,    63,    -1,    65,
3566       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
3567       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
3568       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
3569       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3570      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
3571       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3572       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   134,   135,
3573       -1,   137,    -1,   139,   140,   141,   142,   143,   144,   145,
3574      146,   147,   148,   149,   150,   151,   152,   153,    -1,   155,
3575      156,     3,     4,     5,     6,     7,     8,     9,    10,    11,
3576       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
3577       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
3578       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
3579       42,    43,    44,    45,    46,    47,    48,    -1,    50,    -1,
3580       52,    53,    54,    55,    56,    57,    58,    59,    60,    -1,
3581       62,    63,    -1,    65,    66,    67,    68,    69,    70,    71,
3582       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
3583       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
3584       92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
3585      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
3586       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3587       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3588       -1,    -1,   134,   135,    -1,   137,    -1,   139,   140,   141,
3589      142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
3590      152,   153,    -1,   155,   156,     3,     4,    -1,    -1,    -1,
3591        8,     9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    17,
3592       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
3593       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
3594       38,    39,    40,    41,    -1,    43,    -1,    -1,    46,    47,
3595       48,    49,    50,    51,    52,    53,    54,    -1,    56,    57,
3596       58,    59,    60,    61,    -1,    -1,    64,    -1,    -1,    -1,
3597       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3598       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3599       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    97,
3600       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
3601      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
3602      118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
3603      128,   129,   130,   131,   132,   133,   134,     3,     4,    -1,
3604       -1,    -1,     8,     9,    -1,    -1,    -1,    -1,   146,    -1,
3605       -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3606       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
3607       36,    37,    38,    39,    40,    -1,    -1,    43,    -1,    -1,
3608       46,    47,    48,    -1,    50,    51,    52,    53,    -1,    -1,
3609       -1,    57,    58,    59,    -1,    -1,    -1,    -1,    64,    -1,
3610       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3611       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3612       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3613       -1,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3614      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
3615       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3616       -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
3617       -1,    -1,     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,
3618      146,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3619       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
3620       36,    37,    38,    39,    40,    -1,    -1,    43,    -1,    -1,
3621       46,    47,    48,    -1,    50,    51,    -1,    53,    -1,    -1,
3622       -1,    57,    58,    59,    -1,    -1,    -1,    -1,    64,    -1,
3623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3624       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3625       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3626       -1,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3627      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
3628       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3629       -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
3630       -1,    -1,     8,     9,    -1,    -1,    -1,    -1,    -1,    -1,
3631      146,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3632       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
3633       36,    37,    38,    39,    40,    -1,    -1,    43,    -1,    -1,
3634       -1,    47,    48,    -1,    50,    51,    -1,    53,    -1,    -1,
3635       -1,    57,    58,    59,    -1,    -1,    -1,    -1,    64,    -1,
3636       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3637       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3638       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3639       -1,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3640      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
3641       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3642       -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
3643       -1,    -1,    -1,     9,    -1,    -1,    -1,    -1,    -1,    -1,
3644      146,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3645       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
3646       36,    37,    38,    39,    40,    -1,    -1,    43,    -1,    -1,
3647       -1,    47,    48,    -1,    50,    51,    -1,    53,    -1,    -1,
3648       -1,    57,    58,    59,    -1,    -1,    -1,    -1,    -1,    -1,
3649       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3650       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3651       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3652       -1,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3653      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
3654       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3655       -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,    -1,
3656       -1,    -1,    -1,     9,    -1,    -1,    -1,    -1,    -1,    -1,
3657      146,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3658       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
3659       36,    37,    38,    39,    40,     9,    -1,    43,    -1,    -1,
3660       -1,    47,    48,    -1,    -1,    -1,    -1,    53,    -1,    -1,
3661       -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    64,    -1,
3662       -1,    -1,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,
3663       44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3664       -1,    -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,
3665       -1,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3666      106,   107,   108,   109,   110,   111,    -1,    -1,    -1,    -1,
3667        9,    -1,    11,    12,    13,    -1,    15,    16,    -1,    -1,
3668       -1,    95,    96,    97,    98,    99,   100,   101,   102,   103,
3669      104,   105,   106,   107,   108,   109,   110,   111,    37,    38,
3670      146,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3671       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,
3672       -1,    -1,    -1,    -1,    -1,    -1,    -1,     9,    -1,    -1,
3673       -1,    -1,    -1,   147,    -1,    -1,   150,    -1,    -1,    -1,
3674       -1,    -1,    -1,    -1,    -1,     9,    -1,    -1,    -1,    -1,
3675       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    97,    98,
3676       99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
3677      109,   110,   111,    37,    38,    57,    -1,    -1,    -1,    -1,
3678       -1,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3679       -1,    -1,    -1,    57,    -1,    -1,   135,    -1,    -1,    -1,
3680       -1,    -1,     9,    -1,    -1,   144,   145,   146,    -1,    -1,
3681       -1,    -1,    -1,    -1,    -1,    97,    98,    99,   100,   101,
3682      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
3683       37,    38,     9,    97,    98,    99,   100,   101,   102,   103,
3684      104,   105,   106,   107,   108,   109,   110,   111,    -1,    -1,
3685       57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3686       37,    38,    -1,    -1,   146,    -1,    -1,    -1,    -1,    -1,
3687       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3688       57,    -1,   146,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3689       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
3690      107,   108,   109,   110,   111,    -1,    -1,     9,    10,    11,
3691       12,    13,    14,    15,    16,    -1,    -1,    -1,    -1,    -1,
3692       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
3693      107,   108,   109,   110,   111,    37,    38,    -1,    -1,   146,
3694       -1,    -1,     9,    10,    11,    12,    13,    14,    15,    16,
3695       -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,     9,    -1,
3696       -1,    -1,    -1,    65,    66,    67,    68,    -1,    -1,   146,
3697       37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3698       -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,
3699       57,    -1,    -1,    -1,    -1,    97,    98,    99,    65,    66,
3700       67,    68,    -1,    -1,    -1,    -1,    57,    -1,    -1,    -1,
3701       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3702       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3703       97,    98,    99,   135,    -1,   137,    -1,    -1,    -1,    -1,
3704       -1,    -1,   144,   145,    95,    96,    97,    98,    99,   100,
3705      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
3706      111,    -1,    -1,    -1,    -1,     3,     4,    -1,   135,    -1,
3707       -1,     9,    -1,    -1,    -1,    -1,    -1,   144,   145,    17,
3708       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
3709       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
3710       38,    39,    40,    -1,    -1,    43,    -1,    -1,    -1,    47,
3711       48,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    57,
3712       -1,    -1,    -1,    -1,    -1,    -1,     9,    -1,    -1,    -1,
3713       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3714       -1,    -1,    -1,    -1,    -1,    -1,    -1,     9,    -1,    -1,
3715       -1,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,    97,
3716       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
3717      108,   109,   110,   111,    57,    37,    38,    -1,    -1,    -1,
3718       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3719       -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    -1,   137,
3720       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3721       -1,    -1,    -1,    -1,    97,    98,    99,   100,   101,   102,
3722      103,   104,   105,   106,   107,   108,   109,   110,   111,    -1,
3723       -1,    -1,    -1,    -1,    -1,    97,    98,    99,   100,   101,
3724      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
3725       -1,   134,    -1,    -1,   137,    -1,    -1,    -1,   141,    -1,
3726       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
3727       -1,    -1,   134,     8,     9,   137,    -1,    -1,    -1,   141,
3728       -1,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
3729       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
3730       35,    36,    37,    38,    39,    40,    41,    -1,    43,    -1,
3731       -1,    46,    47,    48,    -1,    50,    51,    52,    53,    54,
3732       55,    56,    57,    58,    59,    60,    61,    -1,    -1,    -1,
3733       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3734       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3735       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3736       -1,    -1,    97,    98,    99,   100,   101,   102,   103,   104,
3737      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
3738      115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
3739      125,   126,   127,   128,   129,   130,   131,   132,     9,   134,
3740       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3741       -1,    -1,    -1,     9,    -1,    -1,    -1,    -1,    -1,    -1,
3742       -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    -1,
3743       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3744       -1,    37,    38,    -1,    -1,    -1,    57,    -1,    -1,    -1,
3745       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3746       -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3747       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3748       -1,    -1,    -1,    -1,    -1,    -1,    97,    98,    99,   100,
3749      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
3750      111,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3751      106,   107,   108,   109,   110,   111,     9,    -1,    -1,    -1,
3752       -1,    -1,    -1,    -1,    -1,    -1,   137,    -1,    -1,    -1,
3753       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3754       -1,   137,    -1,    -1,    37,    38,    -1,    -1,    -1,    -1,
3755       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3756       -1,    -1,    -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,
3757       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3758       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3759       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3760       -1,    -1,    95,    96,    97,    98,    99,   100,   101,   102,
3761      103,   104,   105,   106,   107,   108,   109,   110,   111,    -1,
3762       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
3763        4,    -1,    -1,    -1,     8,     9,    -1,    -1,    -1,    -1,
3764       -1,    -1,   135,    17,    18,    19,    20,    21,    22,    23,
3765       24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
3766       34,    35,    36,    37,    38,    39,    40,    -1,    -1,    43,
3767       -1,    -1,    46,    47,    48,    -1,    50,    51,    -1,    53,
3768       -1,    -1,    -1,    57,    58,    59,    -1,    -1,    -1,    -1,
3769       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3770       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3771       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3772       -1,    -1,    -1,    97,    98,    99,   100,   101,   102,   103,
3773      104,   105,   106,   107,   108,   109,   110,   111,     3,     4,
3774       -1,    -1,    -1,    -1,     9,    -1,    11,    12,    13,    -1,
3775       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
3776       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
3777       35,    36,    37,    38,    39,    40,    -1,    -1,    43,    -1,
3778       -1,    -1,    47,    48,    -1,    -1,    -1,    -1,    53,    -1,
3779       -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3780       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3781       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3782       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3783       -1,    -1,    97,    98,    99,   100,   101,   102,   103,   104,
3784      105,   106,   107,   108,   109,   110,   111,     3,     4,    -1,
3785       -1,    -1,    -1,     9,    -1,    -1,    -1,    -1,    -1,    -1,
3786       -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
3787       26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
3788       36,    37,    38,    39,    40,    -1,    -1,    43,    -1,    -1,
3789       -1,    47,    48,    -1,    50,    51,    -1,    53,    -1,    -1,
3790       -1,    57,    58,    59,    -1,    -1,    -1,    -1,    -1,    -1,
3791       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3792       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3793       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3794       -1,    97,    98,    99,   100,   101,   102,   103,   104,   105,
3795      106,   107,   108,   109,   110,   111,     3,     4,    -1,    -1,
3796       -1,    -1,     9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3797       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
3798       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
3799       37,    38,    39,    40,    -1,    -1,    43,    -1,    -1,    -1,
3800       47,    48,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,
3801       57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3802       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3803       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3804       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3805       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
3806      107,   108,   109,   110,   111,     3,     4,    -1,    -1,    -1,
3807       -1,     9,    10,    -1,    -1,    -1,    -1,    -1,    -1,    17,
3808       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
3809       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
3810       38,    39,    40,    -1,    -1,    43,    -1,    -1,    -1,    47,
3811       48,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    57,
3812       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3813       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3814       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3815       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    97,
3816       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
3817      108,   109,   110,   111,     3,     4,    -1,    -1,    -1,    -1,
3818        9,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    17,    18,
3819       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
3820       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
3821       39,    40,    -1,    -1,    43,    -1,    -1,    -1,    47,    48,
3822       -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    57,    -1,
3823       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3824       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3825       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3826       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    97,    98,
3827       99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
3828      109,   110,   111,     3,     4,    -1,    -1,    -1,    -1,     9,
3829       10,    -1,    -1,    -1,    -1,    -1,    -1,    17,    18,    19,
3830       20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
3831       30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
3832       40,    -1,    -1,    43,    -1,    -1,    -1,    47,    48,    -1,
3833       -1,    -1,    -1,    53,    -1,    -1,    -1,    57,    -1,    -1,
3834       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3835       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3836       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3837       -1,    -1,    -1,    -1,    -1,    -1,    -1,    97,    98,    99,
3838      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
3839      110,   111,     3,     4,    -1,    -1,    -1,    -1,     9,    -1,
3840       -1,    -1,    -1,    -1,    -1,    -1,    17,    18,    19,    20,
3841       21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
3842       31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
3843       -1,    -1,    43,    -1,    -1,    -1,    47,    48,    -1,    -1,
3844       -1,    -1,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,
3845       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3846       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3847       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3848       -1,    -1,    -1,    -1,    -1,    -1,    97,    98,    99,   100,
3849      101,   102,   103,   104,   105,   106,   107,   108,   109,   110,
3850      111,     3,     4,    -1,    -1,    -1,    -1,     9,    -1,    -1,
3851       -1,    -1,    -1,    -1,    -1,    17,    18,    19,    20,    21,
3852       22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
3853       32,    33,    34,    35,    36,    37,    38,    39,    40,    -1,
3854       -1,    -1,    -1,    -1,    -1,    47,    48,    -1,    -1,    -1,
3855       -1,    53,    -1,    -1,    -1,    57,    -1,    -1,    -1,    -1,
3856       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3857       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3858       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3859       -1,    -1,    -1,    -1,    -1,    97,    98,    99,   100,   101,
3860      102,   103,   104,   105,   106,   107,   108,   109,   110,   111,
3861        3,     4,    -1,    -1,    -1,    -1,     9,    -1,    -1,    -1,
3862       -1,    -1,    -1,    -1,    17,    18,    19,    20,    21,    22,
3863       23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
3864       33,    34,    35,    36,    37,    38,    39,    40,    -1,    -1,
3865       -1,    -1,    -1,    -1,    47,    48,    -1,    -1,    -1,    -1,
3866       -1,    -1,    -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,
3867       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3868       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3869       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3870       -1,    -1,    -1,    -1,    97,    98,    99,   100,   101,   102,
3871      103,   104,   105,   106,   107,   108,   109,   110,   111,     4,
3872       -1,    -1,    -1,    -1,     9,    -1,    -1,    -1,    -1,    -1,
3873       -1,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
3874       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
3875       35,    36,    37,    38,     9,    -1,    -1,    -1,    -1,    -1,
3876       -1,    -1,    47,    48,    -1,    -1,    -1,    -1,    53,    -1,
3877       -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3878       -1,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
3879       -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3880       -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3881       -1,    -1,    97,    98,    99,   100,   101,   102,   103,   104,
3882      105,   106,   107,   108,   109,   110,   111,    -1,    -1,     9,
3883       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3884       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
3885      105,   106,   107,   108,   109,   110,   111,    37,    38,     9,
3886       -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    -1,
3887       -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
3888       -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
3889       -1,    -1,    -1,    -1,    -1,    -1,    46,    -1,    -1,    -1,
3890       -1,    -1,    -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,
3891       -1,    -1,    -1,    -1,    -1,    95,    96,    97,    98,    99,
3892      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
3893      110,   111,    -1,    -1,     9,    -1,    -1,    -1,    -1,    -1,
3894       -1,    -1,    -1,    -1,    -1,    -1,    -1,    97,    98,    99,
3895      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
3896      110,   111,    37,    38,     9,    -1,    -1,    -1,    -1,    -1,
3897       -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3898       -1,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,     9,
3899       -1,    -1,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
3900       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3901       -1,    -1,    57,    -1,    -1,    -1,    -1,    37,    38,    -1,
3902       -1,    -1,    97,    98,    99,   100,   101,   102,   103,   104,
3903      105,   106,   107,   108,   109,   110,   111,    57,    -1,    -1,
3904       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3905       -1,    -1,    97,    98,    99,   100,   101,   102,   103,   104,
3906      105,   106,   107,   108,   109,   110,   111,    -1,    -1,    -1,
3907       -1,    -1,    -1,    -1,    -1,    -1,    -1,    97,    98,    99,
3908      100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
3909      110,   111,    62,    63,    -1,    -1,    -1,    -1,    -1,    69,
3910       70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
3911       80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
3912       90,    91,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3913       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3914       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3915       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
3916       -1,    -1,    -1,    -1,    -1,   135,    -1,    -1,    -1,   139,
3917      140,    -1,   142,   143,   144,   145,   146,   147,   148,   149,
3918      150,   151,   152,   153,    -1,   155
3919 };
3920
3921 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
3922    symbol of state STATE-NUM.  */
3923 static const yytype_uint16 yystos[] =
3924 {
3925        0,   158,     0,   159,     3,     4,     8,     9,    17,    18,
3926       19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
3927       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
3928       39,    40,    41,    43,    46,    47,    48,    50,    51,    52,
3929       53,    54,    55,    56,    57,    58,    59,    60,    61,    97,
3930       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
3931      108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
3932      118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
3933      128,   129,   130,   131,   132,   134,   160,   161,   162,   164,
3934      178,   194,   195,   196,   197,   206,   208,   209,   213,   214,
3935      215,   252,   283,   284,   285,   286,   287,   288,   290,   298,
3936      299,   303,   304,   305,   306,   321,     9,    37,    38,    57,
3937       97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
3938      107,   108,   109,   110,   111,   137,   280,   281,   282,   305,
3939      280,   305,     3,     4,     9,    39,    40,    57,    97,   285,
3940      299,   135,   139,   180,   280,   305,   137,   280,   305,    50,
3941       58,    59,   283,   284,   285,   299,   285,   139,   289,     9,
3942       37,    38,    57,    97,    98,    99,   137,   299,     9,    37,
3943       38,    53,    55,    57,    97,    98,    99,   290,   297,   298,
3944      135,   139,    50,    60,    10,   285,   255,   135,   135,   139,
3945      135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
3946      135,   135,   135,   135,   135,   135,   135,   135,   135,   135,
3947      135,    44,   147,   150,   254,   257,   258,   300,   301,   302,
3948      254,    60,   164,   178,   285,   164,   208,   214,   283,   134,
3949      137,   226,   226,   226,   226,   226,     9,    37,    38,    46,
3950       57,    95,    96,    97,    98,    99,   210,   218,   220,   223,
3951      227,   253,   262,   265,   272,   280,   299,   285,   300,   288,
3952      287,    94,    94,   134,   346,   139,   167,   139,   165,     9,
3953       37,    38,    57,    97,    98,    99,   218,    94,   346,   292,
3954      137,   179,   346,   139,   169,    10,   135,   285,    94,   140,
3955      198,   297,   346,   163,   297,   297,   134,   346,   291,   255,
3956      137,   285,   134,   142,   208,   283,   346,   293,     9,    37,
3957       38,    57,    97,    98,    99,   280,   323,   326,   327,   280,
3958      280,   331,   280,   280,   280,   280,   280,   280,   280,   280,
3959      280,   280,   280,   280,   280,   280,   134,   255,   253,   280,
3960      259,   150,   302,   134,   134,   248,   280,   300,   248,   262,
3961      254,   226,   226,   280,   346,    62,    63,    69,    70,    71,
3962       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
3963       82,    83,    84,    85,    86,    87,    88,    89,    90,    91,
3964       92,   135,   139,   140,   142,   143,   144,   145,   146,   147,
3965      148,   149,   150,   151,   152,   153,   155,   344,   345,   218,
3966      223,   299,   219,   224,   255,   143,   249,   250,   262,   270,
3967      300,   273,   274,   275,   135,   139,    94,   297,     9,    37,
3968       38,    57,    97,    98,    99,   146,   215,   231,   233,   280,
3969      297,   299,     3,     4,     5,     6,     7,     8,     9,    10,
3970       11,    12,    13,    14,    15,    16,    37,    38,    39,    40,
3971       41,    42,    43,    44,    45,    46,    50,    52,    53,    54,
3972       55,    56,    57,    58,    59,    60,    62,    63,    65,    66,
3973       67,    68,    93,    94,    95,    96,    97,    98,    99,   134,
3974      135,   137,   138,   141,   153,   156,   306,   345,   348,   349,
3975      350,   351,   352,    11,    12,    13,    15,    16,   184,   285,
3976      294,   296,   141,   174,   294,   174,   136,   294,   181,   182,
3977      280,   137,   138,   294,   174,   216,   146,   231,   299,     4,
3978       53,   199,   201,   202,   203,   304,   138,   137,   134,   134,
3979      136,   294,   134,   158,   256,   136,   136,   294,   142,   280,
3980      280,   280,   142,   142,   280,   142,   142,   142,   142,   142,
3981      142,   142,   142,   142,   142,   142,   136,   136,   142,   253,
3982      134,   280,   134,   134,   134,   138,   153,   153,   136,   154,
3983      221,    94,    43,    45,   143,   225,   225,   134,   251,   136,
3984      262,   276,   278,   228,   229,   238,   239,   280,   232,   135,
3985       94,   346,   346,   346,   346,   346,   140,   142,     5,     6,
3986        7,   175,   176,   297,   137,   140,   137,   140,   138,   142,
3987      143,   181,   140,   137,   241,   242,   238,    94,   140,   142,
3988      197,   204,   280,   204,   158,   140,   138,   257,   140,   322,
3989      142,   136,   136,   328,   330,   142,   303,   334,   336,   338,
3990      340,   335,   337,   339,   341,   342,   343,   280,   154,   154,
3991      135,    16,    16,    10,    11,    12,    13,    14,    15,    16,
3992       65,    66,    67,    68,   135,   137,   144,   145,   297,   307,
3993      312,   318,   319,   320,   263,   153,   241,   294,   135,   141,
3994      235,   234,   146,   231,   136,   136,   136,   138,   154,   168,
3995      295,   297,   297,   297,   142,   171,   166,   171,   181,     9,
3996       57,    97,   135,   144,   145,   146,   183,   184,   185,   189,
3997      280,   290,   298,   138,   170,   171,   136,    60,    93,   243,
3998      245,   246,   146,   231,   200,   204,   205,   138,   285,   324,
3999      303,   303,   332,   136,   303,   303,   303,   303,   303,   303,
4000      303,   303,   303,   303,   142,   309,   222,   315,   308,   314,
4001      313,   139,    10,   135,   267,   274,   277,   136,   140,   240,
4002      237,   297,   241,   238,   174,   294,   175,     5,     6,     7,
4003      138,   172,   177,   174,   138,   188,    71,    72,   144,   145,
4004      147,   148,   149,   150,   151,   152,   190,   186,   174,   138,
4005      217,   142,   285,   238,   199,   249,   136,   285,   329,   136,
4006      303,   136,   136,   136,   136,   136,   136,   136,   136,   142,
4007      142,   136,   241,   312,   307,   320,   320,   316,   268,   185,
4008      279,   135,   241,   142,   236,   135,   136,   137,     8,     9,
4009       37,    38,    41,    49,    50,    57,    61,    64,    97,    98,
4010       99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
4011      109,   110,   111,   133,   134,   146,   164,   173,   178,   194,
4012      196,   197,   207,   211,   212,   214,   231,   252,   283,   321,
4013      141,   137,   185,   187,   185,   137,   225,   244,    95,    96,
4014      135,   260,   264,   271,   272,   325,   142,   333,    11,    11,
4015      136,   136,   310,   286,   241,   154,   230,   136,   237,   346,
4016      171,   146,   283,   285,     3,     4,    40,   191,   192,   197,
4017      211,   214,   283,    64,   146,   231,   135,    50,   135,   238,
4018      254,   254,   164,   211,   214,   226,   226,   231,   226,   223,
4019      171,   136,   185,   171,   243,   247,   260,   269,   300,   273,
4020      136,   347,   136,   136,   136,   142,   309,   140,   136,   241,
4021      236,   136,   138,   238,   223,   134,   137,   141,   193,   280,
4022      280,   193,   280,     3,     4,    40,   192,   226,   226,   238,
4023        8,   211,   283,   346,   134,   134,   254,   226,   226,   138,
4024      138,   249,   136,   260,   136,   349,   311,   138,   135,    43,
4025      266,   136,   346,   347,   193,   193,   193,   136,   136,   134,
4026      261,   307,   317,   138,   134,   134,   267,   312,   347,   136,
4027      134
4028 };
4029
4030 #define yyerrok                (yyerrstatus = 0)
4031 #define yyclearin        (yychar = YYEMPTY)
4032 #define YYEMPTY                (-2)
4033 #define YYEOF                0
4034
4035 #define YYACCEPT        goto yyacceptlab
4036 #define YYABORT                goto yyabortlab
4037 #define YYERROR                goto yyerrorlab
4038
4039
4040 /* Like YYERROR except do call yyerror.  This remains here temporarily
4041    to ease the transition to the new meaning of YYERROR, for GCC.
4042    Once GCC version 2 has supplanted version 1, this can go.  */
4043
4044 #define YYFAIL                goto yyerrlab
4045
4046 #define YYRECOVERING()  (!!yyerrstatus)
4047
4048 #define YYBACKUP(Token, Value)                                        \
4049 do                                                                \
4050   if (yychar == YYEMPTY && yylen == 1)                                \
4051     {                                                                \
4052       yychar = (Token);                                                \
4053       yylval = (Value);                                                \
4054       yytoken = YYTRANSLATE (yychar);                                \
4055       YYPOPSTACK (1);                                                \
4056       goto yybackup;                                                \
4057     }                                                                \
4058   else                                                                \
4059     {                                                                \
4060       yyerror (YY_("syntax error: cannot back up")); \
4061       YYERROR;                                                        \
4062     }                                                                \
4063 while (YYID (0))
4064
4065
4066 #define YYTERROR        1
4067 #define YYERRCODE        256
4068
4069
4070 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
4071    If N is 0, then set CURRENT to the empty location which ends
4072    the previous symbol: RHS[0] (always defined).  */
4073
4074 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
4075 #ifndef YYLLOC_DEFAULT
4076 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
4077     do                                                                        \
4078       if (YYID (N))                                                    \
4079         {                                                                \
4080           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
4081           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;        \
4082           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;                \
4083           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;        \
4084         }                                                                \
4085       else                                                                \
4086         {                                                                \
4087           (Current).first_line   = (Current).last_line   =                \
4088             YYRHSLOC (Rhs, 0).last_line;                                \
4089           (Current).first_column = (Current).last_column =                \
4090             YYRHSLOC (Rhs, 0).last_column;                                \
4091         }                                                                \
4092     while (YYID (0))
4093 #endif
4094
4095
4096 /* YY_LOCATION_PRINT -- Print the location on the stream.
4097    This macro was not mandated originally: define only if we know
4098    we won't break user code: when these are the locations we know.  */
4099
4100 #ifndef YY_LOCATION_PRINT
4101 # if YYLTYPE_IS_TRIVIAL
4102 #  define YY_LOCATION_PRINT(File, Loc)                        \
4103      fprintf (File, "%d.%d-%d.%d",                        \
4104               (Loc).first_line, (Loc).first_column,        \
4105               (Loc).last_line,  (Loc).last_column)
4106 # else
4107 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
4108 # endif
4109 #endif
4110
4111
4112 /* YYLEX -- calling `yylex' with the right arguments.  */
4113
4114 #ifdef YYLEX_PARAM
4115 # define YYLEX yylex (YYLEX_PARAM)
4116 #else
4117 # define YYLEX yylex ()
4118 #endif
4119
4120 /* Enable debugging if requested.  */
4121 #if YYDEBUG
4122
4123 # ifndef YYFPRINTF
4124 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
4125 #  define YYFPRINTF fprintf
4126 # endif
4127
4128 # define YYDPRINTF(Args)                        \
4129 do {                                                \
4130   if (yydebug)                                        \
4131     YYFPRINTF Args;                                \
4132 } while (YYID (0))
4133
4134 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                          \
4135 do {                                                                          \
4136   if (yydebug)                                                                  \
4137     {                                                                          \
4138       YYFPRINTF (stderr, "%s ", Title);                                          \
4139       yy_symbol_print (stderr,                                                  \
4140                   Type, Value); \
4141       YYFPRINTF (stderr, "\n");                                                  \
4142     }                                                                          \
4143 } while (YYID (0))
4144
4145
4146 /*--------------------------------.
4147 | Print this symbol on YYOUTPUT.  |
4148 `--------------------------------*/
4149
4150 /*ARGSUSED*/
4151 #if (defined __STDC__ || defined __C99__FUNC__ \
4152      || defined __cplusplus || defined _MSC_VER)
4153 static void
4154 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
4155 #else
4156 static void
4157 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
4158     FILE *yyoutput;
4159     int yytype;
4160     YYSTYPE const * const yyvaluep;
4161 #endif
4162 {
4163   if (!yyvaluep)
4164     return;
4165 # ifdef YYPRINT
4166   if (yytype < YYNTOKENS)
4167     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
4168 # else
4169   YYUSE (yyoutput);
4170 # endif
4171   switch (yytype)
4172     {
4173       default:
4174         break;
4175     }
4176 }
4177
4178
4179 /*--------------------------------.
4180 | Print this symbol on YYOUTPUT.  |
4181 `--------------------------------*/
4182
4183 #if (defined __STDC__ || defined __C99__FUNC__ \
4184      || defined __cplusplus || defined _MSC_VER)
4185 static void
4186 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
4187 #else
4188 static void
4189 yy_symbol_print (yyoutput, yytype, yyvaluep)
4190     FILE *yyoutput;
4191     int yytype;
4192     YYSTYPE const * const yyvaluep;
4193 #endif
4194 {
4195   if (yytype < YYNTOKENS)
4196     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
4197   else
4198     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
4199
4200   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
4201   YYFPRINTF (yyoutput, ")");
4202 }
4203
4204 /*------------------------------------------------------------------.
4205 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
4206 | TOP (included).                                                   |
4207 `------------------------------------------------------------------*/
4208
4209 #if (defined __STDC__ || defined __C99__FUNC__ \
4210      || defined __cplusplus || defined _MSC_VER)
4211 static void
4212 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
4213 #else
4214 static void
4215 yy_stack_print (yybottom, yytop)
4216     yytype_int16 *yybottom;
4217     yytype_int16 *yytop;
4218 #endif
4219 {
4220   YYFPRINTF (stderr, "Stack now");
4221   for (; yybottom <= yytop; yybottom++)
4222     {
4223       int yybot = *yybottom;
4224       YYFPRINTF (stderr, " %d", yybot);
4225     }
4226   YYFPRINTF (stderr, "\n");
4227 }
4228
4229 # define YY_STACK_PRINT(Bottom, Top)                                \
4230 do {                                                                \
4231   if (yydebug)                                                        \
4232     yy_stack_print ((Bottom), (Top));                                \
4233 } while (YYID (0))
4234
4235
4236 /*------------------------------------------------.
4237 | Report that the YYRULE is going to be reduced.  |
4238 `------------------------------------------------*/
4239
4240 #if (defined __STDC__ || defined __C99__FUNC__ \
4241      || defined __cplusplus || defined _MSC_VER)
4242 static void
4243 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
4244 #else
4245 static void
4246 yy_reduce_print (yyvsp, yyrule)
4247     YYSTYPE *yyvsp;
4248     int yyrule;
4249 #endif
4250 {
4251   int yynrhs = yyr2[yyrule];
4252   int yyi;
4253   unsigned long int yylno = yyrline[yyrule];
4254   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
4255              yyrule - 1, yylno);
4256   /* The symbols being reduced.  */
4257   for (yyi = 0; yyi < yynrhs; yyi++)
4258     {
4259       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
4260       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
4261                        &(yyvsp[(yyi + 1) - (yynrhs)])
4262                                               );
4263       YYFPRINTF (stderr, "\n");
4264     }
4265 }
4266
4267 # define YY_REDUCE_PRINT(Rule)                \
4268 do {                                        \
4269   if (yydebug)                                \
4270     yy_reduce_print (yyvsp, Rule); \
4271 } while (YYID (0))
4272
4273 /* Nonzero means print parse trace.  It is left uninitialized so that
4274    multiple parsers can coexist.  */
4275 int yydebug;
4276 #else /* !YYDEBUG */
4277 # define YYDPRINTF(Args)
4278 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
4279 # define YY_STACK_PRINT(Bottom, Top)
4280 # define YY_REDUCE_PRINT(Rule)
4281 #endif /* !YYDEBUG */
4282
4283
4284 /* YYINITDEPTH -- initial size of the parser's stacks.  */
4285 #ifndef        YYINITDEPTH
4286 # define YYINITDEPTH 200
4287 #endif
4288
4289 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
4290    if the built-in stack extension method is used).
4291
4292    Do not make this value too large; the results are undefined if
4293    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
4294    evaluated with infinite-precision integer arithmetic.  */
4295
4296 #ifndef YYMAXDEPTH
4297 # define YYMAXDEPTH 10000
4298 #endif
4299
4300 \f
4301
4302 #if YYERROR_VERBOSE
4303
4304 # ifndef yystrlen
4305 #  if defined __GLIBC__ && defined _STRING_H
4306 #   define yystrlen strlen
4307 #  else
4308 /* Return the length of YYSTR.  */
4309 #if (defined __STDC__ || defined __C99__FUNC__ \
4310      || defined __cplusplus || defined _MSC_VER)
4311 static YYSIZE_T
4312 yystrlen (const char *yystr)
4313 #else
4314 static YYSIZE_T
4315 yystrlen (yystr)
4316     const char *yystr;
4317 #endif
4318 {
4319   YYSIZE_T yylen;
4320   for (yylen = 0; yystr[yylen]; yylen++)
4321     continue;
4322   return yylen;
4323 }
4324 #  endif
4325 # endif
4326
4327 # ifndef yystpcpy
4328 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
4329 #   define yystpcpy stpcpy
4330 #  else
4331 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
4332    YYDEST.  */
4333 #if (defined __STDC__ || defined __C99__FUNC__ \
4334      || defined __cplusplus || defined _MSC_VER)
4335 static char *
4336 yystpcpy (char *yydest, const char *yysrc)
4337 #else
4338 static char *
4339 yystpcpy (yydest, yysrc)
4340     char *yydest;
4341     const char *yysrc;
4342 #endif
4343 {
4344   char *yyd = yydest;
4345   const char *yys = yysrc;
4346
4347   while ((*yyd++ = *yys++) != '\0')
4348     continue;
4349
4350   return yyd - 1;
4351 }
4352 #  endif
4353 # endif
4354
4355 # ifndef yytnamerr
4356 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
4357    quotes and backslashes, so that it's suitable for yyerror.  The
4358    heuristic is that double-quoting is unnecessary unless the string
4359    contains an apostrophe, a comma, or backslash (other than
4360    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
4361    null, do not copy; instead, return the length of what the result
4362    would have been.  */
4363 static YYSIZE_T
4364 yytnamerr (char *yyres, const char *yystr)
4365 {
4366   if (*yystr == '"')
4367     {
4368       YYSIZE_T yyn = 0;
4369       char const *yyp = yystr;
4370
4371       for (;;)
4372         switch (*++yyp)
4373           {
4374           case '\'':
4375           case ',':
4376             goto do_not_strip_quotes;
4377
4378           case '\\':
4379             if (*++yyp != '\\')
4380               goto do_not_strip_quotes;
4381             /* Fall through.  */
4382           default:
4383             if (yyres)
4384               yyres[yyn] = *yyp;
4385             yyn++;
4386             break;
4387
4388           case '"':
4389             if (yyres)
4390               yyres[yyn] = '\0';
4391             return yyn;
4392           }
4393     do_not_strip_quotes: ;
4394     }
4395
4396   if (! yyres)
4397     return yystrlen (yystr);
4398
4399   return yystpcpy (yyres, yystr) - yyres;
4400 }
4401 # endif
4402
4403 /* Copy into YYRESULT an error message about the unexpected token
4404    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
4405    including the terminating null byte.  If YYRESULT is null, do not
4406    copy anything; just return the number of bytes that would be
4407    copied.  As a special case, return 0 if an ordinary "syntax error"
4408    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
4409    size calculation.  */
4410 static YYSIZE_T
4411 yysyntax_error (char *yyresult, int yystate, int yychar)
4412 {
4413   int yyn = yypact[yystate];
4414
4415   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
4416     return 0;
4417   else
4418     {
4419       int yytype = YYTRANSLATE (yychar);
4420       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
4421       YYSIZE_T yysize = yysize0;
4422       YYSIZE_T yysize1;
4423       int yysize_overflow = 0;
4424       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
4425       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
4426       int yyx;
4427
4428 # if 0
4429       /* This is so xgettext sees the translatable formats that are
4430          constructed on the fly.  */
4431       YY_("syntax error, unexpected %s");
4432       YY_("syntax error, unexpected %s, expecting %s");
4433       YY_("syntax error, unexpected %s, expecting %s or %s");
4434       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
4435       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
4436 # endif
4437       char *yyfmt;
4438       char const *yyf;
4439       static char const yyunexpected[] = "syntax error, unexpected %s";
4440       static char const yyexpecting[] = ", expecting %s";
4441       static char const yyor[] = " or %s";
4442       char yyformat[sizeof yyunexpected
4443                     + sizeof yyexpecting - 1
4444                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
4445                        * (sizeof yyor - 1))];
4446       char const *yyprefix = yyexpecting;
4447
4448       /* Start YYX at -YYN if negative to avoid negative indexes in
4449          YYCHECK.  */
4450       int yyxbegin = yyn < 0 ? -yyn : 0;
4451
4452       /* Stay within bounds of both yycheck and yytname.  */
4453       int yychecklim = YYLAST - yyn + 1;
4454       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
4455       int yycount = 1;
4456
4457       yyarg[0] = yytname[yytype];
4458       yyfmt = yystpcpy (yyformat, yyunexpected);
4459
4460       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
4461         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
4462           {
4463             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
4464               {
4465                 yycount = 1;
4466                 yysize = yysize0;
4467                 yyformat[sizeof yyunexpected - 1] = '\0';
4468                 break;
4469               }
4470             yyarg[yycount++] = yytname[yyx];
4471             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
4472             yysize_overflow |= (yysize1 < yysize);
4473             yysize = yysize1;
4474             yyfmt = yystpcpy (yyfmt, yyprefix);
4475             yyprefix = yyor;
4476           }
4477
4478       yyf = YY_(yyformat);
4479       yysize1 = yysize + yystrlen (yyf);
4480       yysize_overflow |= (yysize1 < yysize);
4481       yysize = yysize1;
4482
4483       if (yysize_overflow)
4484         return YYSIZE_MAXIMUM;
4485
4486       if (yyresult)
4487         {
4488           /* Avoid sprintf, as that infringes on the user's name space.
4489              Don't have undefined behavior even if the translation
4490              produced a string with the wrong number of "%s"s.  */
4491           char *yyp = yyresult;
4492           int yyi = 0;
4493           while ((*yyp = *yyf) != '\0')
4494             {
4495               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
4496                 {
4497                   yyp += yytnamerr (yyp, yyarg[yyi++]);
4498                   yyf += 2;
4499                 }
4500               else
4501                 {
4502                   yyp++;
4503                   yyf++;
4504                 }
4505             }
4506         }
4507       return yysize;
4508     }
4509 }
4510 #endif /* YYERROR_VERBOSE */
4511 \f
4512
4513 /*-----------------------------------------------.
4514 | Release the memory associated to this symbol.  |
4515 `-----------------------------------------------*/
4516
4517 /*ARGSUSED*/
4518 #if (defined __STDC__ || defined __C99__FUNC__ \
4519      || defined __cplusplus || defined _MSC_VER)
4520 static void
4521 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
4522 #else
4523 static void
4524 yydestruct (yymsg, yytype, yyvaluep)
4525     const char *yymsg;
4526     int yytype;
4527     YYSTYPE *yyvaluep;
4528 #endif
4529 {
4530   YYUSE (yyvaluep);
4531
4532   if (!yymsg)
4533     yymsg = "Deleting";
4534   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
4535
4536   switch (yytype)
4537     {
4538
4539       default:
4540         break;
4541     }
4542 }
4543
4544 /* Prevent warnings from -Wmissing-prototypes.  */
4545 #ifdef YYPARSE_PARAM
4546 #if defined __STDC__ || defined __cplusplus
4547 int yyparse (void *YYPARSE_PARAM);
4548 #else
4549 int yyparse ();
4550 #endif
4551 #else /* ! YYPARSE_PARAM */
4552 #if defined __STDC__ || defined __cplusplus
4553 int yyparse (void);
4554 #else
4555 int yyparse ();
4556 #endif
4557 #endif /* ! YYPARSE_PARAM */
4558
4559
4560 /* The lookahead symbol.  */
4561 int yychar;
4562
4563 /* The semantic value of the lookahead symbol.  */
4564 YYSTYPE yylval;
4565
4566 /* Number of syntax errors so far.  */
4567 int yynerrs;
4568
4569
4570
4571 /*-------------------------.
4572 | yyparse or yypush_parse.  |
4573 `-------------------------*/
4574
4575 #ifdef YYPARSE_PARAM
4576 #if (defined __STDC__ || defined __C99__FUNC__ \
4577      || defined __cplusplus || defined _MSC_VER)
4578 int
4579 yyparse (void *YYPARSE_PARAM)
4580 #else
4581 int
4582 yyparse (YYPARSE_PARAM)
4583     void *YYPARSE_PARAM;
4584 #endif
4585 #else /* ! YYPARSE_PARAM */
4586 #if (defined __STDC__ || defined __C99__FUNC__ \
4587      || defined __cplusplus || defined _MSC_VER)
4588 int
4589 yyparse (void)
4590 #else
4591 int
4592 yyparse ()
4593
4594 #endif
4595 #endif
4596 {
4597
4598
4599     int yystate;
4600     /* Number of tokens to shift before error messages enabled.  */
4601     int yyerrstatus;
4602
4603     /* The stacks and their tools:
4604        `yyss': related to states.
4605        `yyvs': related to semantic values.
4606
4607        Refer to the stacks thru separate pointers, to allow yyoverflow
4608        to reallocate them elsewhere.  */
4609
4610     /* The state stack.  */
4611     yytype_int16 yyssa[YYINITDEPTH];
4612     yytype_int16 *yyss;
4613     yytype_int16 *yyssp;
4614
4615     /* The semantic value stack.  */
4616     YYSTYPE yyvsa[YYINITDEPTH];
4617     YYSTYPE *yyvs;
4618     YYSTYPE *yyvsp;
4619
4620     YYSIZE_T yystacksize;
4621
4622   int yyn;
4623   int yyresult;
4624   /* Lookahead token as an internal (translated) token number.  */
4625   int yytoken;
4626   /* The variables used to return semantic value and location from the
4627      action routines.  */
4628   YYSTYPE yyval;
4629
4630 #if YYERROR_VERBOSE
4631   /* Buffer for error messages, and its allocated size.  */
4632   char yymsgbuf[128];
4633   char *yymsg = yymsgbuf;
4634   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
4635 #endif
4636
4637 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
4638
4639   /* The number of symbols on the RHS of the reduced rule.
4640      Keep to zero when no symbol should be popped.  */
4641   int yylen = 0;
4642
4643   yytoken = 0;
4644   yyss = yyssa;
4645   yyvs = yyvsa;
4646   yystacksize = YYINITDEPTH;
4647
4648   YYDPRINTF ((stderr, "Starting parse\n"));
4649
4650   yystate = 0;
4651   yyerrstatus = 0;
4652   yynerrs = 0;
4653   yychar = YYEMPTY; /* Cause a token to be read.  */
4654
4655   /* Initialize stack pointers.
4656      Waste one element of value and location stack
4657      so that they stay on the same level as the state stack.
4658      The wasted elements are never initialized.  */
4659   yyssp = yyss;
4660   yyvsp = yyvs;
4661
4662   goto yysetstate;
4663
4664 /*------------------------------------------------------------.
4665 | yynewstate -- Push a new state, which is found in yystate.  |
4666 `------------------------------------------------------------*/
4667  yynewstate:
4668   /* In all cases, when you get here, the value and location stacks
4669      have just been pushed.  So pushing a state here evens the stacks.  */
4670   yyssp++;
4671
4672  yysetstate:
4673   *yyssp = yystate;
4674
4675   if (yyss + yystacksize - 1 <= yyssp)
4676     {
4677       /* Get the current used size of the three stacks, in elements.  */
4678       YYSIZE_T yysize = yyssp - yyss + 1;
4679
4680 #ifdef yyoverflow
4681       {
4682         /* Give user a chance to reallocate the stack.  Use copies of
4683            these so that the &'s don't force the real ones into
4684            memory.  */
4685         YYSTYPE *yyvs1 = yyvs;
4686         yytype_int16 *yyss1 = yyss;
4687
4688         /* Each stack pointer address is followed by the size of the
4689            data in use in that stack, in bytes.  This used to be a
4690            conditional around just the two extra args, but that might
4691            be undefined if yyoverflow is a macro.  */
4692         yyoverflow (YY_("memory exhausted"),
4693                     &yyss1, yysize * sizeof (*yyssp),
4694                     &yyvs1, yysize * sizeof (*yyvsp),
4695                     &yystacksize);
4696
4697         yyss = yyss1;
4698         yyvs = yyvs1;
4699       }
4700 #else /* no yyoverflow */
4701 # ifndef YYSTACK_RELOCATE
4702       goto yyexhaustedlab;
4703 # else
4704       /* Extend the stack our own way.  */
4705       if (YYMAXDEPTH <= yystacksize)
4706         goto yyexhaustedlab;
4707       yystacksize *= 2;
4708       if (YYMAXDEPTH < yystacksize)
4709         yystacksize = YYMAXDEPTH;
4710
4711       {
4712         yytype_int16 *yyss1 = yyss;
4713         union yyalloc *yyptr =
4714           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
4715         if (! yyptr)
4716           goto yyexhaustedlab;
4717         YYSTACK_RELOCATE (yyss_alloc, yyss);
4718         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
4719 #  undef YYSTACK_RELOCATE
4720         if (yyss1 != yyssa)
4721           YYSTACK_FREE (yyss1);
4722       }
4723 # endif
4724 #endif /* no yyoverflow */
4725
4726       yyssp = yyss + yysize - 1;
4727       yyvsp = yyvs + yysize - 1;
4728
4729       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
4730                   (unsigned long int) yystacksize));
4731
4732       if (yyss + yystacksize - 1 <= yyssp)
4733         YYABORT;
4734     }
4735
4736   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
4737
4738   if (yystate == YYFINAL)
4739     YYACCEPT;
4740
4741   goto yybackup;
4742
4743 /*-----------.
4744 | yybackup.  |
4745 `-----------*/
4746 yybackup:
4747
4748   /* Do appropriate processing given the current state.  Read a
4749      lookahead token if we need one and don't already have one.  */
4750
4751   /* First try to decide what to do without reference to lookahead token.  */
4752   yyn = yypact[yystate];
4753   if (yyn == YYPACT_NINF)
4754     goto yydefault;
4755
4756   /* Not known => get a lookahead token if don't already have one.  */
4757
4758   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
4759   if (yychar == YYEMPTY)
4760     {
4761       YYDPRINTF ((stderr, "Reading a token: "));
4762       yychar = YYLEX;
4763     }
4764
4765   if (yychar <= YYEOF)
4766     {
4767       yychar = yytoken = YYEOF;
4768       YYDPRINTF ((stderr, "Now at end of input.\n"));
4769     }
4770   else
4771     {
4772       yytoken = YYTRANSLATE (yychar);
4773       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
4774     }
4775
4776   /* If the proper action on seeing token YYTOKEN is to reduce or to
4777      detect an error, take that action.  */
4778   yyn += yytoken;
4779   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
4780     goto yydefault;
4781   yyn = yytable[yyn];
4782   if (yyn <= 0)
4783     {
4784       if (yyn == 0 || yyn == YYTABLE_NINF)
4785         goto yyerrlab;
4786       yyn = -yyn;
4787       goto yyreduce;
4788     }
4789
4790   /* Count tokens shifted since error; after three, turn off error
4791      status.  */
4792   if (yyerrstatus)
4793     yyerrstatus--;
4794
4795   /* Shift the lookahead token.  */
4796   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
4797
4798   /* Discard the shifted token.  */
4799   yychar = YYEMPTY;
4800
4801   yystate = yyn;
4802   *++yyvsp = yylval;
4803
4804   goto yynewstate;
4805
4806
4807 /*-----------------------------------------------------------.
4808 | yydefault -- do the default action for the current state.  |
4809 `-----------------------------------------------------------*/
4810 yydefault:
4811   yyn = yydefact[yystate];
4812   if (yyn == 0)
4813     goto yyerrlab;
4814   goto yyreduce;
4815
4816
4817 /*-----------------------------.
4818 | yyreduce -- Do a reduction.  |
4819 `-----------------------------*/
4820 yyreduce:
4821   /* yyn is the number of a rule to reduce with.  */
4822   yylen = yyr2[yyn];
4823
4824   /* If YYLEN is nonzero, implement the default value of the action:
4825      `$$ = $1'.
4826
4827      Otherwise, the following line sets YYVAL to garbage.
4828      This behavior is undocumented and Bison
4829      users should not rely upon it.  Assigning to YYVAL
4830      unconditionally makes the parser a bit smaller, and it avoids a
4831      GCC warning that YYVAL may be used uninitialized.  */
4832   yyval = yyvsp[1-yylen];
4833
4834
4835   YY_REDUCE_PRINT (yyn);
4836   switch (yyn)
4837     {
4838         case 3:
4839
4840 /* Line 1455 of yacc.c  */
4841 #line 1333 "vtkParse.y"
4842     { startSig(); clearTypeId(); clearTemplate(); closeComment(); }
4843     break;
4844
4845   case 14:
4846
4847 /* Line 1455 of yacc.c  */
4848 #line 1346 "vtkParse.y"
4849     { output_function(); }
4850     break;
4851
4852   case 15:
4853
4854 /* Line 1455 of yacc.c  */
4855 #line 1347 "vtkParse.y"
4856     { output_function(); }
4857     break;
4858
4859   case 16:
4860
4861 /* Line 1455 of yacc.c  */
4862 #line 1348 "vtkParse.y"
4863     { reject_function(); }
4864     break;
4865
4866   case 17:
4867
4868 /* Line 1455 of yacc.c  */
4869 #line 1349 "vtkParse.y"
4870     { output_function(); }
4871     break;
4872
4873   case 18:
4874
4875 /* Line 1455 of yacc.c  */
4876 #line 1350 "vtkParse.y"
4877     { reject_function(); }
4878     break;
4879
4880   case 19:
4881
4882 /* Line 1455 of yacc.c  */
4883 #line 1351 "vtkParse.y"
4884     { output_function(); }
4885     break;
4886
4887   case 20:
4888
4889 /* Line 1455 of yacc.c  */
4890 #line 1352 "vtkParse.y"
4891     { legacySig(); output_function(); }
4892     break;
4893
4894   case 28:
4895
4896 /* Line 1455 of yacc.c  */
4897 #line 1370 "vtkParse.y"
4898     { pushNamespace((yyvsp[(2) - (2)].str)); }
4899     break;
4900
4901   case 29:
4902
4903 /* Line 1455 of yacc.c  */
4904 #line 1371 "vtkParse.y"
4905     { popNamespace(); }
4906     break;
4907
4908   case 31:
4909
4910 /* Line 1455 of yacc.c  */
4911 #line 1378 "vtkParse.y"
4912     { start_class((yyvsp[(2) - (2)].str), 0); }
4913     break;
4914
4915   case 32:
4916
4917 /* Line 1455 of yacc.c  */
4918 #line 1379 "vtkParse.y"
4919     { end_class(); }
4920     break;
4921
4922   case 33:
4923
4924 /* Line 1455 of yacc.c  */
4925 #line 1380 "vtkParse.y"
4926     { reject_class((yyvsp[(2) - (5)].str), 0); }
4927     break;
4928
4929   case 34:
4930
4931 /* Line 1455 of yacc.c  */
4932 #line 1381 "vtkParse.y"
4933     { end_class(); }
4934     break;
4935
4936   case 35:
4937
4938 /* Line 1455 of yacc.c  */
4939 #line 1382 "vtkParse.y"
4940     { start_class((yyvsp[(2) - (2)].str), 1); }
4941     break;
4942
4943   case 36:
4944
4945 /* Line 1455 of yacc.c  */
4946 #line 1383 "vtkParse.y"
4947     { end_class(); }
4948     break;
4949
4950   case 37:
4951
4952 /* Line 1455 of yacc.c  */
4953 #line 1384 "vtkParse.y"
4954     { reject_class((yyvsp[(2) - (5)].str), 1); }
4955     break;
4956
4957   case 38:
4958
4959 /* Line 1455 of yacc.c  */
4960 #line 1385 "vtkParse.y"
4961     { end_class(); }
4962     break;
4963
4964   case 40:
4965
4966 /* Line 1455 of yacc.c  */
4967 #line 1387 "vtkParse.y"
4968     { start_class((yyvsp[(2) - (2)].str), 2); }
4969     break;
4970
4971   case 41:
4972
4973 /* Line 1455 of yacc.c  */
4974 #line 1388 "vtkParse.y"
4975     { end_class(); }
4976     break;
4977
4978   case 42:
4979
4980 /* Line 1455 of yacc.c  */
4981 #line 1389 "vtkParse.y"
4982     { reject_class((yyvsp[(2) - (5)].str), 2); }
4983     break;
4984
4985   case 43:
4986
4987 /* Line 1455 of yacc.c  */
4988 #line 1390 "vtkParse.y"
4989     { end_class(); }
4990     break;
4991
4992   case 46:
4993
4994 /* Line 1455 of yacc.c  */
4995 #line 1395 "vtkParse.y"
4996     { startSig(); clearTypeId(); clearTemplate();  closeComment(); }
4997     break;
4998
4999   case 58:
5000
5001 /* Line 1455 of yacc.c  */
5002 #line 1409 "vtkParse.y"
5003     { output_function(); }
5004     break;
5005
5006   case 59:
5007
5008 /* Line 1455 of yacc.c  */
5009 #line 1410 "vtkParse.y"
5010     { ClassInfo *tmpc = currentClass;
5011      currentClass = NULL; output_function(); currentClass = tmpc; }
5012     break;
5013
5014   case 60:
5015
5016 /* Line 1455 of yacc.c  */
5017 #line 1412 "vtkParse.y"
5018     { output_function(); }
5019     break;
5020
5021   case 61:
5022
5023 /* Line 1455 of yacc.c  */
5024 #line 1413 "vtkParse.y"
5025     { output_function(); }
5026     break;
5027
5028   case 62:
5029
5030 /* Line 1455 of yacc.c  */
5031 #line 1414 "vtkParse.y"
5032     { ClassInfo *tmpc = currentClass;
5033      currentClass = NULL; output_function(); currentClass = tmpc; }
5034     break;
5035
5036   case 63:
5037
5038 /* Line 1455 of yacc.c  */
5039 #line 1416 "vtkParse.y"
5040     { output_function(); }
5041     break;
5042
5043   case 64:
5044
5045 /* Line 1455 of yacc.c  */
5046 #line 1417 "vtkParse.y"
5047     { legacySig(); output_function(); }
5048     break;
5049
5050   case 75:
5051
5052 /* Line 1455 of yacc.c  */
5053 #line 1430 "vtkParse.y"
5054     {
5055       vtkParse_AddStringToArray(&currentClass->SuperClasses,
5056                                 &currentClass->NumberOfSuperClasses,
5057                                 vtkstrdup((yyvsp[(2) - (2)].str)));
5058     }
5059     break;
5060
5061   case 76:
5062
5063 /* Line 1455 of yacc.c  */
5064 #line 1436 "vtkParse.y"
5065     {access_level = VTK_ACCESS_PUBLIC;}
5066     break;
5067
5068   case 77:
5069
5070 /* Line 1455 of yacc.c  */
5071 #line 1437 "vtkParse.y"
5072     {access_level = VTK_ACCESS_PRIVATE;}
5073     break;
5074
5075   case 78:
5076
5077 /* Line 1455 of yacc.c  */
5078 #line 1438 "vtkParse.y"
5079     {access_level = VTK_ACCESS_PROTECTED;}
5080     break;
5081
5082   case 79:
5083
5084 /* Line 1455 of yacc.c  */
5085 #line 1448 "vtkParse.y"
5086     {start_enum((yyvsp[(2) - (2)].str));}
5087     break;
5088
5089   case 80:
5090
5091 /* Line 1455 of yacc.c  */
5092 #line 1449 "vtkParse.y"
5093     {end_enum();}
5094     break;
5095
5096   case 81:
5097
5098 /* Line 1455 of yacc.c  */
5099 #line 1450 "vtkParse.y"
5100     {start_enum(NULL);}
5101     break;
5102
5103   case 82:
5104
5105 /* Line 1455 of yacc.c  */
5106 #line 1451 "vtkParse.y"
5107     {end_enum();}
5108     break;
5109
5110   case 86:
5111
5112 /* Line 1455 of yacc.c  */
5113 #line 1455 "vtkParse.y"
5114     {add_enum((yyvsp[(1) - (1)].str), NULL);}
5115     break;
5116
5117   case 87:
5118
5119 /* Line 1455 of yacc.c  */
5120 #line 1456 "vtkParse.y"
5121     {add_enum((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));}
5122     break;
5123
5124   case 88:
5125
5126 /* Line 1455 of yacc.c  */
5127 #line 1458 "vtkParse.y"
5128     {postSig((yyvsp[(1) - (1)].str));}
5129     break;
5130
5131   case 89:
5132
5133 /* Line 1455 of yacc.c  */
5134 #line 1459 "vtkParse.y"
5135     {(yyval.str) = vtkstrdup(add_const_scope((yyvsp[(1) - (1)].str)));}
5136     break;
5137
5138   case 97:
5139
5140 /* Line 1455 of yacc.c  */
5141 #line 1464 "vtkParse.y"
5142     { (yyval.str) = (yyvsp[(1) - (1)].str); }
5143     break;
5144
5145   case 98:
5146
5147 /* Line 1455 of yacc.c  */
5148 #line 1465 "vtkParse.y"
5149     {postSig((yyvsp[(1) - (1)].str));}
5150     break;
5151
5152   case 99:
5153
5154 /* Line 1455 of yacc.c  */
5155 #line 1466 "vtkParse.y"
5156     {
5157          (yyval.str) = vtkstrcat((yyvsp[(1) - (3)].str), (yyvsp[(3) - (3)].str));
5158        }
5159     break;
5160
5161   case 100:
5162
5163 /* Line 1455 of yacc.c  */
5164 #line 1469 "vtkParse.y"
5165     {postSig((yyvsp[(2) - (2)].str));}
5166     break;
5167
5168   case 101:
5169
5170 /* Line 1455 of yacc.c  */
5171 #line 1470 "vtkParse.y"
5172     {
5173          (yyval.str) = vtkstrcat5((yyvsp[(1) - (4)].str), " ", (yyvsp[(2) - (4)].str), " ", (yyvsp[(4) - (4)].str));
5174        }
5175     break;
5176
5177   case 102:
5178
5179 /* Line 1455 of yacc.c  */
5180 #line 1473 "vtkParse.y"
5181     {postSig("(");}
5182     break;
5183
5184   case 103:
5185
5186 /* Line 1455 of yacc.c  */
5187 #line 1474 "vtkParse.y"
5188     {
5189          (yyval.str) = vtkstrcat3("(", (yyvsp[(3) - (4)].str), ")");
5190        }
5191     break;
5192
5193   case 104:
5194
5195 /* Line 1455 of yacc.c  */
5196 #line 1478 "vtkParse.y"
5197     { (yyval.str) = "-"; }
5198     break;
5199
5200   case 105:
5201
5202 /* Line 1455 of yacc.c  */
5203 #line 1478 "vtkParse.y"
5204     { (yyval.str) = "+"; }
5205     break;
5206
5207   case 106:
5208
5209 /* Line 1455 of yacc.c  */
5210 #line 1479 "vtkParse.y"
5211     { (yyval.str) = "~"; }
5212     break;
5213
5214   case 107:
5215
5216 /* Line 1455 of yacc.c  */
5217 #line 1481 "vtkParse.y"
5218     { (yyval.str) = "-"; }
5219     break;
5220
5221   case 108:
5222
5223 /* Line 1455 of yacc.c  */
5224 #line 1481 "vtkParse.y"
5225     { (yyval.str) = "+"; }
5226     break;
5227
5228   case 109:
5229
5230 /* Line 1455 of yacc.c  */
5231 #line 1482 "vtkParse.y"
5232     { (yyval.str) = "*"; }
5233     break;
5234
5235   case 110:
5236
5237 /* Line 1455 of yacc.c  */
5238 #line 1482 "vtkParse.y"
5239     { (yyval.str) = "/"; }
5240     break;
5241
5242   case 111:
5243
5244 /* Line 1455 of yacc.c  */
5245 #line 1483 "vtkParse.y"
5246     { (yyval.str) = "%"; }
5247     break;
5248
5249   case 112:
5250
5251 /* Line 1455 of yacc.c  */
5252 #line 1483 "vtkParse.y"
5253     { (yyval.str) = "&"; }
5254     break;
5255
5256   case 113:
5257
5258 /* Line 1455 of yacc.c  */
5259 #line 1484 "vtkParse.y"
5260     { (yyval.str) = "|"; }
5261     break;
5262
5263   case 114:
5264
5265 /* Line 1455 of yacc.c  */
5266 #line 1484 "vtkParse.y"
5267     { (yyval.str) = "^"; }
5268     break;
5269
5270   case 115:
5271
5272 /* Line 1455 of yacc.c  */
5273 #line 1485 "vtkParse.y"
5274     { (yyval.str) = ">>"; }
5275     break;
5276
5277   case 116:
5278
5279 /* Line 1455 of yacc.c  */
5280 #line 1486 "vtkParse.y"
5281     { (yyval.str) = "<<"; }
5282     break;
5283
5284   case 126:
5285
5286 /* Line 1455 of yacc.c  */
5287 #line 1509 "vtkParse.y"
5288     {
5289       ValueInfo *item = (ValueInfo *)malloc(sizeof(ValueInfo));
5290       vtkParse_InitValue(item);
5291       item->ItemType = VTK_TYPEDEF_INFO;
5292       item->Access = access_level;
5293
5294       handle_complex_type(item, (yyvsp[(2) - (4)].integer), (yyvsp[(3) - (4)].integer), getSig());
5295
5296       if (getVarName())
5297         {
5298         item->Name = vtkstrdup(getVarName());
5299         }
5300
5301       if (currentClass)
5302         {
5303         vtkParse_AddTypedefToClass(currentClass, item);
5304         }
5305       else
5306         {
5307         vtkParse_AddTypedefToNamespace(currentNamespace, item);
5308         }
5309     }
5310     break;
5311
5312   case 127:
5313
5314 /* Line 1455 of yacc.c  */
5315 #line 1531 "vtkParse.y"
5316     { }
5317     break;
5318
5319   case 128:
5320
5321 /* Line 1455 of yacc.c  */
5322 #line 1532 "vtkParse.y"
5323     { }
5324     break;
5325
5326   case 129:
5327
5328 /* Line 1455 of yacc.c  */
5329 #line 1533 "vtkParse.y"
5330     { }
5331     break;
5332
5333   case 130:
5334
5335 /* Line 1455 of yacc.c  */
5336 #line 1535 "vtkParse.y"
5337     { }
5338     break;
5339
5340   case 131:
5341
5342 /* Line 1455 of yacc.c  */
5343 #line 1542 "vtkParse.y"
5344     { add_using((yyvsp[(3) - (4)].str), 1); }
5345     break;
5346
5347   case 132:
5348
5349 /* Line 1455 of yacc.c  */
5350 #line 1543 "vtkParse.y"
5351     { add_using((yyvsp[(3) - (4)].str), 0); }
5352     break;
5353
5354   case 133:
5355
5356 /* Line 1455 of yacc.c  */
5357 #line 1544 "vtkParse.y"
5358     { add_using((yyvsp[(2) - (3)].str), 0); }
5359     break;
5360
5361   case 134:
5362
5363 /* Line 1455 of yacc.c  */
5364 #line 1551 "vtkParse.y"
5365     { postSig("template<> "); clearTypeId(); }
5366     break;
5367
5368   case 135:
5369
5370 /* Line 1455 of yacc.c  */
5371 #line 1552 "vtkParse.y"
5372     { postSig("template<");
5373           clearTypeId(); startTemplate(); }
5374     break;
5375
5376   case 136:
5377
5378 /* Line 1455 of yacc.c  */
5379 #line 1554 "vtkParse.y"
5380     { chopSig();
5381             if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); }
5382             postSig("> "); clearTypeId(); }
5383     break;
5384
5385   case 138:
5386
5387 /* Line 1455 of yacc.c  */
5388 #line 1559 "vtkParse.y"
5389     { chopSig(); postSig(", "); clearTypeId(); }
5390     break;
5391
5392   case 140:
5393
5394 /* Line 1455 of yacc.c  */
5395 #line 1563 "vtkParse.y"
5396     {
5397                TemplateArg *arg = (TemplateArg *)malloc(sizeof(TemplateArg));
5398                vtkParse_InitTemplateArg(arg);
5399                arg->Type = (yyvsp[(1) - (2)].integer);
5400                arg->Class = vtkstrdup(getTypeId());
5401                arg->Name = vtkstrdup(getVarName());
5402                arg->Value = vtkstrdup(getVarValue());
5403                vtkParse_AddArgumentToTemplate(currentTemplate, arg);
5404                }
5405     break;
5406
5407   case 141:
5408
5409 /* Line 1455 of yacc.c  */
5410 #line 1573 "vtkParse.y"
5411     {
5412                TemplateArg *arg = (TemplateArg *)malloc(sizeof(TemplateArg));
5413                vtkParse_InitTemplateArg(arg);
5414                arg->Name = vtkstrdup(getVarName());
5415                arg->Value = vtkstrdup(getVarValue());
5416                vtkParse_AddArgumentToTemplate(currentTemplate, arg);
5417                }
5418     break;
5419
5420   case 142:
5421
5422 /* Line 1455 of yacc.c  */
5423 #line 1580 "vtkParse.y"
5424     { pushTemplate(); }
5425     break;
5426
5427   case 143:
5428
5429 /* Line 1455 of yacc.c  */
5430 #line 1581 "vtkParse.y"
5431     {
5432                TemplateArgs *newTemplate = currentTemplate;
5433                TemplateArg *arg = (TemplateArg *)malloc(sizeof(TemplateArg));
5434                vtkParse_InitTemplateArg(arg);
5435                popTemplate();
5436                arg->Template = newTemplate;
5437                arg->Name = vtkstrdup(getVarName());
5438                arg->Value = vtkstrdup(getVarValue());
5439                vtkParse_AddArgumentToTemplate(currentTemplate, arg);
5440                }
5441     break;
5442
5443   case 144:
5444
5445 /* Line 1455 of yacc.c  */
5446 #line 1592 "vtkParse.y"
5447     {postSig("class ");}
5448     break;
5449
5450   case 145:
5451
5452 /* Line 1455 of yacc.c  */
5453 #line 1593 "vtkParse.y"
5454     {postSig("typename ");}
5455     break;
5456
5457   case 147:
5458
5459 /* Line 1455 of yacc.c  */
5460 #line 1595 "vtkParse.y"
5461     { setVarName((yyvsp[(1) - (1)].str)); }
5462     break;
5463
5464   case 163:
5465
5466 /* Line 1455 of yacc.c  */
5467 #line 1625 "vtkParse.y"
5468     {openSig(); preSig("~"); closeSig();}
5469     break;
5470
5471   case 164:
5472
5473 /* Line 1455 of yacc.c  */
5474 #line 1626 "vtkParse.y"
5475     {openSig(); preSig("~"); closeSig();}
5476     break;
5477
5478   case 165:
5479
5480 /* Line 1455 of yacc.c  */
5481 #line 1628 "vtkParse.y"
5482     {
5483          openSig(); preSig("virtual ~"); closeSig();
5484          currentFunction->IsVirtual = 1;
5485          }
5486     break;
5487
5488   case 168:
5489
5490 /* Line 1455 of yacc.c  */
5491 #line 1635 "vtkParse.y"
5492     {
5493          openSig();
5494          preSig("explicit ");
5495          closeSig();
5496          currentFunction->IsExplicit = 1;
5497          }
5498     break;
5499
5500   case 170:
5501
5502 /* Line 1455 of yacc.c  */
5503 #line 1643 "vtkParse.y"
5504     {
5505          openSig();
5506          preSig("virtual ");
5507          closeSig();
5508          currentFunction->IsVirtual = 1;
5509          }
5510     break;
5511
5512   case 178:
5513
5514 /* Line 1455 of yacc.c  */
5515 #line 1659 "vtkParse.y"
5516     {
5517          openSig();
5518          preSig("virtual ");
5519          closeSig();
5520          currentFunction->IsVirtual = 1;
5521          }
5522     break;
5523
5524   case 179:
5525
5526 /* Line 1455 of yacc.c  */
5527 #line 1668 "vtkParse.y"
5528     {
5529       postSig("(");
5530       set_return(currentFunction, getStorageType(), getTypeId(), 0);
5531     }
5532     break;
5533
5534   case 180:
5535
5536 /* Line 1455 of yacc.c  */
5537 #line 1672 "vtkParse.y"
5538     { postSig(")"); }
5539     break;
5540
5541   case 181:
5542
5543 /* Line 1455 of yacc.c  */
5544 #line 1673 "vtkParse.y"
5545     {
5546       (yyval.integer) = (yyvsp[(2) - (8)].integer);
5547       postSig(";");
5548       preSig("operator ");
5549       closeSig();
5550       currentFunction->IsOperator = 1;
5551       currentFunction->Name = "operator typecast";
5552       currentFunction->Comment = vtkstrdup(getComment());
5553       vtkParseDebug("Parsed operator", "operator typecast");
5554     }
5555     break;
5556
5557   case 182:
5558
5559 /* Line 1455 of yacc.c  */
5560 #line 1684 "vtkParse.y"
5561     { postSig(")"); }
5562     break;
5563
5564   case 183:
5565
5566 /* Line 1455 of yacc.c  */
5567 #line 1685 "vtkParse.y"
5568     {
5569       postSig(";");
5570       closeSig();
5571       currentFunction->Name = vtkstrdup((yyvsp[(1) - (3)].str));
5572       currentFunction->Comment = vtkstrdup(getComment());
5573       vtkParseDebug("Parsed operator", currentFunction->Name);
5574     }
5575     break;
5576
5577   case 184:
5578
5579 /* Line 1455 of yacc.c  */
5580 #line 1693 "vtkParse.y"
5581     {postSig((yyvsp[(2) - (2)].str));}
5582     break;
5583
5584   case 185:
5585
5586 /* Line 1455 of yacc.c  */
5587 #line 1694 "vtkParse.y"
5588     {
5589       postSig("(");
5590       currentFunction->IsOperator = 1;
5591       set_return(currentFunction, getStorageType(), getTypeId(), 0);
5592     }
5593     break;
5594
5595   case 186:
5596
5597 /* Line 1455 of yacc.c  */
5598 #line 1699 "vtkParse.y"
5599     { (yyval.str) = (yyvsp[(2) - (7)].str); }
5600     break;
5601
5602   case 187:
5603
5604 /* Line 1455 of yacc.c  */
5605 #line 1701 "vtkParse.y"
5606     { postSig(")"); }
5607     break;
5608
5609   case 188:
5610
5611 /* Line 1455 of yacc.c  */
5612 #line 1702 "vtkParse.y"
5613     {
5614       postSig(";");
5615       closeSig();
5616       currentFunction->Name = vtkstrdup((yyvsp[(1) - (3)].str));
5617       currentFunction->Comment = vtkstrdup(getComment());
5618       vtkParseDebug("Parsed func", currentFunction->Name);
5619     }
5620     break;
5621
5622   case 190:
5623
5624 /* Line 1455 of yacc.c  */
5625 #line 1712 "vtkParse.y"
5626     {
5627       postSig(" = 0");
5628       if (currentClass)
5629         {
5630         currentFunction->IsPureVirtual = 1;
5631         currentClass->IsAbstract = 1;
5632         }
5633     }
5634     break;
5635
5636   case 191:
5637
5638 /* Line 1455 of yacc.c  */
5639 #line 1721 "vtkParse.y"
5640     {
5641       postSig(" const = 0");
5642       currentFunction->IsConst = 1;
5643       if (currentClass)
5644         {
5645         currentFunction->IsPureVirtual = 1;
5646         currentClass->IsAbstract = 1;
5647         }
5648     }
5649     break;
5650
5651   case 192:
5652
5653 /* Line 1455 of yacc.c  */
5654 #line 1731 "vtkParse.y"
5655     {
5656       postSig(" const");
5657       currentFunction->IsConst = 1;
5658     }
5659     break;
5660
5661   case 195:
5662
5663 /* Line 1455 of yacc.c  */
5664 #line 1739 "vtkParse.y"
5665     {
5666       postSig("(");
5667       set_return(currentFunction, getStorageType(), getTypeId(), 0);
5668     }
5669     break;
5670
5671   case 196:
5672
5673 /* Line 1455 of yacc.c  */
5674 #line 1742 "vtkParse.y"
5675     { (yyval.str) = (yyvsp[(1) - (5)].str); }
5676     break;
5677
5678   case 197:
5679
5680 /* Line 1455 of yacc.c  */
5681 #line 1743 "vtkParse.y"
5682     {markSig(); postSig("<");}
5683     break;
5684
5685   case 198:
5686
5687 /* Line 1455 of yacc.c  */
5688 #line 1744 "vtkParse.y"
5689     {
5690       if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); }
5691       postSig(">(");
5692       set_return(currentFunction, getStorageType(), getTypeId(), 0);
5693       (yyval.str) = vtkstrcat((yyvsp[(1) - (6)].str), copySig());
5694     }
5695     break;
5696
5697   case 199:
5698
5699 /* Line 1455 of yacc.c  */
5700 #line 1749 "vtkParse.y"
5701     { (yyval.str) = (yyvsp[(7) - (9)].str); }
5702     break;
5703
5704   case 200:
5705
5706 /* Line 1455 of yacc.c  */
5707 #line 1751 "vtkParse.y"
5708     { postSig(");"); closeSig(); }
5709     break;
5710
5711   case 201:
5712
5713 /* Line 1455 of yacc.c  */
5714 #line 1752 "vtkParse.y"
5715     {
5716       currentFunction->Name = vtkstrdup((yyvsp[(1) - (3)].str));
5717       currentFunction->Comment = vtkstrdup(getComment());
5718       vtkParseDebug("Parsed func", currentFunction->Name);
5719     }
5720     break;
5721
5722   case 202:
5723
5724 /* Line 1455 of yacc.c  */
5725 #line 1758 "vtkParse.y"
5726     { postSig("("); }
5727     break;
5728
5729   case 209:
5730
5731 /* Line 1455 of yacc.c  */
5732 #line 1767 "vtkParse.y"
5733     {
5734       postSig(");");
5735       closeSig();
5736       currentFunction->Name = vtkstrcat("~", (yyvsp[(1) - (1)].str));
5737       currentFunction->Comment = vtkstrdup(getComment());
5738       vtkParseDebug("Parsed func", currentFunction->Name);
5739     }
5740     break;
5741
5742   case 210:
5743
5744 /* Line 1455 of yacc.c  */
5745 #line 1775 "vtkParse.y"
5746     { postSig("(");}
5747     break;
5748
5749   case 213:
5750
5751 /* Line 1455 of yacc.c  */
5752 #line 1781 "vtkParse.y"
5753     {clearTypeId();}
5754     break;
5755
5756   case 215:
5757
5758 /* Line 1455 of yacc.c  */
5759 #line 1784 "vtkParse.y"
5760     { currentFunction->IsVariadic = 1; postSig("..."); }
5761     break;
5762
5763   case 216:
5764
5765 /* Line 1455 of yacc.c  */
5766 #line 1785 "vtkParse.y"
5767     { clearTypeId(); }
5768     break;
5769
5770   case 217:
5771
5772 /* Line 1455 of yacc.c  */
5773 #line 1786 "vtkParse.y"
5774     { clearTypeId(); postSig(", "); }
5775     break;
5776
5777   case 219:
5778
5779 /* Line 1455 of yacc.c  */
5780 #line 1789 "vtkParse.y"
5781     { markSig(); }
5782     break;
5783
5784   case 220:
5785
5786 /* Line 1455 of yacc.c  */
5787 #line 1791 "vtkParse.y"
5788     {
5789       int i = currentFunction->NumberOfArguments;
5790       ValueInfo *arg = (ValueInfo *)malloc(sizeof(ValueInfo));
5791       vtkParse_InitValue(arg);
5792
5793       handle_complex_type(arg, (yyvsp[(2) - (3)].integer), (yyvsp[(3) - (3)].integer), copySig());
5794
5795       if (i < MAX_ARGS)
5796         {
5797         currentFunction->ArgTypes[i] = arg->Type;
5798         currentFunction->ArgClasses[i] = arg->Class;
5799         currentFunction->ArgCounts[i] = arg->Count;
5800         }
5801
5802       if (getVarName())
5803         {
5804         arg->Name = vtkstrdup(getVarName());
5805         }
5806
5807       vtkParse_AddArgumentToFunction(currentFunction, arg);
5808     }
5809     break;
5810
5811   case 221:
5812
5813 /* Line 1455 of yacc.c  */
5814 #line 1813 "vtkParse.y"
5815     {
5816       int i = currentFunction->NumberOfArguments-1;
5817       if (getVarValue())
5818         {
5819         currentFunction->Arguments[i]->Value = vtkstrdup(getVarValue());
5820         }
5821     }
5822     break;
5823
5824   case 222:
5825
5826 /* Line 1455 of yacc.c  */
5827 #line 1821 "vtkParse.y"
5828     {
5829       int i = currentFunction->NumberOfArguments;
5830       ValueInfo *arg = (ValueInfo *)malloc(sizeof(ValueInfo));
5831
5832       vtkParse_InitValue(arg);
5833
5834       markSig();
5835       postSig("void (*");
5836       postSig((yyvsp[(1) - (1)].str));
5837       postSig(")(void *) ");
5838
5839       handle_function_type(arg, (yyvsp[(1) - (1)].str), copySig());
5840
5841       if (i < MAX_ARGS)
5842         {
5843         currentFunction->ArgTypes[i] = arg->Type;
5844         currentFunction->ArgClasses[i] = arg->Class;
5845         currentFunction->ArgCounts[i] = arg->Count;
5846         }
5847
5848       vtkParse_AddArgumentToFunction(currentFunction, arg);
5849     }
5850     break;
5851
5852   case 225:
5853
5854 /* Line 1455 of yacc.c  */
5855 #line 1846 "vtkParse.y"
5856     {clearVarValue();}
5857     break;
5858
5859   case 227:
5860
5861 /* Line 1455 of yacc.c  */
5862 #line 1848 "vtkParse.y"
5863     { postSig("="); clearVarValue();}
5864     break;
5865
5866   case 228:
5867
5868 /* Line 1455 of yacc.c  */
5869 #line 1849 "vtkParse.y"
5870     { setVarValue((yyvsp[(3) - (3)].str)); }
5871     break;
5872
5873   case 232:
5874
5875 /* Line 1455 of yacc.c  */
5876 #line 1860 "vtkParse.y"
5877     {
5878        unsigned int type = getStorageType();
5879        ValueInfo *var = (ValueInfo *)malloc(sizeof(ValueInfo));
5880        vtkParse_InitValue(var);
5881        var->ItemType = VTK_VARIABLE_INFO;
5882        var->Access = access_level;
5883
5884        handle_complex_type(var, type, (yyvsp[(1) - (2)].integer), getSig());
5885
5886        var->Name = vtkstrdup(getVarName());
5887
5888        if (getVarValue())
5889          {
5890          var->Value = vtkstrdup(getVarValue());
5891          }
5892
5893        if ((var->Type & VTK_PARSE_BASE_TYPE) == VTK_PARSE_FUNCTION)
5894          {
5895          var->Type = var->Type;
5896          }
5897
5898        /* Is this a constant? */
5899        if (((type & VTK_PARSE_CONST) != 0) && var->Value != NULL &&
5900            (((type & VTK_PARSE_INDIRECT) == 0) ||
5901             ((type & VTK_PARSE_INDIRECT) == VTK_PARSE_ARRAY)))
5902          {
5903          var->ItemType = VTK_CONSTANT_INFO;
5904          if (currentClass)
5905            {
5906            vtkParse_AddConstantToClass(currentClass, var);
5907            }
5908          else
5909            {
5910            vtkParse_AddConstantToNamespace(currentNamespace, var);
5911            }
5912          }
5913        /* This is a true variable i.e. not constant */
5914        else
5915          {
5916          if (currentClass)
5917            {
5918            vtkParse_AddVariableToClass(currentClass, var);
5919            }
5920          else
5921            {
5922            vtkParse_AddVariableToNamespace(currentNamespace, var);
5923            }
5924          }
5925      }
5926     break;
5927
5928   case 236:
5929
5930 /* Line 1455 of yacc.c  */
5931 #line 1914 "vtkParse.y"
5932     {postSig(", ");}
5933     break;
5934
5935   case 238:
5936
5937 /* Line 1455 of yacc.c  */
5938 #line 1917 "vtkParse.y"
5939     { setStorageTypeIndirection(0); }
5940     break;
5941
5942   case 240:
5943
5944 /* Line 1455 of yacc.c  */
5945 #line 1918 "vtkParse.y"
5946     { setStorageTypeIndirection((yyvsp[(1) - (1)].integer)); }
5947     break;
5948
5949   case 242:
5950
5951 /* Line 1455 of yacc.c  */
5952 #line 1922 "vtkParse.y"
5953     { (yyval.integer) = 0; }
5954     break;
5955
5956   case 243:
5957
5958 /* Line 1455 of yacc.c  */
5959 #line 1923 "vtkParse.y"
5960     { postSig(")"); }
5961     break;
5962
5963   case 244:
5964
5965 /* Line 1455 of yacc.c  */
5966 #line 1925 "vtkParse.y"
5967     {
5968          const char *scope = getScope();
5969          unsigned int parens = add_indirection((yyvsp[(1) - (5)].integer), (yyvsp[(2) - (5)].integer));
5970          if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_FUNCTION) {
5971            if (scope) { scope = vtkstrndup(scope, strlen(scope) - 2); }
5972            getFunction()->Class = scope;
5973            (yyval.integer) = (parens | VTK_PARSE_FUNCTION); }
5974          else if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_ARRAY) {
5975            (yyval.integer) = add_indirection_to_array(parens); }
5976        }
5977     break;
5978
5979   case 245:
5980
5981 /* Line 1455 of yacc.c  */
5982 #line 1937 "vtkParse.y"
5983     { (yyval.integer) = 0; }
5984     break;
5985
5986   case 246:
5987
5988 /* Line 1455 of yacc.c  */
5989 #line 1938 "vtkParse.y"
5990     { postSig(")"); }
5991     break;
5992
5993   case 247:
5994
5995 /* Line 1455 of yacc.c  */
5996 #line 1940 "vtkParse.y"
5997     {
5998          const char *scope = getScope();
5999          unsigned int parens = add_indirection((yyvsp[(1) - (5)].integer), (yyvsp[(2) - (5)].integer));
6000          if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_FUNCTION) {
6001            if (scope) { scope = vtkstrndup(scope, strlen(scope) - 2); }
6002            getFunction()->Class = scope;
6003            (yyval.integer) = (parens | VTK_PARSE_FUNCTION); }
6004          else if ((yyvsp[(5) - (5)].integer) == VTK_PARSE_ARRAY) {
6005            (yyval.integer) = add_indirection_to_array(parens); }
6006        }
6007     break;
6008
6009   case 248:
6010
6011 /* Line 1455 of yacc.c  */
6012 #line 1951 "vtkParse.y"
6013     { postSig("("); scopeSig(""); (yyval.integer) = 0; }
6014     break;
6015
6016   case 249:
6017
6018 /* Line 1455 of yacc.c  */
6019 #line 1952 "vtkParse.y"
6020     { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("*");
6021                (yyval.integer) = VTK_PARSE_POINTER; }
6022     break;
6023
6024   case 250:
6025
6026 /* Line 1455 of yacc.c  */
6027 #line 1954 "vtkParse.y"
6028     { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("&");
6029                (yyval.integer) = VTK_PARSE_REF; }
6030     break;
6031
6032   case 251:
6033
6034 /* Line 1455 of yacc.c  */
6035 #line 1957 "vtkParse.y"
6036     { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("*");
6037                (yyval.integer) = VTK_PARSE_POINTER; }
6038     break;
6039
6040   case 252:
6041
6042 /* Line 1455 of yacc.c  */
6043 #line 1959 "vtkParse.y"
6044     { postSig("("); scopeSig((yyvsp[(1) - (1)].str)); postSig("&");
6045                (yyval.integer) = VTK_PARSE_REF; }
6046     break;
6047
6048   case 254:
6049
6050 /* Line 1455 of yacc.c  */
6051 #line 1962 "vtkParse.y"
6052     { currentFunction->IsConst = 1; }
6053     break;
6054
6055   case 255:
6056
6057 /* Line 1455 of yacc.c  */
6058 #line 1964 "vtkParse.y"
6059     { (yyval.integer) = 0; }
6060     break;
6061
6062   case 256:
6063
6064 /* Line 1455 of yacc.c  */
6065 #line 1965 "vtkParse.y"
6066     { pushFunction(); postSig("("); }
6067     break;
6068
6069   case 257:
6070
6071 /* Line 1455 of yacc.c  */
6072 #line 1966 "vtkParse.y"
6073     { (yyval.integer) = VTK_PARSE_FUNCTION; postSig(")"); popFunction(); }
6074     break;
6075
6076   case 258:
6077
6078 /* Line 1455 of yacc.c  */
6079 #line 1967 "vtkParse.y"
6080     { (yyval.integer) = VTK_PARSE_ARRAY; }
6081     break;
6082
6083   case 259:
6084
6085 /* Line 1455 of yacc.c  */
6086 #line 1970 "vtkParse.y"
6087     { (yyval.integer) = (yyvsp[(1) - (1)].integer); }
6088     break;
6089
6090   case 260:
6091
6092 /* Line 1455 of yacc.c  */
6093 #line 1972 "vtkParse.y"
6094     { (yyval.integer) = add_indirection((yyvsp[(1) - (2)].integer), (yyvsp[(2) - (2)].integer));}
6095     break;
6096
6097   case 261:
6098
6099 /* Line 1455 of yacc.c  */
6100 #line 1975 "vtkParse.y"
6101     { (yyval.integer) = (yyvsp[(1) - (1)].integer); }
6102     break;
6103
6104   case 262:
6105
6106 /* Line 1455 of yacc.c  */
6107 #line 1977 "vtkParse.y"
6108     { (yyval.integer) = add_indirection((yyvsp[(1) - (2)].integer), (yyvsp[(2) - (2)].integer));}
6109     break;
6110
6111   case 263:
6112
6113 /* Line 1455 of yacc.c  */
6114 #line 1979 "vtkParse.y"
6115     {clearVarName(); chopSig();}
6116     break;
6117
6118   case 265:
6119
6120 /* Line 1455 of yacc.c  */
6121 #line 1981 "vtkParse.y"
6122     {setVarName((yyvsp[(1) - (1)].str));}
6123     break;
6124
6125   case 266:
6126
6127 /* Line 1455 of yacc.c  */
6128 #line 1983 "vtkParse.y"
6129     {clearArray();}
6130     break;
6131
6132   case 268:
6133
6134 /* Line 1455 of yacc.c  */
6135 #line 1985 "vtkParse.y"
6136     {clearArray();}
6137     break;
6138
6139   case 270:
6140
6141 /* Line 1455 of yacc.c  */
6142 #line 1987 "vtkParse.y"
6143     {postSig("[");}
6144     break;
6145
6146   case 271:
6147
6148 /* Line 1455 of yacc.c  */
6149 #line 1987 "vtkParse.y"
6150     {postSig("]");}
6151     break;
6152
6153   case 274:
6154
6155 /* Line 1455 of yacc.c  */
6156 #line 1991 "vtkParse.y"
6157     {pushArraySize("");}
6158     break;
6159
6160   case 275:
6161
6162 /* Line 1455 of yacc.c  */
6163 #line 1992 "vtkParse.y"
6164     {pushArraySize((yyvsp[(1) - (1)].str));}
6165     break;
6166
6167   case 276:
6168
6169 /* Line 1455 of yacc.c  */
6170 #line 1998 "vtkParse.y"
6171     {postSig((yyvsp[(1) - (1)].str));}
6172     break;
6173
6174   case 277:
6175
6176 /* Line 1455 of yacc.c  */
6177 #line 1999 "vtkParse.y"
6178     {postSig((yyvsp[(1) - (1)].str));}
6179     break;
6180
6181   case 278:
6182
6183 /* Line 1455 of yacc.c  */
6184 #line 2000 "vtkParse.y"
6185     {postSig((yyvsp[(1) - (1)].str));}
6186     break;
6187
6188   case 279:
6189
6190 /* Line 1455 of yacc.c  */
6191 #line 2001 "vtkParse.y"
6192     {postSig((yyvsp[(1) - (1)].str));}
6193     break;
6194
6195   case 280:
6196
6197 /* Line 1455 of yacc.c  */
6198 #line 2002 "vtkParse.y"
6199     {postSig((yyvsp[(1) - (1)].str));}
6200     break;
6201
6202   case 281:
6203
6204 /* Line 1455 of yacc.c  */
6205 #line 2003 "vtkParse.y"
6206     {postSig((yyvsp[(1) - (1)].str));}
6207     break;
6208
6209   case 282:
6210
6211 /* Line 1455 of yacc.c  */
6212 #line 2004 "vtkParse.y"
6213     {postSig((yyvsp[(1) - (1)].str));}
6214     break;
6215
6216   case 283:
6217
6218 /* Line 1455 of yacc.c  */
6219 #line 2005 "vtkParse.y"
6220     {postSig((yyvsp[(1) - (1)].str));}
6221     break;
6222
6223   case 284:
6224
6225 /* Line 1455 of yacc.c  */
6226 #line 2006 "vtkParse.y"
6227     {postSig((yyvsp[(1) - (1)].str));}
6228     break;
6229
6230   case 285:
6231
6232 /* Line 1455 of yacc.c  */
6233 #line 2009 "vtkParse.y"
6234     {(yyval.str) = "vtkTypeInt8";}
6235     break;
6236
6237   case 286:
6238
6239 /* Line 1455 of yacc.c  */
6240 #line 2010 "vtkParse.y"
6241     {(yyval.str) = "vtkTypeUInt8";}
6242     break;
6243
6244   case 287:
6245
6246 /* Line 1455 of yacc.c  */
6247 #line 2011 "vtkParse.y"
6248     {(yyval.str) = "vtkTypeInt16";}
6249     break;
6250
6251   case 288:
6252
6253 /* Line 1455 of yacc.c  */
6254 #line 2012 "vtkParse.y"
6255     {(yyval.str) = "vtkTypeUInt16";}
6256     break;
6257
6258   case 289:
6259
6260 /* Line 1455 of yacc.c  */
6261 #line 2013 "vtkParse.y"
6262     {(yyval.str) = "vtkTypeInt32";}
6263     break;
6264
6265   case 290:
6266
6267 /* Line 1455 of yacc.c  */
6268 #line 2014 "vtkParse.y"
6269     {(yyval.str) = "vtkTypeUInt32";}
6270     break;
6271
6272   case 291:
6273
6274 /* Line 1455 of yacc.c  */
6275 #line 2015 "vtkParse.y"
6276     {(yyval.str) = "vtkTypeInt64";}
6277     break;
6278
6279   case 292:
6280
6281 /* Line 1455 of yacc.c  */
6282 #line 2016 "vtkParse.y"
6283     {(yyval.str) = "vtkTypeUInt64";}
6284     break;
6285
6286   case 293:
6287
6288 /* Line 1455 of yacc.c  */
6289 #line 2017 "vtkParse.y"
6290     {(yyval.str) = "vtkTypeFloat32";}
6291     break;
6292
6293   case 294:
6294
6295 /* Line 1455 of yacc.c  */
6296 #line 2018 "vtkParse.y"
6297     {(yyval.str) = "vtkTypeFloat64";}
6298     break;
6299
6300   case 295:
6301
6302 /* Line 1455 of yacc.c  */
6303 #line 2021 "vtkParse.y"
6304     {(yyval.str) = "vtkIdType";}
6305     break;
6306
6307   case 296:
6308
6309 /* Line 1455 of yacc.c  */
6310 #line 2022 "vtkParse.y"
6311     {(yyval.str) = "vtkFloatingPointType";}
6312     break;
6313
6314   case 297:
6315
6316 /* Line 1455 of yacc.c  */
6317 #line 2029 "vtkParse.y"
6318     {(yyval.integer) = (yyvsp[(1) - (1)].integer); setStorageType((yyval.integer));}
6319     break;
6320
6321   case 298:
6322
6323 /* Line 1455 of yacc.c  */
6324 #line 2030 "vtkParse.y"
6325     {(yyval.integer) = (yyvsp[(2) - (2)].integer); setStorageType((yyval.integer));}
6326     break;
6327
6328   case 299:
6329
6330 /* Line 1455 of yacc.c  */
6331 #line 2031 "vtkParse.y"
6332     {(yyval.integer) = (yyvsp[(2) - (2)].integer); setStorageType((yyval.integer));}
6333     break;
6334
6335   case 300:
6336
6337 /* Line 1455 of yacc.c  */
6338 #line 2033 "vtkParse.y"
6339     {(yyval.integer) = (yyvsp[(3) - (3)].integer); setStorageType((yyval.integer));}
6340     break;
6341
6342   case 301:
6343
6344 /* Line 1455 of yacc.c  */
6345 #line 2034 "vtkParse.y"
6346     {(yyval.integer) = (yyvsp[(2) - (2)].integer); setStorageType((yyval.integer));}
6347     break;
6348
6349   case 302:
6350
6351 /* Line 1455 of yacc.c  */
6352 #line 2035 "vtkParse.y"
6353     {(yyval.integer) = ((yyvsp[(1) - (2)].integer) | (yyvsp[(2) - (2)].integer));
6354       setStorageType((yyval.integer));}
6355     break;
6356
6357   case 303:
6358
6359 /* Line 1455 of yacc.c  */
6360 #line 2037 "vtkParse.y"
6361     {(yyval.integer) = ((yyvsp[(2) - (3)].integer) | (yyvsp[(3) - (3)].integer));
6362       setStorageType((yyval.integer));}
6363     break;
6364
6365   case 304:
6366
6367 /* Line 1455 of yacc.c  */
6368 #line 2041 "vtkParse.y"
6369     {postSig("static "); (yyval.integer) = VTK_PARSE_STATIC; }
6370     break;
6371
6372   case 305:
6373
6374 /* Line 1455 of yacc.c  */
6375 #line 2042 "vtkParse.y"
6376     {postSig("static "); (yyval.integer) = VTK_PARSE_STATIC; }
6377     break;
6378
6379   case 306:
6380
6381 /* Line 1455 of yacc.c  */
6382 #line 2044 "vtkParse.y"
6383     {(yyval.integer) = (yyvsp[(1) - (1)].integer);}
6384     break;
6385
6386   case 307:
6387
6388 /* Line 1455 of yacc.c  */
6389 #line 2045 "vtkParse.y"
6390     {(yyval.integer) = ((yyvsp[(1) - (2)].integer) | (yyvsp[(2) - (2)].integer));}
6391     break;
6392
6393   case 308:
6394
6395 /* Line 1455 of yacc.c  */
6396 #line 2047 "vtkParse.y"
6397     {(yyval.integer) = (yyvsp[(1) - (1)].integer);}
6398     break;
6399
6400   case 309:
6401
6402 /* Line 1455 of yacc.c  */
6403 #line 2048 "vtkParse.y"
6404     {(yyval.integer) = (VTK_PARSE_CONST | (yyvsp[(2) - (2)].integer));}
6405     break;
6406
6407   case 310:
6408
6409 /* Line 1455 of yacc.c  */
6410 #line 2049 "vtkParse.y"
6411     {(yyval.integer) = (VTK_PARSE_CONST | (yyvsp[(1) - (2)].integer));}
6412     break;
6413
6414   case 311:
6415
6416 /* Line 1455 of yacc.c  */
6417 #line 2051 "vtkParse.y"
6418     {postSig("const ");}
6419     break;
6420
6421   case 313:
6422
6423 /* Line 1455 of yacc.c  */
6424 #line 2055 "vtkParse.y"
6425     {postSig(" "); setTypeId((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN;}
6426     break;
6427
6428   case 314:
6429
6430 /* Line 1455 of yacc.c  */
6431 #line 2057 "vtkParse.y"
6432     {postSig(" "); setTypeId((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN;}
6433     break;
6434
6435   case 315:
6436
6437 /* Line 1455 of yacc.c  */
6438 #line 2058 "vtkParse.y"
6439     {postSig("typename ");}
6440     break;
6441
6442   case 316:
6443
6444 /* Line 1455 of yacc.c  */
6445 #line 2059 "vtkParse.y"
6446     {postSig(" "); setTypeId((yyvsp[(3) - (3)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN;}
6447     break;
6448
6449   case 317:
6450
6451 /* Line 1455 of yacc.c  */
6452 #line 2062 "vtkParse.y"
6453     { markSig(); postSig((yyvsp[(1) - (2)].str)); postSig("<");}
6454     break;
6455
6456   case 318:
6457
6458 /* Line 1455 of yacc.c  */
6459 #line 2063 "vtkParse.y"
6460     {chopSig(); if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); }
6461       postSig(">"); (yyval.str) = vtkstrdup(copySig()); clearTypeId();}
6462     break;
6463
6464   case 319:
6465
6466 /* Line 1455 of yacc.c  */
6467 #line 2065 "vtkParse.y"
6468     { markSig(); postSig((yyvsp[(1) - (2)].str)); postSig("<");}
6469     break;
6470
6471   case 320:
6472
6473 /* Line 1455 of yacc.c  */
6474 #line 2066 "vtkParse.y"
6475     {chopSig(); if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); }
6476       postSig(">"); (yyval.str) = vtkstrdup(copySig()); clearTypeId();}
6477     break;
6478
6479   case 321:
6480
6481 /* Line 1455 of yacc.c  */
6482 #line 2068 "vtkParse.y"
6483     { markSig(); postSig((yyvsp[(1) - (2)].str)); postSig("<");}
6484     break;
6485
6486   case 322:
6487
6488 /* Line 1455 of yacc.c  */
6489 #line 2069 "vtkParse.y"
6490     {chopSig(); if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); }
6491       postSig(">"); (yyval.str) = vtkstrdup(copySig()); clearTypeId();}
6492     break;
6493
6494   case 324:
6495
6496 /* Line 1455 of yacc.c  */
6497 #line 2073 "vtkParse.y"
6498     {chopSig(); postSig(", ");}
6499     break;
6500
6501   case 327:
6502
6503 /* Line 1455 of yacc.c  */
6504 #line 2076 "vtkParse.y"
6505     {postSig((yyvsp[(1) - (1)].str));}
6506     break;
6507
6508   case 328:
6509
6510 /* Line 1455 of yacc.c  */
6511 #line 2078 "vtkParse.y"
6512     {postSig((yyvsp[(1) - (1)].str));}
6513     break;
6514
6515   case 329:
6516
6517 /* Line 1455 of yacc.c  */
6518 #line 2079 "vtkParse.y"
6519     {postSig((yyvsp[(1) - (1)].str));}
6520     break;
6521
6522   case 330:
6523
6524 /* Line 1455 of yacc.c  */
6525 #line 2080 "vtkParse.y"
6526     {postSig((yyvsp[(1) - (1)].str));}
6527     break;
6528
6529   case 331:
6530
6531 /* Line 1455 of yacc.c  */
6532 #line 2081 "vtkParse.y"
6533     {postSig((yyvsp[(1) - (1)].str));}
6534     break;
6535
6536   case 332:
6537
6538 /* Line 1455 of yacc.c  */
6539 #line 2082 "vtkParse.y"
6540     {postSig((yyvsp[(1) - (1)].str));}
6541     break;
6542
6543   case 333:
6544
6545 /* Line 1455 of yacc.c  */
6546 #line 2083 "vtkParse.y"
6547     {postSig((yyvsp[(1) - (1)].str));}
6548     break;
6549
6550   case 334:
6551
6552 /* Line 1455 of yacc.c  */
6553 #line 2084 "vtkParse.y"
6554     {postSig((yyvsp[(1) - (1)].str));}
6555     break;
6556
6557   case 337:
6558
6559 /* Line 1455 of yacc.c  */
6560 #line 2089 "vtkParse.y"
6561     {
6562              (yyval.str) = vtkstrcat3((yyvsp[(1) - (3)].str), "::", (yyvsp[(3) - (3)].str));
6563              preScopeSig((yyvsp[(1) - (3)].str));
6564            }
6565     break;
6566
6567   case 338:
6568
6569 /* Line 1455 of yacc.c  */
6570 #line 2094 "vtkParse.y"
6571     {
6572              (yyval.str) = vtkstrcat3((yyvsp[(1) - (3)].str), "::", (yyvsp[(3) - (3)].str));
6573              preScopeSig("");
6574            }
6575     break;
6576
6577   case 346:
6578
6579 /* Line 1455 of yacc.c  */
6580 #line 2116 "vtkParse.y"
6581     { postSig("&"); (yyval.integer) = VTK_PARSE_REF;}
6582     break;
6583
6584   case 347:
6585
6586 /* Line 1455 of yacc.c  */
6587 #line 2117 "vtkParse.y"
6588     { postSig("&"); (yyval.integer) = ((yyvsp[(1) - (2)].integer) | VTK_PARSE_REF);}
6589     break;
6590
6591   case 348:
6592
6593 /* Line 1455 of yacc.c  */
6594 #line 2118 "vtkParse.y"
6595     { (yyval.integer) = (yyvsp[(1) - (1)].integer); }
6596     break;
6597
6598   case 349:
6599
6600 /* Line 1455 of yacc.c  */
6601 #line 2123 "vtkParse.y"
6602     { (yyval.integer) = (yyvsp[(1) - (1)].integer); }
6603     break;
6604
6605   case 350:
6606
6607 /* Line 1455 of yacc.c  */
6608 #line 2125 "vtkParse.y"
6609     {
6610        unsigned int n;
6611        n = (((yyvsp[(1) - (2)].integer) << 2) | (yyvsp[(2) - (2)].integer));
6612        if ((n & VTK_PARSE_INDIRECT) != n)
6613          {
6614          n = VTK_PARSE_BAD_INDIRECT;
6615          }
6616       (yyval.integer) = n;
6617     }
6618     break;
6619
6620   case 351:
6621
6622 /* Line 1455 of yacc.c  */
6623 #line 2136 "vtkParse.y"
6624     { postSig("*"); (yyval.integer) = VTK_PARSE_POINTER; }
6625     break;
6626
6627   case 352:
6628
6629 /* Line 1455 of yacc.c  */
6630 #line 2137 "vtkParse.y"
6631     { postSig("*const "); (yyval.integer) = VTK_PARSE_CONST_POINTER; }
6632     break;
6633
6634   case 353:
6635
6636 /* Line 1455 of yacc.c  */
6637 #line 2140 "vtkParse.y"
6638     { (yyval.integer) = (yyvsp[(1) - (1)].integer);}
6639     break;
6640
6641   case 354:
6642
6643 /* Line 1455 of yacc.c  */
6644 #line 2141 "vtkParse.y"
6645     { (yyval.integer) = (yyvsp[(2) - (2)].integer); }
6646     break;
6647
6648   case 355:
6649
6650 /* Line 1455 of yacc.c  */
6651 #line 2142 "vtkParse.y"
6652     { (yyval.integer) = (yyvsp[(2) - (2)].integer); }
6653     break;
6654
6655   case 356:
6656
6657 /* Line 1455 of yacc.c  */
6658 #line 2143 "vtkParse.y"
6659     { typeSig((yyvsp[(2) - (2)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN; }
6660     break;
6661
6662   case 357:
6663
6664 /* Line 1455 of yacc.c  */
6665 #line 2144 "vtkParse.y"
6666     { typeSig((yyvsp[(2) - (2)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN; }
6667     break;
6668
6669   case 358:
6670
6671 /* Line 1455 of yacc.c  */
6672 #line 2147 "vtkParse.y"
6673     { (yyval.integer) = (yyvsp[(1) - (1)].integer);}
6674     break;
6675
6676   case 359:
6677
6678 /* Line 1455 of yacc.c  */
6679 #line 2148 "vtkParse.y"
6680     { (yyval.integer) = (yyvsp[(1) - (1)].integer);}
6681     break;
6682
6683   case 360:
6684
6685 /* Line 1455 of yacc.c  */
6686 #line 2151 "vtkParse.y"
6687     { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_STRING;}
6688     break;
6689
6690   case 361:
6691
6692 /* Line 1455 of yacc.c  */
6693 #line 2152 "vtkParse.y"
6694     { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_UNICODE_STRING;}
6695     break;
6696
6697   case 362:
6698
6699 /* Line 1455 of yacc.c  */
6700 #line 2153 "vtkParse.y"
6701     { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_OSTREAM; }
6702     break;
6703
6704   case 363:
6705
6706 /* Line 1455 of yacc.c  */
6707 #line 2154 "vtkParse.y"
6708     { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_ISTREAM; }
6709     break;
6710
6711   case 364:
6712
6713 /* Line 1455 of yacc.c  */
6714 #line 2155 "vtkParse.y"
6715     { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_UNKNOWN; }
6716     break;
6717
6718   case 365:
6719
6720 /* Line 1455 of yacc.c  */
6721 #line 2156 "vtkParse.y"
6722     { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_OBJECT; }
6723     break;
6724
6725   case 366:
6726
6727 /* Line 1455 of yacc.c  */
6728 #line 2157 "vtkParse.y"
6729     { typeSig((yyvsp[(1) - (1)].str)); (yyval.integer) = VTK_PARSE_QOBJECT; }
6730     break;
6731
6732   case 367:
6733
6734 /* Line 1455 of yacc.c  */
6735 #line 2160 "vtkParse.y"
6736     { typeSig("void"); (yyval.integer) = VTK_PARSE_VOID;}
6737     break;
6738
6739   case 368:
6740
6741 /* Line 1455 of yacc.c  */
6742 #line 2161 "vtkParse.y"
6743     { typeSig("bool"); (yyval.integer) = VTK_PARSE_BOOL;}
6744     break;
6745
6746   case 369:
6747
6748 /* Line 1455 of yacc.c  */
6749 #line 2162 "vtkParse.y"
6750     { typeSig("ssize_t"); (yyval.integer) = VTK_PARSE_SSIZE_T;}
6751     break;
6752
6753   case 370:
6754
6755 /* Line 1455 of yacc.c  */
6756 #line 2163 "vtkParse.y"
6757     { typeSig("size_t"); (yyval.integer) = VTK_PARSE_SIZE_T;}
6758     break;
6759
6760   case 371:
6761
6762 /* Line 1455 of yacc.c  */
6763 #line 2164 "vtkParse.y"
6764     { typeSig("vtkTypeInt8"); (yyval.integer) = VTK_PARSE_INT8; }
6765     break;
6766
6767   case 372:
6768
6769 /* Line 1455 of yacc.c  */
6770 #line 2165 "vtkParse.y"
6771     { typeSig("vtkTypeUInt8"); (yyval.integer) = VTK_PARSE_UINT8; }
6772     break;
6773
6774   case 373:
6775
6776 /* Line 1455 of yacc.c  */
6777 #line 2166 "vtkParse.y"
6778     { typeSig("vtkTypeInt16"); (yyval.integer) = VTK_PARSE_INT16; }
6779     break;
6780
6781   case 374:
6782
6783 /* Line 1455 of yacc.c  */
6784 #line 2167 "vtkParse.y"
6785     { typeSig("vtkTypeUInt16"); (yyval.integer) = VTK_PARSE_UINT16; }
6786     break;
6787
6788   case 375:
6789
6790 /* Line 1455 of yacc.c  */
6791 #line 2168 "vtkParse.y"
6792     { typeSig("vtkTypeInt32"); (yyval.integer) = VTK_PARSE_INT32; }
6793     break;
6794
6795   case 376:
6796
6797 /* Line 1455 of yacc.c  */
6798 #line 2169 "vtkParse.y"
6799     { typeSig("vtkTypeUInt32"); (yyval.integer) = VTK_PARSE_UINT32; }
6800     break;
6801
6802   case 377:
6803
6804 /* Line 1455 of yacc.c  */
6805 #line 2170 "vtkParse.y"
6806     { typeSig("vtkTypeInt64"); (yyval.integer) = VTK_PARSE_INT64; }
6807     break;
6808
6809   case 378:
6810
6811 /* Line 1455 of yacc.c  */
6812 #line 2171 "vtkParse.y"
6813     { typeSig("vtkTypeUInt64"); (yyval.integer) = VTK_PARSE_UINT64; }
6814     break;
6815
6816   case 379:
6817
6818 /* Line 1455 of yacc.c  */
6819 #line 2172 "vtkParse.y"
6820     { typeSig("vtkTypeFloat32"); (yyval.integer) = VTK_PARSE_FLOAT32; }
6821     break;
6822
6823   case 380:
6824
6825 /* Line 1455 of yacc.c  */
6826 #line 2173 "vtkParse.y"
6827     { typeSig("vtkTypeFloat64"); (yyval.integer) = VTK_PARSE_FLOAT64; }
6828     break;
6829
6830   case 381:
6831
6832 /* Line 1455 of yacc.c  */
6833 #line 2174 "vtkParse.y"
6834     { typeSig("vtkIdType"); (yyval.integer) = VTK_PARSE_ID_TYPE;}
6835     break;
6836
6837   case 382:
6838
6839 /* Line 1455 of yacc.c  */
6840 #line 2175 "vtkParse.y"
6841     { typeSig("double"); (yyval.integer) = VTK_PARSE_DOUBLE;}
6842     break;
6843
6844   case 383:
6845
6846 /* Line 1455 of yacc.c  */
6847 #line 2176 "vtkParse.y"
6848     { typeSig("float"); (yyval.integer) = VTK_PARSE_FLOAT;}
6849     break;
6850
6851   case 384:
6852
6853 /* Line 1455 of yacc.c  */
6854 #line 2177 "vtkParse.y"
6855     { typeSig("double"); (yyval.integer) = VTK_PARSE_DOUBLE;}
6856     break;
6857
6858   case 385:
6859
6860 /* Line 1455 of yacc.c  */
6861 #line 2178 "vtkParse.y"
6862     { typeSig("long double"); (yyval.integer) = VTK_PARSE_UNKNOWN;}
6863     break;
6864
6865   case 386:
6866
6867 /* Line 1455 of yacc.c  */
6868 #line 2179 "vtkParse.y"
6869     { typeSig("char"); (yyval.integer) = VTK_PARSE_CHAR;}
6870     break;
6871
6872   case 387:
6873
6874 /* Line 1455 of yacc.c  */
6875 #line 2180 "vtkParse.y"
6876     { typeSig("signed char"); (yyval.integer) = VTK_PARSE_SIGNED_CHAR;}
6877     break;
6878
6879   case 388:
6880
6881 /* Line 1455 of yacc.c  */
6882 #line 2182 "vtkParse.y"
6883     { typeSig("unsigned char"); (yyval.integer) = VTK_PARSE_UNSIGNED_CHAR;}
6884     break;
6885
6886   case 389:
6887
6888 /* Line 1455 of yacc.c  */
6889 #line 2183 "vtkParse.y"
6890     { typeSig("int"); (yyval.integer) = VTK_PARSE_INT;}
6891     break;
6892
6893   case 390:
6894
6895 /* Line 1455 of yacc.c  */
6896 #line 2185 "vtkParse.y"
6897     { typeSig("unsigned int"); (yyval.integer) = VTK_PARSE_UNSIGNED_INT;}
6898     break;
6899
6900   case 391:
6901
6902 /* Line 1455 of yacc.c  */
6903 #line 2186 "vtkParse.y"
6904     { typeSig("short"); (yyval.integer) = VTK_PARSE_SHORT;}
6905     break;
6906
6907   case 392:
6908
6909 /* Line 1455 of yacc.c  */
6910 #line 2188 "vtkParse.y"
6911     { typeSig("unsigned short"); (yyval.integer) = VTK_PARSE_UNSIGNED_SHORT;}
6912     break;
6913
6914   case 393:
6915
6916 /* Line 1455 of yacc.c  */
6917 #line 2189 "vtkParse.y"
6918     { typeSig("long"); (yyval.integer) = VTK_PARSE_LONG;}
6919     break;
6920
6921   case 394:
6922
6923 /* Line 1455 of yacc.c  */
6924 #line 2191 "vtkParse.y"
6925     { typeSig("unsigned long"); (yyval.integer) = VTK_PARSE_UNSIGNED_LONG;}
6926     break;
6927
6928   case 395:
6929
6930 /* Line 1455 of yacc.c  */
6931 #line 2192 "vtkParse.y"
6932     { typeSig("long long"); (yyval.integer) = VTK_PARSE_LONG_LONG;}
6933     break;
6934
6935   case 396:
6936
6937 /* Line 1455 of yacc.c  */
6938 #line 2194 "vtkParse.y"
6939     {typeSig("unsigned long long");(yyval.integer)=VTK_PARSE_UNSIGNED_LONG_LONG;}
6940     break;
6941
6942   case 397:
6943
6944 /* Line 1455 of yacc.c  */
6945 #line 2195 "vtkParse.y"
6946     { typeSig("__int64"); (yyval.integer) = VTK_PARSE___INT64;}
6947     break;
6948
6949   case 398:
6950
6951 /* Line 1455 of yacc.c  */
6952 #line 2197 "vtkParse.y"
6953     { typeSig("unsigned __int64"); (yyval.integer) = VTK_PARSE_UNSIGNED___INT64;}
6954     break;
6955
6956   case 399:
6957
6958 /* Line 1455 of yacc.c  */
6959 #line 2198 "vtkParse.y"
6960     { typeSig("int"); (yyval.integer) = VTK_PARSE_INT; }
6961     break;
6962
6963   case 400:
6964
6965 /* Line 1455 of yacc.c  */
6966 #line 2199 "vtkParse.y"
6967     { typeSig("unsigned int"); (yyval.integer) = VTK_PARSE_UNSIGNED_INT; }
6968     break;
6969
6970   case 401:
6971
6972 /* Line 1455 of yacc.c  */
6973 #line 2205 "vtkParse.y"
6974     { (yyval.str) = (yyvsp[(1) - (1)].str); }
6975     break;
6976
6977   case 402:
6978
6979 /* Line 1455 of yacc.c  */
6980 #line 2206 "vtkParse.y"
6981     { postSig("{ "); }
6982     break;
6983
6984   case 403:
6985
6986 /* Line 1455 of yacc.c  */
6987 #line 2207 "vtkParse.y"
6988     {
6989           postSig("}");
6990           (yyval.str) = vtkstrcat4("{ ", (yyvsp[(3) - (6)].str), (yyvsp[(4) - (6)].str), " }");
6991         }
6992     break;
6993
6994   case 406:
6995
6996 /* Line 1455 of yacc.c  */
6997 #line 2214 "vtkParse.y"
6998     {(yyval.str) = "";}
6999     break;
7000
7001   case 407:
7002
7003 /* Line 1455 of yacc.c  */
7004 #line 2215 "vtkParse.y"
7005     { postSig(", "); }
7006     break;
7007
7008   case 408:
7009
7010 /* Line 1455 of yacc.c  */
7011 #line 2216 "vtkParse.y"
7012     {
7013           (yyval.str) = vtkstrcat3((yyvsp[(1) - (4)].str), ", ", (yyvsp[(4) - (4)].str));
7014         }
7015     break;
7016
7017   case 409:
7018
7019 /* Line 1455 of yacc.c  */
7020 #line 2220 "vtkParse.y"
7021     {(yyval.str) = (yyvsp[(1) - (1)].str);}
7022     break;
7023
7024   case 410:
7025
7026 /* Line 1455 of yacc.c  */
7027 #line 2221 "vtkParse.y"
7028     {postSig("+");}
7029     break;
7030
7031   case 411:
7032
7033 /* Line 1455 of yacc.c  */
7034 #line 2221 "vtkParse.y"
7035     {(yyval.str) = (yyvsp[(3) - (3)].str);}
7036     break;
7037
7038   case 412:
7039
7040 /* Line 1455 of yacc.c  */
7041 #line 2222 "vtkParse.y"
7042     {postSig("-");}
7043     break;
7044
7045   case 413:
7046
7047 /* Line 1455 of yacc.c  */
7048 #line 2223 "vtkParse.y"
7049     {
7050              (yyval.str) = vtkstrcat("-", (yyvsp[(3) - (3)].str));
7051              }
7052     break;
7053
7054   case 414:
7055
7056 /* Line 1455 of yacc.c  */
7057 #line 2226 "vtkParse.y"
7058     {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));}
7059     break;
7060
7061   case 415:
7062
7063 /* Line 1455 of yacc.c  */
7064 #line 2227 "vtkParse.y"
7065     {postSig("(");}
7066     break;
7067
7068   case 416:
7069
7070 /* Line 1455 of yacc.c  */
7071 #line 2227 "vtkParse.y"
7072     {postSig(")"); (yyval.str) = (yyvsp[(3) - (4)].str);}
7073     break;
7074
7075   case 417:
7076
7077 /* Line 1455 of yacc.c  */
7078 #line 2228 "vtkParse.y"
7079     {postSig((yyvsp[(1) - (2)].str)); postSig("<");}
7080     break;
7081
7082   case 418:
7083
7084 /* Line 1455 of yacc.c  */
7085 #line 2230 "vtkParse.y"
7086     {
7087              chopSig();
7088              if (getSig()[strlen(getSig())-1] == '>') { postSig(" "); }
7089              postSig(">(");
7090              }
7091     break;
7092
7093   case 419:
7094
7095 /* Line 1455 of yacc.c  */
7096 #line 2236 "vtkParse.y"
7097     {
7098              postSig(")");
7099              if (getTypeId()[strlen(getTypeId())-1] == '>')
7100                {
7101                (yyval.str) = vtkstrcat6(
7102                  (yyvsp[(1) - (9)].str), "<", getTypeId(), " >(", (yyvsp[(8) - (9)].str), ")");
7103                }
7104              else
7105                {
7106                (yyval.str) = vtkstrcat6(
7107                  (yyvsp[(1) - (9)].str), "<", getTypeId(), ">(", (yyvsp[(8) - (9)].str), ")");
7108                }
7109              }
7110     break;
7111
7112   case 420:
7113
7114 /* Line 1455 of yacc.c  */
7115 #line 2250 "vtkParse.y"
7116     { (yyval.str) = "static_cast"; }
7117     break;
7118
7119   case 421:
7120
7121 /* Line 1455 of yacc.c  */
7122 #line 2251 "vtkParse.y"
7123     { (yyval.str) = "const_cast"; }
7124     break;
7125
7126   case 422:
7127
7128 /* Line 1455 of yacc.c  */
7129 #line 2252 "vtkParse.y"
7130     { (yyval.str) = "dynamic_cast"; }
7131     break;
7132
7133   case 423:
7134
7135 /* Line 1455 of yacc.c  */
7136 #line 2253 "vtkParse.y"
7137     { (yyval.str) = "reinterpret_cast"; }
7138     break;
7139
7140   case 424:
7141
7142 /* Line 1455 of yacc.c  */
7143 #line 2255 "vtkParse.y"
7144     {(yyval.str) = (yyvsp[(1) - (1)].str);}
7145     break;
7146
7147   case 425:
7148
7149 /* Line 1455 of yacc.c  */
7150 #line 2257 "vtkParse.y"
7151     { (yyval.str) = vtkstrcat((yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].str)); }
7152     break;
7153
7154   case 426:
7155
7156 /* Line 1455 of yacc.c  */
7157 #line 2259 "vtkParse.y"
7158     {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));}
7159     break;
7160
7161   case 427:
7162
7163 /* Line 1455 of yacc.c  */
7164 #line 2260 "vtkParse.y"
7165     {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));}
7166     break;
7167
7168   case 428:
7169
7170 /* Line 1455 of yacc.c  */
7171 #line 2261 "vtkParse.y"
7172     {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));}
7173     break;
7174
7175   case 429:
7176
7177 /* Line 1455 of yacc.c  */
7178 #line 2262 "vtkParse.y"
7179     {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));}
7180     break;
7181
7182   case 430:
7183
7184 /* Line 1455 of yacc.c  */
7185 #line 2263 "vtkParse.y"
7186     {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));}
7187     break;
7188
7189   case 431:
7190
7191 /* Line 1455 of yacc.c  */
7192 #line 2264 "vtkParse.y"
7193     {(yyval.str) = (yyvsp[(1) - (1)].str); postSig((yyvsp[(1) - (1)].str));}
7194     break;
7195
7196   case 432:
7197
7198 /* Line 1455 of yacc.c  */
7199 #line 2266 "vtkParse.y"
7200     { (yyval.str) = vtkstrdup(add_const_scope((yyvsp[(1) - (1)].str))); }
7201     break;
7202
7203   case 433:
7204
7205 /* Line 1455 of yacc.c  */
7206 #line 2275 "vtkParse.y"
7207     {preSig("void Set"); postSig("(");}
7208     break;
7209
7210   case 434:
7211
7212 /* Line 1455 of yacc.c  */
7213 #line 2276 "vtkParse.y"
7214     {
7215    postSig("a);");
7216    currentFunction->Macro = "vtkSetMacro";
7217    currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (7)].str));
7218    currentFunction->Comment = vtkstrdup(getComment());
7219    add_argument(currentFunction, (yyvsp[(6) - (7)].integer), getTypeId(), 0);
7220    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7221    output_function();
7222    }
7223     break;
7224
7225   case 435:
7226
7227 /* Line 1455 of yacc.c  */
7228 #line 2285 "vtkParse.y"
7229     {postSig("Get");}
7230     break;
7231
7232   case 436:
7233
7234 /* Line 1455 of yacc.c  */
7235 #line 2286 "vtkParse.y"
7236     {markSig();}
7237     break;
7238
7239   case 437:
7240
7241 /* Line 1455 of yacc.c  */
7242 #line 2286 "vtkParse.y"
7243     {swapSig();}
7244     break;
7245
7246   case 438:
7247
7248 /* Line 1455 of yacc.c  */
7249 #line 2287 "vtkParse.y"
7250     {
7251    postSig("();");
7252    currentFunction->Macro = "vtkGetMacro";
7253    currentFunction->Name = vtkstrcat("Get", (yyvsp[(4) - (9)].str));
7254    currentFunction->Comment = vtkstrdup(getComment());
7255    set_return(currentFunction, (yyvsp[(7) - (9)].integer), getTypeId(), 0);
7256    output_function();
7257    }
7258     break;
7259
7260   case 439:
7261
7262 /* Line 1455 of yacc.c  */
7263 #line 2295 "vtkParse.y"
7264     {preSig("void Set");}
7265     break;
7266
7267   case 440:
7268
7269 /* Line 1455 of yacc.c  */
7270 #line 2296 "vtkParse.y"
7271     {
7272    postSig("(char *);");
7273    currentFunction->Macro = "vtkSetStringMacro";
7274    currentFunction->Name = vtkstrcat("Set", (yyvsp[(4) - (5)].str));
7275    currentFunction->Comment = vtkstrdup(getComment());
7276    add_argument(currentFunction, VTK_PARSE_CHAR_PTR, "char", 0);
7277    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7278    output_function();
7279    }
7280     break;
7281
7282   case 441:
7283
7284 /* Line 1455 of yacc.c  */
7285 #line 2305 "vtkParse.y"
7286     {preSig("char *Get");}
7287     break;
7288
7289   case 442:
7290
7291 /* Line 1455 of yacc.c  */
7292 #line 2306 "vtkParse.y"
7293     {
7294    postSig("();");
7295    currentFunction->Macro = "vtkGetStringMacro";
7296    currentFunction->Name = vtkstrcat("Get", (yyvsp[(4) - (5)].str));
7297    currentFunction->Comment = vtkstrdup(getComment());
7298    set_return(currentFunction, VTK_PARSE_CHAR_PTR, "char", 0);
7299    output_function();
7300    }
7301     break;
7302
7303   case 443:
7304
7305 /* Line 1455 of yacc.c  */
7306 #line 2314 "vtkParse.y"
7307     {startSig(); markSig();}
7308     break;
7309
7310   case 444:
7311
7312 /* Line 1455 of yacc.c  */
7313 #line 2314 "vtkParse.y"
7314     {closeSig();}
7315     break;
7316
7317   case 445:
7318
7319 /* Line 1455 of yacc.c  */
7320 #line 2316 "vtkParse.y"
7321     {
7322    const char *typeText;
7323    chopSig();
7324    typeText = copySig();
7325
7326    currentFunction->Macro = "vtkSetClampMacro";
7327    currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (10)].str));
7328    currentFunction->Signature =
7329      vtkstrcat5("void ", currentFunction->Name, "(", typeText, ");");
7330    currentFunction->Comment = vtkstrdup(getComment());
7331    add_argument(currentFunction, (yyvsp[(6) - (10)].integer), getTypeId(), 0);
7332    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7333    output_function();
7334
7335    currentFunction->Macro = "vtkSetClampMacro";
7336    currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (10)].str), "MinValue");
7337    currentFunction->Signature =
7338      vtkstrcat4(typeText, " ", currentFunction->Name, "();");
7339    currentFunction->Comment = vtkstrdup(getComment());
7340    set_return(currentFunction, (yyvsp[(6) - (10)].integer), getTypeId(), 0);
7341    output_function();
7342
7343    currentFunction->Macro = "vtkSetClampMacro";
7344    currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (10)].str), "MaxValue");
7345    currentFunction->Signature =
7346      vtkstrcat4(typeText, " ", currentFunction->Name, "();");
7347    currentFunction->Comment = vtkstrdup(getComment());
7348    set_return(currentFunction, (yyvsp[(6) - (10)].integer), getTypeId(), 0);
7349    output_function();
7350    }
7351     break;
7352
7353   case 446:
7354
7355 /* Line 1455 of yacc.c  */
7356 #line 2347 "vtkParse.y"
7357     {preSig("void Set"); postSig("("); }
7358     break;
7359
7360   case 447:
7361
7362 /* Line 1455 of yacc.c  */
7363 #line 2348 "vtkParse.y"
7364     {
7365    postSig("*);");
7366    currentFunction->Macro = "vtkSetObjectMacro";
7367    currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (7)].str));
7368    currentFunction->Comment = vtkstrdup(getComment());
7369    add_argument(currentFunction, VTK_PARSE_OBJECT_PTR, getTypeId(), 0);
7370    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7371    output_function();
7372    }
7373     break;
7374
7375   case 448:
7376
7377 /* Line 1455 of yacc.c  */
7378 #line 2357 "vtkParse.y"
7379     {postSig("*Get");}
7380     break;
7381
7382   case 449:
7383
7384 /* Line 1455 of yacc.c  */
7385 #line 2358 "vtkParse.y"
7386     {markSig();}
7387     break;
7388
7389   case 450:
7390
7391 /* Line 1455 of yacc.c  */
7392 #line 2358 "vtkParse.y"
7393     {swapSig();}
7394     break;
7395
7396   case 451:
7397
7398 /* Line 1455 of yacc.c  */
7399 #line 2359 "vtkParse.y"
7400     {
7401    postSig("();");
7402    currentFunction->Macro = "vtkGetObjectMacro";
7403    currentFunction->Name = vtkstrcat("Get", (yyvsp[(4) - (9)].str));
7404    currentFunction->Comment = vtkstrdup(getComment());
7405    set_return(currentFunction, VTK_PARSE_OBJECT_PTR, getTypeId(), 0);
7406    output_function();
7407    }
7408     break;
7409
7410   case 452:
7411
7412 /* Line 1455 of yacc.c  */
7413 #line 2368 "vtkParse.y"
7414     {
7415    currentFunction->Macro = "vtkBooleanMacro";
7416    currentFunction->Name = vtkstrcat((yyvsp[(3) - (6)].str), "On");
7417    currentFunction->Comment = vtkstrdup(getComment());
7418    currentFunction->Signature =
7419      vtkstrcat3("void ", currentFunction->Name, "();");
7420    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7421    output_function();
7422
7423    currentFunction->Macro = "vtkBooleanMacro";
7424    currentFunction->Name = vtkstrcat((yyvsp[(3) - (6)].str), "Off");
7425    currentFunction->Comment = vtkstrdup(getComment());
7426    currentFunction->Signature =
7427      vtkstrcat3("void ", currentFunction->Name, "();");
7428    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7429    output_function();
7430    }
7431     break;
7432
7433   case 453:
7434
7435 /* Line 1455 of yacc.c  */
7436 #line 2385 "vtkParse.y"
7437     {startSig(); markSig();}
7438     break;
7439
7440   case 454:
7441
7442 /* Line 1455 of yacc.c  */
7443 #line 2386 "vtkParse.y"
7444     {
7445    chopSig();
7446    outputSetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 2);
7447    }
7448     break;
7449
7450   case 455:
7451
7452 /* Line 1455 of yacc.c  */
7453 #line 2390 "vtkParse.y"
7454     {startSig(); markSig();}
7455     break;
7456
7457   case 456:
7458
7459 /* Line 1455 of yacc.c  */
7460 #line 2391 "vtkParse.y"
7461     {
7462    chopSig();
7463    outputGetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 2);
7464    }
7465     break;
7466
7467   case 457:
7468
7469 /* Line 1455 of yacc.c  */
7470 #line 2395 "vtkParse.y"
7471     {startSig(); markSig();}
7472     break;
7473
7474   case 458:
7475
7476 /* Line 1455 of yacc.c  */
7477 #line 2396 "vtkParse.y"
7478     {
7479    chopSig();
7480    outputSetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 3);
7481    }
7482     break;
7483
7484   case 459:
7485
7486 /* Line 1455 of yacc.c  */
7487 #line 2400 "vtkParse.y"
7488     {startSig(); markSig();}
7489     break;
7490
7491   case 460:
7492
7493 /* Line 1455 of yacc.c  */
7494 #line 2401 "vtkParse.y"
7495     {
7496    chopSig();
7497    outputGetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 3);
7498    }
7499     break;
7500
7501   case 461:
7502
7503 /* Line 1455 of yacc.c  */
7504 #line 2405 "vtkParse.y"
7505     {startSig(); markSig();}
7506     break;
7507
7508   case 462:
7509
7510 /* Line 1455 of yacc.c  */
7511 #line 2406 "vtkParse.y"
7512     {
7513    chopSig();
7514    outputSetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 4);
7515    }
7516     break;
7517
7518   case 463:
7519
7520 /* Line 1455 of yacc.c  */
7521 #line 2410 "vtkParse.y"
7522     {startSig(); markSig();}
7523     break;
7524
7525   case 464:
7526
7527 /* Line 1455 of yacc.c  */
7528 #line 2411 "vtkParse.y"
7529     {
7530    chopSig();
7531    outputGetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 4);
7532    }
7533     break;
7534
7535   case 465:
7536
7537 /* Line 1455 of yacc.c  */
7538 #line 2415 "vtkParse.y"
7539     {startSig(); markSig();}
7540     break;
7541
7542   case 466:
7543
7544 /* Line 1455 of yacc.c  */
7545 #line 2416 "vtkParse.y"
7546     {
7547    chopSig();
7548    outputSetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 6);
7549    }
7550     break;
7551
7552   case 467:
7553
7554 /* Line 1455 of yacc.c  */
7555 #line 2420 "vtkParse.y"
7556     {startSig(); markSig();}
7557     break;
7558
7559   case 468:
7560
7561 /* Line 1455 of yacc.c  */
7562 #line 2421 "vtkParse.y"
7563     {
7564    chopSig();
7565    outputGetVectorMacro((yyvsp[(3) - (7)].str), (yyvsp[(6) - (7)].integer), copySig(), 6);
7566    }
7567     break;
7568
7569   case 469:
7570
7571 /* Line 1455 of yacc.c  */
7572 #line 2425 "vtkParse.y"
7573     {startSig(); markSig();}
7574     break;
7575
7576   case 470:
7577
7578 /* Line 1455 of yacc.c  */
7579 #line 2427 "vtkParse.y"
7580     {
7581    const char *typeText;
7582    chopSig();
7583    typeText = copySig();
7584    currentFunction->Macro = "vtkSetVectorMacro";
7585    currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (9)].str));
7586    currentFunction->Signature =
7587      vtkstrcat7("void ", currentFunction->Name, "(", typeText,
7588                 " a[", (yyvsp[(8) - (9)].str), "]);");
7589    currentFunction->Comment = vtkstrdup(getComment());
7590    add_argument(currentFunction, (VTK_PARSE_POINTER | (yyvsp[(6) - (9)].integer)),
7591                 getTypeId(), (int)strtol((yyvsp[(8) - (9)].str), NULL, 0));
7592    set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7593    output_function();
7594    }
7595     break;
7596
7597   case 471:
7598
7599 /* Line 1455 of yacc.c  */
7600 #line 2442 "vtkParse.y"
7601     {startSig();}
7602     break;
7603
7604   case 472:
7605
7606 /* Line 1455 of yacc.c  */
7607 #line 2444 "vtkParse.y"
7608     {
7609    chopSig();
7610    currentFunction->Macro = "vtkGetVectorMacro";
7611    currentFunction->Name = vtkstrcat("Get", (yyvsp[(3) - (9)].str));
7612    postSig(" *");
7613    postSig(currentFunction->Name);
7614    postSig("();");
7615    currentFunction->Comment = vtkstrdup(getComment());
7616    set_return(currentFunction, (VTK_PARSE_POINTER | (yyvsp[(6) - (9)].integer)),
7617               getTypeId(), (int)strtol((yyvsp[(8) - (9)].str), NULL, 0));
7618    output_function();
7619    }
7620     break;
7621
7622   case 473:
7623
7624 /* Line 1455 of yacc.c  */
7625 #line 2457 "vtkParse.y"
7626     {
7627      currentFunction->Macro = "vtkViewportCoordinateMacro";
7628      currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (4)].str), "Coordinate");
7629      currentFunction->Signature =
7630        vtkstrcat3("vtkCoordinate *", currentFunction->Name, "();");
7631      currentFunction->Comment = vtkstrdup(getComment());
7632      set_return(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkCoordinate", 0);
7633      output_function();
7634
7635      currentFunction->Macro = "vtkViewportCoordinateMacro";
7636      currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str));
7637      currentFunction->Signature =
7638        vtkstrcat3("void ", currentFunction->Name, "(double, double);");
7639      currentFunction->Comment = vtkstrdup(getComment());
7640      add_argument(currentFunction, VTK_PARSE_DOUBLE, "double", 0);
7641      add_argument(currentFunction, VTK_PARSE_DOUBLE, "double", 0);
7642      set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7643      output_function();
7644
7645      currentFunction->Macro = "vtkViewportCoordinateMacro";
7646      currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str));
7647      currentFunction->Signature =
7648        vtkstrcat3("void ", currentFunction->Name, "(double a[2]);");
7649      currentFunction->Comment = vtkstrdup(getComment());
7650      add_argument(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 2);
7651      set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7652      output_function();
7653
7654      currentFunction->Macro = "vtkViewportCoordinateMacro";
7655      currentFunction->Name = vtkstrcat("Get", (yyvsp[(3) - (4)].str));
7656      currentFunction->Signature =
7657        vtkstrcat3("double *", currentFunction->Name, "();");
7658      currentFunction->Comment = vtkstrdup(getComment());
7659      set_return(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 2);
7660      output_function();
7661    }
7662     break;
7663
7664   case 474:
7665
7666 /* Line 1455 of yacc.c  */
7667 #line 2494 "vtkParse.y"
7668     {
7669      currentFunction->Macro = "vtkWorldCoordinateMacro";
7670      currentFunction->Name = vtkstrcat3("Get", (yyvsp[(3) - (4)].str), "Coordinate");
7671      currentFunction->Signature =
7672        vtkstrcat3("vtkCoordinate *", currentFunction->Name, "();");
7673      currentFunction->Comment = vtkstrdup(getComment());
7674      set_return(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkCoordinate", 0);
7675      output_function();
7676
7677      currentFunction->Macro = "vtkWorldCoordinateMacro";
7678      currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str));
7679      currentFunction->Signature =
7680        vtkstrcat3("void ", currentFunction->Name, "(double, double, double);");
7681      currentFunction->Comment = vtkstrdup(getComment());
7682      add_argument(currentFunction, VTK_PARSE_DOUBLE, "double", 0);
7683      add_argument(currentFunction, VTK_PARSE_DOUBLE, "double", 0);
7684      add_argument(currentFunction, VTK_PARSE_DOUBLE, "double", 0);
7685      set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7686      output_function();
7687
7688      currentFunction->Macro = "vtkWorldCoordinateMacro";
7689      currentFunction->Name = vtkstrcat("Set", (yyvsp[(3) - (4)].str));
7690      currentFunction->Signature =
7691        vtkstrcat3("void ", currentFunction->Name, "(double a[3]);");
7692      currentFunction->Comment = vtkstrdup(getComment());
7693      add_argument(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 3);
7694      set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
7695      output_function();
7696
7697      currentFunction->Macro = "vtkWorldCoordinateMacro";
7698      currentFunction->Name = vtkstrcat("Get", (yyvsp[(3) - (4)].str));
7699      currentFunction->Signature =
7700        vtkstrcat3("double *", currentFunction->Name, "();");
7701      currentFunction->Comment = vtkstrdup(getComment());
7702      set_return(currentFunction, VTK_PARSE_DOUBLE_PTR, "double", 3);
7703      output_function();
7704    }
7705     break;
7706
7707   case 475:
7708
7709 /* Line 1455 of yacc.c  */
7710 #line 2532 "vtkParse.y"
7711     {
7712    int is_concrete = 0;
7713    int i;
7714
7715    currentFunction->Macro = "vtkTypeMacro";
7716    currentFunction->Name = vtkstrdup("GetClassName");
7717    currentFunction->Signature = vtkstrdup("const char *GetClassName();");
7718    currentFunction->Comment = vtkstrdup(getComment());
7719    set_return(currentFunction, (VTK_PARSE_CONST | VTK_PARSE_CHAR_PTR),
7720               "char", 0);
7721    output_function();
7722
7723    currentFunction->Macro = "vtkTypeMacro";
7724    currentFunction->Name = vtkstrdup("IsA");
7725    currentFunction->Signature = vtkstrdup("int IsA(const char *name);");
7726    currentFunction->Comment = vtkstrdup(getComment());
7727    add_argument(currentFunction, (VTK_PARSE_CONST | VTK_PARSE_CHAR_PTR),
7728                 "char", 0);
7729    set_return(currentFunction, VTK_PARSE_INT, "int", 0);
7730    output_function();
7731
7732    currentFunction->Macro = "vtkTypeMacro";
7733    currentFunction->Name = vtkstrdup("NewInstance");
7734    currentFunction->Signature = vtkstrcat((yyvsp[(3) - (7)].str), " *NewInstance();");
7735    currentFunction->Comment = vtkstrdup(getComment());
7736    set_return(currentFunction, VTK_PARSE_OBJECT_PTR, (yyvsp[(3) - (7)].str), 0);
7737    output_function();
7738
7739    for (i = 0; i < NumberOfConcreteClasses; i++)
7740      {
7741      if (strcmp(currentClass->Name, ConcreteClasses[i]) == 0)
7742        {
7743        is_concrete = 1;
7744        break;
7745        }
7746      }
7747
7748    if ( is_concrete )
7749      {
7750      currentFunction->Macro = "vtkTypeMacro";
7751      currentFunction->Name = vtkstrdup("SafeDownCast");
7752      currentFunction->Signature =
7753        vtkstrcat((yyvsp[(3) - (7)].str), " *SafeDownCast(vtkObject* o);");
7754      currentFunction->Comment = vtkstrdup(getComment());
7755      add_argument(currentFunction, VTK_PARSE_OBJECT_PTR, "vtkObject", 0);
7756      set_return(currentFunction, (VTK_PARSE_STATIC | VTK_PARSE_OBJECT_PTR),
7757                 (yyvsp[(3) - (7)].str), 0);
7758      output_function();
7759      }
7760    }
7761     break;
7762
7763   case 476:
7764
7765 /* Line 1455 of yacc.c  */
7766 #line 2588 "vtkParse.y"
7767     { (yyval.str) = "operator()"; }
7768     break;
7769
7770   case 477:
7771
7772 /* Line 1455 of yacc.c  */
7773 #line 2589 "vtkParse.y"
7774     { (yyval.str) = "operator[]"; }
7775     break;
7776
7777   case 478:
7778
7779 /* Line 1455 of yacc.c  */
7780 #line 2590 "vtkParse.y"
7781     { (yyval.str) = "operator new[]"; }
7782     break;
7783
7784   case 479:
7785
7786 /* Line 1455 of yacc.c  */
7787 #line 2591 "vtkParse.y"
7788     { (yyval.str) = "operator delete[]"; }
7789     break;
7790
7791   case 481:
7792
7793 /* Line 1455 of yacc.c  */
7794 #line 2594 "vtkParse.y"
7795     { (yyval.str) = "operator="; }
7796     break;
7797
7798   case 482:
7799
7800 /* Line 1455 of yacc.c  */
7801 #line 2595 "vtkParse.y"
7802     { (yyval.str) = "operator*"; }
7803     break;
7804
7805   case 483:
7806
7807 /* Line 1455 of yacc.c  */
7808 #line 2595 "vtkParse.y"
7809     { (yyval.str) = "operator/"; }
7810     break;
7811
7812   case 484:
7813
7814 /* Line 1455 of yacc.c  */
7815 #line 2596 "vtkParse.y"
7816     { (yyval.str) = "operator-"; }
7817     break;
7818
7819   case 485:
7820
7821 /* Line 1455 of yacc.c  */
7822 #line 2596 "vtkParse.y"
7823     { (yyval.str) = "operator+"; }
7824     break;
7825
7826   case 486:
7827
7828 /* Line 1455 of yacc.c  */
7829 #line 2597 "vtkParse.y"
7830     { (yyval.str) = "operator!"; }
7831     break;
7832
7833   case 487:
7834
7835 /* Line 1455 of yacc.c  */
7836 #line 2597 "vtkParse.y"
7837     { (yyval.str) = "operator~"; }
7838     break;
7839
7840   case 488:
7841
7842 /* Line 1455 of yacc.c  */
7843 #line 2598 "vtkParse.y"
7844     { (yyval.str) = "operator,"; }
7845     break;
7846
7847   case 489:
7848
7849 /* Line 1455 of yacc.c  */
7850 #line 2598 "vtkParse.y"
7851     { (yyval.str) = "operator<"; }
7852     break;
7853
7854   case 490:
7855
7856 /* Line 1455 of yacc.c  */
7857 #line 2599 "vtkParse.y"
7858     { (yyval.str) = "operator>"; }
7859     break;
7860
7861   case 491:
7862
7863 /* Line 1455 of yacc.c  */
7864 #line 2599 "vtkParse.y"
7865     { (yyval.str) = "operator&"; }
7866     break;
7867
7868   case 492:
7869
7870 /* Line 1455 of yacc.c  */
7871 #line 2600 "vtkParse.y"
7872     { (yyval.str) = "operator|"; }
7873     break;
7874
7875   case 493:
7876
7877 /* Line 1455 of yacc.c  */
7878 #line 2600 "vtkParse.y"
7879     { (yyval.str) = "operator^"; }
7880     break;
7881
7882   case 494:
7883
7884 /* Line 1455 of yacc.c  */
7885 #line 2601 "vtkParse.y"
7886     { (yyval.str) = "operator%"; }
7887     break;
7888
7889   case 495:
7890
7891 /* Line 1455 of yacc.c  */
7892 #line 2602 "vtkParse.y"
7893     { (yyval.str) = "operator new"; }
7894     break;
7895
7896   case 496:
7897
7898 /* Line 1455 of yacc.c  */
7899 #line 2603 "vtkParse.y"
7900     { (yyval.str) = "operator delete"; }
7901     break;
7902
7903   case 497:
7904
7905 /* Line 1455 of yacc.c  */
7906 #line 2604 "vtkParse.y"
7907     { (yyval.str) = "operator<<="; }
7908     break;
7909
7910   case 498:
7911
7912 /* Line 1455 of yacc.c  */
7913 #line 2605 "vtkParse.y"
7914     { (yyval.str) = "operator>>="; }
7915     break;
7916
7917   case 499:
7918
7919 /* Line 1455 of yacc.c  */
7920 #line 2606 "vtkParse.y"
7921     { (yyval.str) = "operator<<"; }
7922     break;
7923
7924   case 500:
7925
7926 /* Line 1455 of yacc.c  */
7927 #line 2607 "vtkParse.y"
7928     { (yyval.str) = "operator>>"; }
7929     break;
7930
7931   case 501:
7932
7933 /* Line 1455 of yacc.c  */
7934 #line 2608 "vtkParse.y"
7935     { (yyval.str) = "operator->*"; }
7936     break;
7937
7938   case 502:
7939
7940 /* Line 1455 of yacc.c  */
7941 #line 2609 "vtkParse.y"
7942     { (yyval.str) = "operator->"; }
7943     break;
7944
7945   case 503:
7946
7947 /* Line 1455 of yacc.c  */
7948 #line 2610 "vtkParse.y"
7949     { (yyval.str) = "operator+="; }
7950     break;
7951
7952   case 504:
7953
7954 /* Line 1455 of yacc.c  */
7955 #line 2611 "vtkParse.y"
7956     { (yyval.str) = "operator-="; }
7957     break;
7958
7959   case 505:
7960
7961 /* Line 1455 of yacc.c  */
7962 #line 2612 "vtkParse.y"
7963     { (yyval.str) = "operator*="; }
7964     break;
7965
7966   case 506:
7967
7968 /* Line 1455 of yacc.c  */
7969 #line 2613 "vtkParse.y"
7970     { (yyval.str) = "operator/="; }
7971     break;
7972
7973   case 507:
7974
7975 /* Line 1455 of yacc.c  */
7976 #line 2614 "vtkParse.y"
7977     { (yyval.str) = "operator%="; }
7978     break;
7979
7980   case 508:
7981
7982 /* Line 1455 of yacc.c  */
7983 #line 2615 "vtkParse.y"
7984     { (yyval.str) = "operator++"; }
7985     break;
7986
7987   case 509:
7988
7989 /* Line 1455 of yacc.c  */
7990 #line 2616 "vtkParse.y"
7991     { (yyval.str) = "operator--"; }
7992     break;
7993
7994   case 510:
7995
7996 /* Line 1455 of yacc.c  */
7997 #line 2617 "vtkParse.y"
7998     { (yyval.str) = "operator&="; }
7999     break;
8000
8001   case 511:
8002
8003 /* Line 1455 of yacc.c  */
8004 #line 2618 "vtkParse.y"
8005     { (yyval.str) = "operator|="; }
8006     break;
8007
8008   case 512:
8009
8010 /* Line 1455 of yacc.c  */
8011 #line 2619 "vtkParse.y"
8012     { (yyval.str) = "operator^="; }
8013     break;
8014
8015   case 513:
8016
8017 /* Line 1455 of yacc.c  */
8018 #line 2620 "vtkParse.y"
8019     {(yyval.str) = "operator&&=";}
8020     break;
8021
8022   case 514:
8023
8024 /* Line 1455 of yacc.c  */
8025 #line 2621 "vtkParse.y"
8026     {(yyval.str) = "operator||=";}
8027     break;
8028
8029   case 515:
8030
8031 /* Line 1455 of yacc.c  */
8032 #line 2622 "vtkParse.y"
8033     { (yyval.str) = "operator&&"; }
8034     break;
8035
8036   case 516:
8037
8038 /* Line 1455 of yacc.c  */
8039 #line 2623 "vtkParse.y"
8040     { (yyval.str) = "operator||"; }
8041     break;
8042
8043   case 517:
8044
8045 /* Line 1455 of yacc.c  */
8046 #line 2624 "vtkParse.y"
8047     { (yyval.str) = "operator=="; }
8048     break;
8049
8050   case 518:
8051
8052 /* Line 1455 of yacc.c  */
8053 #line 2625 "vtkParse.y"
8054     { (yyval.str) = "operator!="; }
8055     break;
8056
8057   case 519:
8058
8059 /* Line 1455 of yacc.c  */
8060 #line 2626 "vtkParse.y"
8061     { (yyval.str) = "operator<="; }
8062     break;
8063
8064   case 520:
8065
8066 /* Line 1455 of yacc.c  */
8067 #line 2627 "vtkParse.y"
8068     { (yyval.str) = "operator>="; }
8069     break;
8070
8071
8072
8073 /* Line 1455 of yacc.c  */
8074 #line 8207 "vtkParse.tab.c"
8075       default: break;
8076     }
8077   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
8078
8079   YYPOPSTACK (yylen);
8080   yylen = 0;
8081   YY_STACK_PRINT (yyss, yyssp);
8082
8083   *++yyvsp = yyval;
8084
8085   /* Now `shift' the result of the reduction.  Determine what state
8086      that goes to, based on the state we popped back to and the rule
8087      number reduced by.  */
8088
8089   yyn = yyr1[yyn];
8090
8091   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
8092   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
8093     yystate = yytable[yystate];
8094   else
8095     yystate = yydefgoto[yyn - YYNTOKENS];
8096
8097   goto yynewstate;
8098
8099
8100 /*------------------------------------.
8101 | yyerrlab -- here on detecting error |
8102 `------------------------------------*/
8103 yyerrlab:
8104   /* If not already recovering from an error, report this error.  */
8105   if (!yyerrstatus)
8106     {
8107       ++yynerrs;
8108 #if ! YYERROR_VERBOSE
8109       yyerror (YY_("syntax error"));
8110 #else
8111       {
8112         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
8113         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
8114           {
8115             YYSIZE_T yyalloc = 2 * yysize;
8116             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
8117               yyalloc = YYSTACK_ALLOC_MAXIMUM;
8118             if (yymsg != yymsgbuf)
8119               YYSTACK_FREE (yymsg);
8120             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
8121             if (yymsg)
8122               yymsg_alloc = yyalloc;
8123             else
8124               {
8125                 yymsg = yymsgbuf;
8126                 yymsg_alloc = sizeof yymsgbuf;
8127               }
8128           }
8129
8130         if (0 < yysize && yysize <= yymsg_alloc)
8131           {
8132             (void) yysyntax_error (yymsg, yystate, yychar);
8133             yyerror (yymsg);
8134           }
8135         else
8136           {
8137             yyerror (YY_("syntax error"));
8138             if (yysize != 0)
8139               goto yyexhaustedlab;
8140           }
8141       }
8142 #endif
8143     }
8144
8145
8146
8147   if (yyerrstatus == 3)
8148     {
8149       /* If just tried and failed to reuse lookahead token after an
8150          error, discard it.  */
8151
8152       if (yychar <= YYEOF)
8153         {
8154           /* Return failure if at end of input.  */
8155           if (yychar == YYEOF)
8156             YYABORT;
8157         }
8158       else
8159         {
8160           yydestruct ("Error: discarding",
8161                       yytoken, &yylval);
8162           yychar = YYEMPTY;
8163         }
8164     }
8165
8166   /* Else will try to reuse lookahead token after shifting the error
8167      token.  */
8168   goto yyerrlab1;
8169
8170
8171 /*---------------------------------------------------.
8172 | yyerrorlab -- error raised explicitly by YYERROR.  |
8173 `---------------------------------------------------*/
8174 yyerrorlab:
8175
8176   /* Pacify compilers like GCC when the user code never invokes
8177      YYERROR and the label yyerrorlab therefore never appears in user
8178      code.  */
8179   if (/*CONSTCOND*/ 0)
8180      goto yyerrorlab;
8181
8182   /* Do not reclaim the symbols of the rule which action triggered
8183      this YYERROR.  */
8184   YYPOPSTACK (yylen);
8185   yylen = 0;
8186   YY_STACK_PRINT (yyss, yyssp);
8187   yystate = *yyssp;
8188
8189
8190 /*-------------------------------------------------------------.
8191 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
8192 `-------------------------------------------------------------*/
8193 yyerrlab1:
8194   yyerrstatus = 3;        /* Each real token shifted decrements this.  */
8195
8196   for (;;)
8197     {
8198       yyn = yypact[yystate];
8199       if (yyn != YYPACT_NINF)
8200         {
8201           yyn += YYTERROR;
8202           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
8203             {
8204               yyn = yytable[yyn];
8205               if (0 < yyn)
8206                 break;
8207             }
8208         }
8209
8210       /* Pop the current state because it cannot handle the error token.  */
8211       if (yyssp == yyss)
8212         YYABORT;
8213
8214
8215       yydestruct ("Error: popping",
8216                   yystos[yystate], yyvsp);
8217       YYPOPSTACK (1);
8218       yystate = *yyssp;
8219       YY_STACK_PRINT (yyss, yyssp);
8220     }
8221
8222   *++yyvsp = yylval;
8223
8224
8225   /* Shift the error token.  */
8226   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8227
8228   yystate = yyn;
8229   goto yynewstate;
8230
8231
8232 /*-------------------------------------.
8233 | yyacceptlab -- YYACCEPT comes here.  |
8234 `-------------------------------------*/
8235 yyacceptlab:
8236   yyresult = 0;
8237   goto yyreturn;
8238
8239 /*-----------------------------------.
8240 | yyabortlab -- YYABORT comes here.  |
8241 `-----------------------------------*/
8242 yyabortlab:
8243   yyresult = 1;
8244   goto yyreturn;
8245
8246 #if !defined(yyoverflow) || YYERROR_VERBOSE
8247 /*-------------------------------------------------.
8248 | yyexhaustedlab -- memory exhaustion comes here.  |
8249 `-------------------------------------------------*/
8250 yyexhaustedlab:
8251   yyerror (YY_("memory exhausted"));
8252   yyresult = 2;
8253   /* Fall through.  */
8254 #endif
8255
8256 yyreturn:
8257   if (yychar != YYEMPTY)
8258      yydestruct ("Cleanup: discarding lookahead",
8259                  yytoken, &yylval);
8260   /* Do not reclaim the symbols of the rule which action triggered
8261      this YYABORT or YYACCEPT.  */
8262   YYPOPSTACK (yylen);
8263   YY_STACK_PRINT (yyss, yyssp);
8264   while (yyssp != yyss)
8265     {
8266       yydestruct ("Cleanup: popping",
8267                   yystos[*yyssp], yyvsp);
8268       YYPOPSTACK (1);
8269     }
8270 #ifndef yyoverflow
8271   if (yyss != yyssa)
8272     YYSTACK_FREE (yyss);
8273 #endif
8274 #if YYERROR_VERBOSE
8275   if (yymsg != yymsgbuf)
8276     YYSTACK_FREE (yymsg);
8277 #endif
8278   /* Make sure YYID is used.  */
8279   return YYID (yyresult);
8280 }
8281
8282
8283
8284 /* Line 1675 of yacc.c  */
8285 #line 2652 "vtkParse.y"
8286
8287 #include <string.h>
8288 #include "lex.yy.c"
8289
8290 /* initialize the structure */
8291 void vtkParse_InitTemplateArgs(TemplateArgs *args)
8292 {
8293   args->NumberOfArguments = 0;
8294 }
8295
8296 void vtkParse_CopyTemplateArgs(TemplateArgs *args, const TemplateArgs *orig)
8297 {
8298   unsigned long i, n;
8299
8300   n = orig->NumberOfArguments;
8301   args->NumberOfArguments = n;
8302   args->Arguments = (TemplateArg **)malloc(n*sizeof(TemplateArg *));
8303
8304   for (i = 0; i < n; i++)
8305     {
8306     args->Arguments[i] = (TemplateArg *)malloc(sizeof(TemplateArg));
8307     vtkParse_CopyTemplateArg(args->Arguments[i], orig->Arguments[i]);
8308     }
8309 }
8310
8311 void vtkParse_InitTemplateArg(TemplateArg *arg)
8312 {
8313   arg->Template = NULL;
8314   arg->Type = 0;
8315   arg->Class = NULL;
8316   arg->Name = NULL;
8317   arg->Value = NULL;
8318 }
8319
8320 void vtkParse_CopyTemplateArg(TemplateArg *arg, const TemplateArg *orig)
8321 {
8322   arg->Template = NULL;
8323
8324   if (orig->Template)
8325     {
8326     arg->Template = (TemplateArgs *)malloc(sizeof(TemplateArgs));
8327     vtkParse_CopyTemplateArgs(arg->Template, orig->Template);
8328     }
8329
8330   arg->Type = orig->Type;
8331   arg->Class = orig->Class;
8332   arg->Name = orig->Name;
8333   arg->Value = orig->Value;
8334 }
8335
8336 /* initialize the structure */
8337 void vtkParse_InitFunction(FunctionInfo *func)
8338 {
8339   unsigned long i;
8340
8341   func->ItemType = VTK_FUNCTION_INFO;
8342   func->Access = VTK_ACCESS_PUBLIC;
8343   func->Name = NULL;
8344   func->Comment = NULL;
8345   func->Class = NULL;
8346   func->Signature = NULL;
8347   func->Template = NULL;
8348   func->NumberOfArguments = 0;
8349   func->ReturnValue = NULL;
8350   func->Macro = NULL;
8351   func->SizeHint = NULL;
8352   func->IsStatic = 0;
8353   func->IsVirtual = 0;
8354   func->IsPureVirtual = 0;
8355   func->IsOperator = 0;
8356   func->IsVariadic = 0;
8357   func->IsConst = 0;
8358   func->IsExplicit = 0;
8359
8360   /* everything below here is legacy information, *
8361    * maintained only for backwards compatibility  */
8362   func->ReturnType = VTK_PARSE_VOID;
8363   func->ReturnClass = NULL;
8364   func->HaveHint = 0;
8365   func->HintSize = 0;
8366   func->IsLegacy = 0;
8367   func->ArrayFailure = 0;
8368   func->IsPublic = 0;
8369   func->IsProtected = 0;
8370
8371   for (i = 0; i < MAX_ARGS; i++)
8372     {
8373     func->ArgTypes[i] = 0;
8374     func->ArgClasses[i] = 0;
8375     func->ArgCounts[i] = 0;
8376     }
8377 }
8378
8379 void vtkParse_CopyFunction(FunctionInfo *func, const FunctionInfo *orig)
8380 {
8381   unsigned long i, n;
8382
8383   func->ItemType = orig->ItemType;
8384   func->Access = orig->Access;
8385   func->Name = orig->Name;
8386   func->Comment = orig->Comment;
8387   func->Class = orig->Class;
8388   func->Signature = orig->Signature;
8389   func->Template = NULL;
8390
8391   if (orig->Template)
8392     {
8393     func->Template = (TemplateArgs *)malloc(sizeof(TemplateArgs));
8394     vtkParse_CopyTemplateArgs(func->Template, orig->Template);
8395     }
8396
8397   n = orig->NumberOfArguments;
8398   func->NumberOfArguments = n;
8399   if (n)
8400     {
8401     func->Arguments = (ValueInfo **)malloc(n*sizeof(ValueInfo *));
8402     for (i = 0; i < n; i++)
8403       {
8404       func->Arguments[i] = (ValueInfo *)malloc(sizeof(ValueInfo));
8405       vtkParse_CopyValue(func->Arguments[i], orig->Arguments[i]);
8406       }
8407     }
8408
8409   func->ReturnValue = NULL;
8410   if (orig->ReturnValue)
8411     {
8412     func->ReturnValue = (ValueInfo *)malloc(sizeof(ValueInfo));
8413     vtkParse_CopyValue(func->ReturnValue, orig->ReturnValue);
8414     }
8415
8416   func->Macro = orig->Macro;
8417   func->SizeHint = orig->SizeHint;
8418   func->IsStatic = orig->IsStatic;
8419   func->IsVirtual = orig->IsVirtual;
8420   func->IsPureVirtual = orig->IsPureVirtual;
8421   func->IsOperator = orig->IsOperator;
8422   func->IsVariadic = orig->IsVariadic;
8423   func->IsConst = orig->IsConst;
8424   func->IsExplicit = orig->IsExplicit;
8425
8426   /* everything below here is legacy information, *
8427    * maintained only for backwards compatibility  */
8428   func->ReturnType = orig->ReturnType;
8429   func->ReturnClass = orig->ReturnClass;
8430   func->HaveHint = orig->HaveHint;
8431   func->HintSize = orig->HintSize;
8432   func->IsLegacy = orig->IsLegacy;
8433   func->ArrayFailure = orig->ArrayFailure;
8434   func->IsPublic = orig->IsPublic;
8435   func->IsProtected = orig->IsProtected;
8436
8437   for (i = 0; i < MAX_ARGS; i++)
8438     {
8439     func->ArgTypes[i] = orig->ArgTypes[i];
8440     func->ArgClasses[i] = orig->ArgClasses[i];
8441     func->ArgCounts[i] = orig->ArgCounts[i];
8442     }
8443 }
8444
8445 /* initialize the structure */
8446 void vtkParse_InitValue(ValueInfo *val)
8447 {
8448   val->ItemType = VTK_VARIABLE_INFO;
8449   val->Access = VTK_ACCESS_PUBLIC;
8450   val->Name = NULL;
8451   val->Comment = NULL;
8452   val->Value = NULL;
8453   val->Type = 0;
8454   val->Class = NULL;
8455   val->Count = 0;
8456   val->CountHint = NULL;
8457   val->NumberOfDimensions = 0;
8458   val->Function = NULL;
8459   val->IsStatic = 0;
8460   val->IsEnum = 0;
8461 }
8462
8463 void vtkParse_CopyValue(ValueInfo *val, const ValueInfo *orig)
8464 {
8465   unsigned long i, n;
8466
8467   val->ItemType = orig->ItemType;
8468   val->Access = orig->Access;
8469   val->Name = orig->Name;
8470   val->Comment = orig->Comment;
8471   val->Value = orig->Value;
8472   val->Type = orig->Type;
8473   val->Class = orig->Class;
8474   val->Count = orig->Count;
8475   val->CountHint = orig->CountHint;
8476
8477   n = orig->NumberOfDimensions;
8478   val->NumberOfDimensions = n;
8479   if (n)
8480     {
8481     val->Dimensions = (const char **)malloc(n*sizeof(char *));
8482     for (i = 0; i < n; i++)
8483       {
8484       val->Dimensions[i] = orig->Dimensions[i];
8485       }
8486     }
8487
8488   val->Function = NULL;
8489   if (orig->Function)
8490     {
8491     val->Function = (FunctionInfo *)malloc(sizeof(FunctionInfo));
8492     vtkParse_CopyFunction(val->Function, orig->Function);
8493     }
8494
8495   val->IsStatic = orig->IsStatic;
8496   val->IsEnum = orig->IsEnum;
8497 }
8498
8499 /* initialize the structure */
8500 void vtkParse_InitEnum(EnumInfo *item)
8501 {
8502   item->ItemType = VTK_ENUM_INFO;
8503   item->Access = VTK_ACCESS_PUBLIC;
8504   item->Name = NULL;
8505   item->Comment = NULL;
8506 }
8507
8508 void vtkParse_CopyEnum(EnumInfo *item, const EnumInfo *orig)
8509 {
8510   item->ItemType = orig->ItemType;
8511   item->Access = orig->Access;
8512   item->Name = orig->Name;
8513   item->Comment = orig->Comment;
8514 }
8515
8516 /* initialize the structure */
8517 void vtkParse_InitUsing(UsingInfo *item)
8518 {
8519   item->ItemType = VTK_USING_INFO;
8520   item->Access = VTK_ACCESS_PUBLIC;
8521   item->Name = NULL;
8522   item->Comment = NULL;
8523   item->Scope = NULL;
8524 }
8525
8526 void vtkParse_CopyUsing(UsingInfo *item, const UsingInfo *orig)
8527 {
8528   item->ItemType = orig->ItemType;
8529   item->Access = orig->Access;
8530   item->Name = orig->Name;
8531   item->Comment = orig->Comment;
8532   item->Scope = orig->Scope;
8533 }
8534
8535 /* initialize the structure */
8536 void vtkParse_InitClass(ClassInfo *cls)
8537 {
8538   cls->ItemType = VTK_CLASS_INFO;
8539   cls->Access = VTK_ACCESS_PUBLIC;
8540   cls->Name = NULL;
8541   cls->Comment = NULL;
8542   cls->Template = NULL;
8543   cls->NumberOfSuperClasses = 0;
8544   cls->NumberOfItems = 0;
8545   cls->NumberOfClasses = 0;
8546   cls->NumberOfFunctions = 0;
8547   cls->NumberOfConstants = 0;
8548   cls->NumberOfVariables = 0;
8549   cls->NumberOfEnums = 0;
8550   cls->NumberOfTypedefs = 0;
8551   cls->NumberOfUsings = 0;
8552   cls->IsAbstract = 0;
8553   cls->HasDelete = 0;
8554 }
8555
8556 void vtkParse_CopyClass(ClassInfo *cls, const ClassInfo *orig)
8557 {
8558   unsigned long i, n;
8559
8560   cls->ItemType = orig->ItemType;
8561   cls->Access = orig->Access;
8562   cls->Name = orig->Name;
8563   cls->Comment = orig->Comment;
8564   cls->Template = NULL;
8565
8566   if (orig->Template)
8567     {
8568     cls->Template = (TemplateArgs *)malloc(sizeof(TemplateArgs));
8569     vtkParse_CopyTemplateArgs(cls->Template, orig->Template);
8570     }
8571
8572   n = orig->NumberOfSuperClasses;
8573   cls->NumberOfSuperClasses = n;
8574   if (n)
8575     {
8576     cls->SuperClasses = (const char **)malloc(n*sizeof(char *));
8577     for (i = 0; i < n; i++)
8578       {
8579       cls->SuperClasses[i] = orig->SuperClasses[i];
8580       }
8581     }
8582
8583   n = orig->NumberOfItems;
8584   cls->NumberOfItems = n;
8585   if (n)
8586     {
8587     cls->Items = (ItemInfo *)malloc(n*sizeof(ItemInfo));
8588     for (i = 0; i < n; i++)
8589       {
8590       cls->Items[i].Type = orig->Items[i].Type;
8591       cls->Items[i].Index = orig->Items[i].Index;
8592       }
8593     }
8594
8595   n = orig->NumberOfClasses;
8596   cls->NumberOfClasses = n;
8597   if (n)
8598     {
8599     cls->Classes = (ClassInfo **)malloc(n*sizeof(ClassInfo *));
8600     for (i = 0; i < n; i++)
8601       {
8602       cls->Classes[i] = (ClassInfo *)malloc(sizeof(ClassInfo));
8603       vtkParse_CopyClass(cls->Classes[i], orig->Classes[i]);
8604       }
8605     }
8606
8607   n = orig->NumberOfFunctions;
8608   cls->NumberOfFunctions = n;
8609   if (n)
8610     {
8611     cls->Functions = (FunctionInfo **)malloc(n*sizeof(FunctionInfo *));
8612     for (i = 0; i < n; i++)
8613       {
8614       cls->Functions[i] = (FunctionInfo *)malloc(sizeof(FunctionInfo));
8615       vtkParse_CopyFunction(cls->Functions[i], orig->Functions[i]);
8616       }
8617     }
8618
8619   n = orig->NumberOfConstants;
8620   cls->NumberOfConstants = n;
8621   if (n)
8622     {
8623     cls->Constants = (ValueInfo **)malloc(n*sizeof(ValueInfo *));
8624     for (i = 0; i < n; i++)
8625       {
8626       cls->Constants[i] = (ValueInfo *)malloc(sizeof(ValueInfo));
8627       vtkParse_CopyValue(cls->Constants[i], orig->Constants[i]);
8628       }
8629     }
8630
8631   n = orig->NumberOfVariables;
8632   cls->NumberOfVariables = n;
8633   if (n)
8634     {
8635     cls->Variables = (ValueInfo **)malloc(n*sizeof(ValueInfo *));
8636     for (i = 0; i < n; i++)
8637       {
8638       cls->Variables[i] = (ValueInfo *)malloc(sizeof(ValueInfo));
8639       vtkParse_CopyValue(cls->Variables[i], orig->Variables[i]);
8640       }
8641     }
8642
8643   n = orig->NumberOfEnums;
8644   cls->NumberOfEnums = n;
8645   if (n)
8646     {
8647     cls->Enums = (EnumInfo **)malloc(n*sizeof(EnumInfo *));
8648     for (i = 0; i < n; i++)
8649       {
8650       cls->Enums[i] = (EnumInfo *)malloc(sizeof(EnumInfo));
8651       vtkParse_CopyEnum(cls->Enums[i], orig->Enums[i]);
8652       }
8653     }
8654
8655   n = orig->NumberOfTypedefs;
8656   cls->NumberOfTypedefs = n;
8657   if (n)
8658     {
8659     cls->Typedefs = (ValueInfo **)malloc(n*sizeof(ValueInfo *));
8660     for (i = 0; i < n; i++)
8661       {
8662       cls->Typedefs[i] = (ValueInfo *)malloc(sizeof(ValueInfo));
8663       vtkParse_CopyValue(cls->Typedefs[i], orig->Typedefs[i]);
8664       }
8665     }
8666
8667   n = orig->NumberOfUsings;
8668   cls->NumberOfUsings = n;
8669   if (n)
8670     {
8671     cls->Usings = (UsingInfo **)malloc(n*sizeof(UsingInfo *));
8672     for (i = 0; i < n; i++)
8673       {
8674       cls->Usings[i] = (UsingInfo *)malloc(sizeof(UsingInfo));
8675       vtkParse_CopyUsing(cls->Usings[i], orig->Usings[i]);
8676       }
8677     }
8678
8679   cls->IsAbstract = orig->IsAbstract;
8680   cls->HasDelete = orig->HasDelete;
8681 }
8682
8683
8684 /* initialize the structure */
8685 void vtkParse_InitNamespace(NamespaceInfo *name_info)
8686 {
8687   /* namespace info */
8688   name_info->ItemType = VTK_NAMESPACE_INFO;
8689   name_info->Access = VTK_ACCESS_PUBLIC;
8690   name_info->Name = NULL;
8691   name_info->Comment = NULL;
8692   name_info->NumberOfItems = 0;
8693   name_info->NumberOfClasses = 0;
8694   name_info->NumberOfFunctions = 0;
8695   name_info->NumberOfConstants = 0;
8696   name_info->NumberOfVariables = 0;
8697   name_info->NumberOfEnums = 0;
8698   name_info->NumberOfTypedefs = 0;
8699   name_info->NumberOfUsings = 0;
8700   name_info->NumberOfNamespaces = 0;
8701 }
8702
8703 void vtkParse_CopyNamespace(NamespaceInfo *ninfo, const NamespaceInfo *orig)
8704 {
8705   unsigned long i, n;
8706
8707   /* namespace info */
8708   ninfo->ItemType = orig->ItemType;
8709   ninfo->Access = orig->Access;
8710   ninfo->Name = orig->Name;
8711   ninfo->Comment = orig->Comment;
8712
8713   n = orig->NumberOfItems;
8714   ninfo->NumberOfItems = n;
8715   if (n)
8716     {
8717     ninfo->Items = (ItemInfo *)malloc(n*sizeof(ItemInfo));
8718     for (i = 0; i < n; i++)
8719       {
8720       ninfo->Items[i].Type = orig->Items[i].Type;
8721       ninfo->Items[i].Index = orig->Items[i].Index;
8722       }
8723     }
8724
8725   n = orig->NumberOfClasses;
8726   ninfo->NumberOfClasses = n;
8727   if (n)
8728     {
8729     ninfo->Classes = (ClassInfo **)malloc(n*sizeof(ClassInfo *));
8730     for (i = 0; i < n; i++)
8731       {
8732       ninfo->Classes[i] = (ClassInfo *)malloc(sizeof(ClassInfo));
8733       vtkParse_CopyClass(ninfo->Classes[i], orig->Classes[i]);
8734       }
8735     }
8736
8737   n = orig->NumberOfFunctions;
8738   ninfo->NumberOfFunctions = n;
8739   if (n)
8740     {
8741     ninfo->Functions = (FunctionInfo **)malloc(n*sizeof(FunctionInfo *));
8742     for (i = 0; i < n; i++)
8743       {
8744       ninfo->Functions[i] = (FunctionInfo *)malloc(sizeof(FunctionInfo));
8745       vtkParse_CopyFunction(ninfo->Functions[i], orig->Functions[i]);
8746       }
8747     }
8748
8749   n = orig->NumberOfConstants;
8750   ninfo->NumberOfConstants = n;
8751   if (n)
8752     {
8753     ninfo->Constants = (ValueInfo **)malloc(n*sizeof(ValueInfo *));
8754     for (i = 0; i < n; i++)
8755       {
8756       ninfo->Constants[i] = (ValueInfo *)malloc(sizeof(ValueInfo));
8757       vtkParse_CopyValue(ninfo->Constants[i], orig->Constants[i]);
8758       }
8759     }
8760
8761   n = orig->NumberOfVariables;
8762   ninfo->NumberOfVariables = n;
8763   if (n)
8764     {
8765     ninfo->Variables = (ValueInfo **)malloc(n*sizeof(ValueInfo *));
8766     for (i = 0; i < n; i++)
8767       {
8768       ninfo->Variables[i] = (ValueInfo *)malloc(sizeof(ValueInfo));
8769       vtkParse_CopyValue(ninfo->Variables[i], orig->Variables[i]);
8770       }
8771     }
8772
8773   n = orig->NumberOfEnums;
8774   ninfo->NumberOfEnums = n;
8775   if (n)
8776     {
8777     ninfo->Enums = (EnumInfo **)malloc(n*sizeof(EnumInfo *));
8778     for (i = 0; i < n; i++)
8779       {
8780       ninfo->Enums[i] = (EnumInfo *)malloc(sizeof(EnumInfo));
8781       vtkParse_CopyEnum(ninfo->Enums[i], orig->Enums[i]);
8782       }
8783     }
8784
8785   n = orig->NumberOfTypedefs;
8786   ninfo->NumberOfTypedefs = n;
8787   if (n)
8788     {
8789     ninfo->Typedefs = (ValueInfo **)malloc(n*sizeof(ValueInfo *));
8790     for (i = 0; i < n; i++)
8791       {
8792       ninfo->Typedefs[i] = (ValueInfo *)malloc(sizeof(ValueInfo));
8793       vtkParse_CopyValue(ninfo->Typedefs[i], orig->Typedefs[i]);
8794       }
8795     }
8796
8797   n = orig->NumberOfUsings;
8798   ninfo->NumberOfUsings = n;
8799   if (n)
8800     {
8801     ninfo->Usings = (UsingInfo **)malloc(n*sizeof(UsingInfo *));
8802     for (i = 0; i < n; i++)
8803       {
8804       ninfo->Usings[i] = (UsingInfo *)malloc(sizeof(UsingInfo));
8805       vtkParse_CopyUsing(ninfo->Usings[i], orig->Usings[i]);
8806       }
8807     }
8808 }
8809
8810
8811
8812 void vtkParse_InitFile(FileInfo *file_info)
8813 {
8814   /* file info */
8815   file_info->FileName = NULL;
8816   file_info->NameComment = NULL;
8817   file_info->Description = NULL;
8818   file_info->Caveats = NULL;
8819   file_info->SeeAlso = NULL;
8820
8821   file_info->MainClass = NULL;
8822   file_info->Contents = NULL;
8823 }
8824
8825 void vtkParse_FreeTemplateArgs(TemplateArgs *template_info)
8826 {
8827   int j, m;
8828
8829   m = template_info->NumberOfArguments;
8830   for (j = 0; j < m; j++)
8831     {
8832     if (template_info->Arguments[j]->Template)
8833       {
8834       vtkParse_FreeTemplateArgs(template_info->Arguments[j]->Template);
8835       }
8836     free(template_info->Arguments[j]);
8837     }
8838
8839   free(template_info);
8840 }
8841
8842 void vtkParse_FreeFunction(FunctionInfo *function_info);
8843
8844 void vtkParse_FreeValue(ValueInfo *value_info)
8845 {
8846   if (value_info->NumberOfDimensions)
8847     {
8848     free((char **)value_info->Dimensions);
8849     }
8850   if (value_info->Function)
8851     {
8852     vtkParse_FreeFunction(value_info->Function);
8853     }
8854
8855   free(value_info);
8856 }
8857
8858 void vtkParse_FreeEnum(EnumInfo *enum_info)
8859 {
8860   free(enum_info);
8861 }
8862
8863 void vtkParse_FreeUsing(UsingInfo *using_info)
8864 {
8865   free(using_info);
8866 }
8867
8868 void vtkParse_FreeFunction(FunctionInfo *function_info)
8869 {
8870   int j, m;
8871
8872   if (function_info->Template)
8873     {
8874     vtkParse_FreeTemplateArgs(function_info->Template);
8875     }
8876
8877   m = function_info->NumberOfArguments;
8878   for (j = 0; j < m; j++) { vtkParse_FreeValue(function_info->Arguments[j]); }
8879   if (m > 0) { free(function_info->Arguments); }
8880
8881   if (function_info->ReturnValue)
8882     {
8883     vtkParse_FreeValue(function_info->ReturnValue);
8884     }
8885
8886   free(function_info);
8887 }
8888
8889 void vtkParse_FreeClass(ClassInfo *class_info)
8890 {
8891   int j, m;
8892
8893   if (class_info->Template) { vtkParse_FreeTemplateArgs(class_info->Template); }
8894
8895   m = class_info->NumberOfSuperClasses;
8896   if (m > 0) { free((char **)class_info->SuperClasses); }
8897
8898   m = class_info->NumberOfClasses;
8899   for (j = 0; j < m; j++) { vtkParse_FreeClass(class_info->Classes[j]); }
8900   if (m > 0) { free(class_info->Classes); }
8901
8902   m = class_info->NumberOfFunctions;
8903   for (j = 0; j < m; j++) { vtkParse_FreeFunction(class_info->Functions[j]); }
8904   if (m > 0) { free(class_info->Functions); }
8905
8906   m = class_info->NumberOfConstants;
8907   for (j = 0; j < m; j++) { vtkParse_FreeValue(class_info->Constants[j]); }
8908   if (m > 0) { free(class_info->Constants); }
8909
8910   m = class_info->NumberOfVariables;
8911   for (j = 0; j < m; j++) { vtkParse_FreeValue(class_info->Variables[j]); }
8912   if (m > 0) { free(class_info->Variables); }
8913
8914   m = class_info->NumberOfEnums;
8915   for (j = 0; j < m; j++) { vtkParse_FreeEnum(class_info->Enums[j]); }
8916   if (m > 0) { free(class_info->Enums); }
8917
8918   m = class_info->NumberOfTypedefs;
8919   for (j = 0; j < m; j++) { vtkParse_FreeValue(class_info->Typedefs[j]); }
8920   if (m > 0) { free(class_info->Typedefs); }
8921
8922   m = class_info->NumberOfUsings;
8923   for (j = 0; j < m; j++) { vtkParse_FreeUsing(class_info->Usings[j]); }
8924   if (m > 0) { free(class_info->Usings); }
8925
8926   if (class_info->NumberOfItems > 0) { free(class_info->Items); }
8927
8928   free(class_info);
8929 }
8930
8931 void vtkParse_FreeNamespace(NamespaceInfo *namespace_info)
8932 {
8933   int j, m;
8934
8935   m = namespace_info->NumberOfClasses;
8936   for (j = 0; j < m; j++) { vtkParse_FreeClass(namespace_info->Classes[j]); }
8937   if (m > 0) { free(namespace_info->Classes); }
8938
8939   m = namespace_info->NumberOfFunctions;
8940   for (j=0; j<m; j++) { vtkParse_FreeFunction(namespace_info->Functions[j]); }
8941   if (m > 0) { free(namespace_info->Functions); }
8942
8943   m = namespace_info->NumberOfConstants;
8944   for (j=0; j<m; j++) { vtkParse_FreeValue(namespace_info->Constants[j]); }
8945   if (m > 0) { free(namespace_info->Constants); }
8946
8947   m = namespace_info->NumberOfVariables;
8948   for (j=0; j<m; j++) { vtkParse_FreeValue(namespace_info->Variables[j]); }
8949   if (m > 0) { free(namespace_info->Variables); }
8950
8951   m = namespace_info->NumberOfEnums;
8952   for (j = 0; j < m; j++) { vtkParse_FreeEnum(namespace_info->Enums[j]); }
8953   if (m > 0) { free(namespace_info->Enums); }
8954
8955   m = namespace_info->NumberOfTypedefs;
8956   for (j = 0; j < m; j++) { vtkParse_FreeValue(namespace_info->Typedefs[j]); }
8957   if (m > 0) { free(namespace_info->Typedefs); }
8958
8959   m = namespace_info->NumberOfUsings;
8960   for (j = 0; j < m; j++) { vtkParse_FreeUsing(namespace_info->Usings[j]); }
8961   if (m > 0) { free(namespace_info->Usings); }
8962
8963   m = namespace_info->NumberOfNamespaces;
8964   for (j=0; j<m; j++) {vtkParse_FreeNamespace(namespace_info->Namespaces[j]);}
8965   if (m > 0) { free(namespace_info->Namespaces); }
8966
8967   free(namespace_info);
8968 }
8969
8970 /* check whether this is the class we are looking for */
8971 void start_class(const char *classname, int is_struct_or_union)
8972 {
8973   ClassInfo *outerClass = currentClass;
8974   pushClass();
8975   currentClass = (ClassInfo *)malloc(sizeof(ClassInfo));
8976   vtkParse_InitClass(currentClass);
8977   currentClass->Name = vtkstrdup(classname);
8978   if (is_struct_or_union == 1)
8979     {
8980     currentClass->ItemType = VTK_STRUCT_INFO;
8981     }
8982   if (is_struct_or_union == 2)
8983     {
8984     currentClass->ItemType = VTK_UNION_INFO;
8985     }
8986
8987   if (outerClass)
8988     {
8989     vtkParse_AddClassToClass(outerClass, currentClass);
8990     }
8991   else
8992     {
8993     vtkParse_AddClassToNamespace(currentNamespace, currentClass);
8994     }
8995
8996   /* template information */
8997   if (currentTemplate)
8998     {
8999     currentClass->Template = currentTemplate;
9000     currentTemplate = NULL;
9001     }
9002
9003   /* comment, if any */
9004   currentClass->Comment = vtkstrdup(getComment());
9005
9006   access_level = VTK_ACCESS_PRIVATE;
9007   if (is_struct_or_union)
9008     {
9009     access_level = VTK_ACCESS_PUBLIC;
9010     }
9011
9012   vtkParse_InitFunction(currentFunction);
9013   startSig();
9014   clearComment();
9015 }
9016
9017 /* reject the class */
9018 void reject_class(const char *classname, int is_struct_or_union)
9019 {
9020   static ClassInfo static_class;
9021
9022   pushClass();
9023   currentClass = &static_class;
9024   currentClass->Name = vtkstrdup(classname);
9025   vtkParse_InitClass(currentClass);
9026
9027   access_level = VTK_ACCESS_PRIVATE;
9028   if (is_struct_or_union)
9029     {
9030     access_level = VTK_ACCESS_PUBLIC;
9031     }
9032
9033   vtkParse_InitFunction(currentFunction);
9034   startSig();
9035   clearComment();
9036 }
9037
9038 /* reached the end of a class definition */
9039 void end_class()
9040 {
9041   /* add default constructors */
9042   vtkParse_AddDefaultConstructors(currentClass);
9043
9044   popClass();
9045 }
9046
9047 /* add a using declaration or directive */
9048 void add_using(const char *name, int is_namespace)
9049 {
9050   size_t i;
9051   UsingInfo *item;
9052
9053   item = (UsingInfo *)malloc(sizeof(UsingInfo));
9054   vtkParse_InitUsing(item);
9055   if (is_namespace)
9056     {
9057     item->Name = NULL;
9058     item->Scope = vtkstrdup(name);
9059     }
9060   else
9061     {
9062     i = strlen(name);
9063     while (i > 0 && name[i-1] != ':') { i--; }
9064     item->Name = vtkstrdup(&name[i]);
9065     while (i > 0 && name[i-1] == ':') { i--; }
9066     item->Scope = vtkstrndup(name, i);
9067     }
9068
9069   if (currentClass)
9070     {
9071     vtkParse_AddUsingToClass(currentClass, item);
9072     }
9073   else
9074     {
9075     vtkParse_AddUsingToNamespace(currentNamespace, item);
9076     }
9077 }
9078
9079 /* start a new enum */
9080 void start_enum(const char *name)
9081 {
9082   static char text[256];
9083   EnumInfo *item;
9084
9085   currentEnumName = "int";
9086   currentEnumValue = NULL;
9087   if (name)
9088     {
9089     strcpy(text, name);
9090     currentEnumName = text;
9091     item = (EnumInfo *)malloc(sizeof(EnumInfo));
9092     vtkParse_InitEnum(item);
9093     item->Name = vtkstrdup(name);
9094     item->Access = access_level;
9095     if (currentClass)
9096       {
9097       vtkParse_AddEnumToClass(currentClass, item);
9098       }
9099     else
9100       {
9101       vtkParse_AddEnumToNamespace(currentNamespace, item);
9102       }
9103     }
9104 }
9105
9106 /* finish the enum */
9107 void end_enum()
9108 {
9109   currentEnumName = NULL;
9110   currentEnumValue = NULL;
9111 }
9112
9113 /* add a constant to the enum */
9114 void add_enum(const char *name, const char *value)
9115 {
9116   static char text[2048];
9117   int i;
9118   long j;
9119
9120   if (value)
9121     {
9122     strcpy(text, value);
9123     currentEnumValue = text;
9124     }
9125   else if (currentEnumValue)
9126     {
9127     i = strlen(text);
9128     while (i > 0 && text[i-1] >= '0' &&
9129            text[i-1] <= '9') { i--; }
9130
9131     if (i == 0 || text[i-1] == ' ' ||
9132         (i > 1 && text[i-2] == ' ' &&
9133          (text[i-1] == '-' || text[i-1] == '+')))
9134       {
9135       if (i > 0 && text[i-1] != ' ')
9136         {
9137         i--;
9138         }
9139       j = (int)strtol(&text[i], NULL, 10);
9140       sprintf(&text[i], "%li", j+1);
9141       }
9142     else
9143       {
9144       i = strlen(text);
9145       strcpy(&text[i], " + 1");
9146       }
9147     }
9148   else
9149     {
9150     strcpy(text, "0");
9151     currentEnumValue = text;
9152     }
9153
9154   add_constant(name, currentEnumValue, VTK_PARSE_INT, currentEnumName, 2);
9155 }
9156
9157 /* for a macro constant, guess the constant type */
9158 unsigned int guess_constant_type(const char *valstring)
9159 {
9160   unsigned int valtype = 0;
9161   size_t k;
9162   int i;
9163   int is_name = 0;
9164
9165   if (valstring == NULL || valstring[0] == '\0')
9166     {
9167     return 0;
9168     }
9169
9170   if (valstring[0] < '0' || valstring[0] > '9')
9171     {
9172     k = 0;
9173     while ((valstring[k] >= '0' && valstring[k] <= '9') ||
9174            (valstring[k] >= 'a' && valstring[k] <= 'z') ||
9175            (valstring[k] >= 'A' && valstring[k] <= 'Z') ||
9176            valstring[k] == '_') { k++; }
9177
9178     if (valstring[k] == '\0')
9179       {
9180       is_name = 1;
9181       }
9182     }
9183
9184   if (strcmp(valstring, "true") == 0 || strcmp(valstring, "false") == 0)
9185     {
9186     return VTK_PARSE_BOOL;
9187     }
9188
9189   if (valstring[0] == '\'')
9190     {
9191     return VTK_PARSE_CHAR;
9192     }
9193
9194   if (strncmp(valstring, "VTK_TYPE_CAST(", 14) == 0 ||
9195       strncmp(valstring, "static_cast<", 12) == 0 ||
9196       strncmp(valstring, "const_cast<", 11) == 0 ||
9197       strncmp(valstring, "(", 1) == 0)
9198     {
9199     const char *cp;
9200     size_t n;
9201     int is_unsigned = 0;
9202
9203     cp = &valstring[1];
9204     if (valstring[0] == 'c')
9205       {
9206       cp = &valstring[11];
9207       }
9208     else if (valstring[0] == 's')
9209       {
9210       cp = &valstring[12];
9211       }
9212     else if (valstring[0] == 'V')
9213       {
9214       cp = &valstring[14];
9215       }
9216
9217     if (strncmp(cp, "unsigned ", 9) == 0)
9218       {
9219       is_unsigned = 1;
9220       cp += 9;
9221       }
9222
9223     n = strlen(cp);
9224     for (k = 0; k < n && cp[k] != ',' &&
9225          cp[k] != '>' && cp[k] != ')'; k++) { ; };
9226
9227     if (strncmp(cp, "long long", k) == 0)
9228       { valtype = VTK_PARSE_LONG_LONG; }
9229     else if (strncmp(cp, "__int64", k) == 0)
9230       { valtype = VTK_PARSE___INT64; }
9231     else if (strncmp(cp, "long", k) == 0)
9232       { valtype = VTK_PARSE_LONG; }
9233     else if (strncmp(cp, "short", k) == 0)
9234       { valtype = VTK_PARSE_SHORT; }
9235     else if (strncmp(cp, "signed char", k) == 0)
9236       { valtype = VTK_PARSE_SIGNED_CHAR; }
9237     else if (strncmp(cp, "char", k) == 0)
9238       { valtype = VTK_PARSE_CHAR; }
9239     else if (strncmp(cp, "int", k) == 0 ||
9240              strncmp(cp, "signed", k) == 0)
9241       { valtype = VTK_PARSE_INT; }
9242     else if (strncmp(cp, "float", k) == 0)
9243       { valtype = VTK_PARSE_FLOAT; }
9244     else if (strncmp(cp, "double", k) == 0)
9245       { valtype = VTK_PARSE_DOUBLE; }
9246     else if (strncmp(cp, "char *", k) == 0)
9247       { valtype = VTK_PARSE_CHAR_PTR; }
9248
9249     if (is_unsigned)
9250       {
9251       if (valtype == 0) { valtype = VTK_PARSE_INT; }
9252       valtype = (valtype | VTK_PARSE_UNSIGNED);
9253       }
9254
9255     if (valtype != 0)
9256       {
9257       return valtype;
9258       }
9259     }
9260
9261   /* check the current scope */
9262   if (is_name)
9263     {
9264     NamespaceInfo *scope = currentNamespace;
9265     if (namespaceDepth > 0)
9266       {
9267       scope = namespaceStack[0];
9268       }
9269
9270     for (i = 0; i < scope->NumberOfConstants; i++)
9271       {
9272       if (strcmp(scope->Constants[i]->Name, valstring) == 0)
9273         {
9274         return scope->Constants[i]->Type;
9275         }
9276       }
9277     }
9278
9279   /* check for preprocessor macros */
9280   if (is_name)
9281     {
9282     MacroInfo *macro = vtkParsePreprocess_GetMacro(
9283       &preprocessor, valstring);
9284
9285     if (macro && !macro->IsFunction)
9286       {
9287       return guess_constant_type(macro->Definition);
9288       }
9289     }
9290
9291   /* fall back to the preprocessor to evaluate the constant */
9292     {
9293     preproc_int_t val;
9294     int is_unsigned;
9295     int result = vtkParsePreprocess_EvaluateExpression(
9296       &preprocessor, valstring, &val, &is_unsigned);
9297
9298     if (result == VTK_PARSE_PREPROC_DOUBLE)
9299       {
9300       return VTK_PARSE_DOUBLE;
9301       }
9302     else if (result == VTK_PARSE_PREPROC_FLOAT)
9303       {
9304       return VTK_PARSE_FLOAT;
9305       }
9306     else if (result == VTK_PARSE_PREPROC_STRING)
9307       {
9308       return VTK_PARSE_CHAR_PTR;
9309       }
9310     else if (result == VTK_PARSE_OK)
9311       {
9312       if (is_unsigned)
9313         {
9314         if ((preproc_uint_t)val <= VTK_UNSIGNED_INT_MAX)
9315           {
9316           return VTK_PARSE_UNSIGNED_INT;
9317           }
9318         else
9319           {
9320 #if defined(VTK_TYPE_USE_LONG_LONG)
9321           return VTK_PARSE_UNSIGNED_LONG_LONG;
9322 #elif defined(VTK_TYPE_USE___INT64)
9323           return VTK_PARSE_UNSIGNED___INT64;
9324 #else
9325           return VTK_PARSE_UNSIGNED_LONG;
9326 #endif
9327           }
9328         }
9329       else
9330         {
9331         if (val >= VTK_INT_MIN && val <= VTK_INT_MAX)
9332           {
9333           return VTK_PARSE_INT;
9334           }
9335         else
9336           {
9337 #if defined(VTK_TYPE_USE_LONG_LONG)
9338           return VTK_PARSE_LONG_LONG;
9339 #elif defined(VTK_TYPE_USE___INT64)
9340           return VTK_PARSE___INT64;
9341 #else
9342           return VTK_PARSE_LONG;
9343 #endif
9344           }
9345         }
9346       }
9347     }
9348
9349   return 0;
9350 }
9351
9352 /* add a constant to the current class or namespace */
9353 void add_constant(const char *name, const char *value,
9354                   unsigned int type, const char *typeclass, int flag)
9355 {
9356   ValueInfo *con = (ValueInfo *)malloc(sizeof(ValueInfo));
9357   vtkParse_InitValue(con);
9358   con->ItemType = VTK_CONSTANT_INFO;
9359   con->Name = vtkstrdup(name);
9360   con->Value = vtkstrdup(value);
9361   con->Type = type;
9362   if (typeclass)
9363     {
9364     con->Class = vtkstrdup(typeclass);
9365     }
9366
9367   if (flag == 2)
9368     {
9369     con->IsEnum = 1;
9370     }
9371
9372   if (flag == 1)
9373     {
9374     con->Access = VTK_ACCESS_PUBLIC;
9375     if (con->Type == 0)
9376       {
9377       con->Type = guess_constant_type(con->Value);
9378       }
9379     vtkParse_AddConstantToNamespace(data.Contents, con);
9380     }
9381   else if (currentClass)
9382     {
9383     con->Access = access_level;
9384     vtkParse_AddConstantToClass(currentClass, con);
9385     }
9386   else
9387     {
9388     con->Access = VTK_ACCESS_PUBLIC;
9389     vtkParse_AddConstantToNamespace(currentNamespace, con);
9390     }
9391 }
9392
9393 /* if the name is a const in this namespace, the scope it */
9394 const char *add_const_scope(const char *name)
9395 {
9396   static char text[256];
9397   NamespaceInfo *scope = currentNamespace;
9398   int i, j;
9399   int addscope = 0;
9400
9401   strcpy(text, name);
9402
9403   if (currentClass)
9404     {
9405     for (j = 0; j < currentClass->NumberOfConstants; j++)
9406       {
9407       if (strcmp(currentClass->Constants[j]->Name, text) == 0)
9408         {
9409         prepend_scope(text, currentClass->Name);
9410         addscope = 1;
9411         }
9412       }
9413     }
9414   i = namespaceDepth;
9415   while (scope && scope->Name)
9416     {
9417     if (addscope)
9418       {
9419       prepend_scope(text, scope->Name);
9420       }
9421     else
9422       {
9423       for (j = 0; j < scope->NumberOfConstants; j++)
9424         {
9425         if (strcmp(scope->Constants[j]->Name, text) == 0)
9426           {
9427           prepend_scope(text, scope->Name);
9428           addscope = 1;
9429           }
9430         }
9431       }
9432
9433     scope = 0;
9434     if (i > 0)
9435       {
9436       scope = namespaceStack[--i];
9437       }
9438     }
9439
9440   return text;
9441 }
9442
9443 /* add an arg to a function */
9444 void add_argument(FunctionInfo *func, unsigned int type,
9445                   const char *typeclass, int count)
9446 {
9447   int i = func->NumberOfArguments;
9448   char text[64];
9449   ValueInfo *arg = (ValueInfo *)malloc(sizeof(ValueInfo));
9450   vtkParse_InitValue(arg);
9451
9452   arg->Type = type;
9453   if (typeclass)
9454     {
9455     arg->Class = vtkstrdup(typeclass);
9456     }
9457
9458   if (count)
9459     {
9460     arg->Count = count;
9461     sprintf(text, "%i", count);
9462     vtkParse_AddStringToArray(&arg->Dimensions, &arg->NumberOfDimensions,
9463                               vtkstrdup(text));
9464     }
9465
9466   func->ArgTypes[i] = arg->Type;
9467   func->ArgClasses[i] = arg->Class;
9468   func->ArgCounts[i] = count;
9469
9470   vtkParse_AddArgumentToFunction(func, arg);
9471 }
9472
9473 /* set the return type for the current function */
9474 void set_return(FunctionInfo *func, unsigned int type,
9475                 const char *typeclass, int count)
9476 {
9477   char text[64];
9478   ValueInfo *val = (ValueInfo *)malloc(sizeof(ValueInfo));
9479
9480   vtkParse_InitValue(val);
9481   val->Type = type;
9482   if (typeclass)
9483     {
9484     val->Class = vtkstrdup(typeclass);
9485     }
9486
9487   if (count)
9488     {
9489     val->Count = count;
9490     sprintf(text, "%i", count);
9491     vtkParse_AddStringToArray(&val->Dimensions, &val->NumberOfDimensions,
9492                               vtkstrdup(text));
9493     func->HaveHint = 1;
9494     }
9495
9496   func->ReturnValue = val;
9497   func->ReturnType = val->Type;
9498   func->ReturnClass = val->Class;
9499   func->HintSize = count;
9500 }
9501
9502 /* deal with types that include function pointers or arrays */
9503 void handle_complex_type(
9504   ValueInfo *val, unsigned int datatype, unsigned int extra,
9505   const char *funcSig)
9506 {
9507   FunctionInfo *func = 0;
9508   int i, n;
9509   const char *cp;
9510
9511   /* if "extra" was set, parentheses were involved */
9512   if ((extra & VTK_PARSE_BASE_TYPE) == VTK_PARSE_FUNCTION)
9513     {
9514     /* the current type becomes the function return type */
9515     func = getFunction();
9516     func->ReturnValue = (ValueInfo *)malloc(sizeof(ValueInfo));
9517     vtkParse_InitValue(func->ReturnValue);
9518     func->ReturnValue->Type = datatype;
9519     func->ReturnValue->Class = vtkstrdup(getTypeId());
9520     func->ReturnType = func->ReturnValue->Type;
9521     func->ReturnClass = func->ReturnValue->Class;
9522     if (funcSig) { func->Signature = vtkstrdup(funcSig); }
9523     val->Function = func;
9524
9525     /* the val type is whatever was inside the parentheses */
9526     clearTypeId();
9527     setTypeId(func->Class ? "method" : "function");
9528     datatype = (extra & VTK_PARSE_UNQUALIFIED_TYPE);
9529     }
9530   else if ((extra & VTK_PARSE_INDIRECT) == VTK_PARSE_BAD_INDIRECT)
9531     {
9532     datatype = (datatype | VTK_PARSE_BAD_INDIRECT);
9533     }
9534   else if ((extra & VTK_PARSE_INDIRECT) != 0)
9535     {
9536     extra = (extra & VTK_PARSE_INDIRECT);
9537
9538     if ((extra & VTK_PARSE_REF) != 0)
9539       {
9540       datatype = (datatype | VTK_PARSE_REF);
9541       extra = (extra & ~VTK_PARSE_REF);
9542       }
9543
9544     if (extra != 0 && getArrayNDims() > 0)
9545       {
9546       /* pointer represents an unsized array bracket */
9547       datatype = add_indirection(datatype, VTK_PARSE_ARRAY);
9548       extra = ((extra >> 2) & VTK_PARSE_POINTER_MASK);
9549       }
9550
9551     datatype = add_indirection(datatype, extra);
9552     }
9553
9554   if (getArrayNDims() == 1)
9555     {
9556     if ((datatype & VTK_PARSE_POINTER_LOWMASK) != VTK_PARSE_ARRAY)
9557       {
9558       /* turn the first set of brackets into a pointer */
9559       datatype = add_indirection(datatype, VTK_PARSE_POINTER);
9560       }
9561     else
9562       {
9563       pushArrayFront("");
9564       }
9565     }
9566   else if (getArrayNDims() > 1)
9567     {
9568     if ((datatype & VTK_PARSE_POINTER_LOWMASK) != VTK_PARSE_ARRAY)
9569       {
9570       /* turn the first set of brackets into a pointer */
9571       datatype = add_indirection(datatype, VTK_PARSE_ARRAY);
9572       }
9573     else
9574       {
9575       pushArrayFront("");
9576       }
9577     }
9578
9579   /* get the data type */
9580   val->Type = datatype;
9581   val->Class = vtkstrdup(getTypeId());
9582
9583   /* copy contents of all brackets to the ArgDimensions */
9584   val->NumberOfDimensions = getArrayNDims();
9585   val->Dimensions = getArray();
9586   clearArray();
9587
9588   /* count is the product of the dimensions */
9589   val->Count = 0;
9590   if (val->NumberOfDimensions)
9591     {
9592     val->Count = 1;
9593     for (i = 0; i < val->NumberOfDimensions; i++)
9594       {
9595       n = 0;
9596       cp = val->Dimensions[i];
9597       if (cp[0] != '\0')
9598         {
9599         while (*cp != '\0' && *cp >= '0' && *cp <= '9') { cp++; }
9600         if (*cp == '\0')
9601           {
9602           n = (int)strtol(val->Dimensions[i], NULL, 0);
9603           }
9604         }
9605       val->Count *= n;
9606       }
9607     }
9608 }
9609
9610 /* specifically handle a VAR_FUNCTION argument */
9611 void handle_function_type(
9612   ValueInfo *arg, const char *name, const char *funcSig)
9613 {
9614   FunctionInfo *func;
9615   size_t j;
9616
9617   arg->Type = VTK_PARSE_FUNCTION;
9618   arg->Class = vtkstrdup("function");
9619
9620   if (name && name[0] != '\0')
9621     {
9622     arg->Name = vtkstrdup(name);
9623     }
9624
9625   func = (FunctionInfo *)malloc(sizeof(FunctionInfo));
9626   vtkParse_InitFunction(func);
9627   add_argument(func, VTK_PARSE_VOID_PTR, "void", 0);
9628   set_return(func, VTK_PARSE_VOID, "void", 0);
9629   j = strlen(funcSig);
9630   while (j > 0 && funcSig[j-1] == ' ')
9631     {
9632     j--;
9633     }
9634
9635   func->Signature = vtkstrndup(funcSig, j);
9636   arg->Function = func;
9637 }
9638
9639
9640 /* reject the function, do not output it */
9641 void reject_function()
9642 {
9643   vtkParse_InitFunction(currentFunction);
9644   startSig();
9645 }
9646
9647 /* a simple routine that updates a few variables */
9648 void output_function()
9649 {
9650   size_t n;
9651   int i, j;
9652   int match;
9653
9654   /* reject template specializations */
9655   n = strlen(currentFunction->Name);
9656   if (currentFunction->Name[n-1] == '>')
9657     {
9658     /* make sure there is a matching angle bracket */
9659     while (n > 0 && currentFunction->Name[n-1] != '<') { n--; }
9660     if (n > 0)
9661       {
9662       reject_function();
9663       return;
9664       }
9665     }
9666
9667   /* static */
9668   if (currentFunction->ReturnType & VTK_PARSE_STATIC)
9669     {
9670     currentFunction->IsStatic = 1;
9671     }
9672
9673   /* the signature */
9674   if (!currentFunction->Signature)
9675     {
9676     currentFunction->Signature = getSig();
9677     }
9678
9679   /* template information */
9680   if (currentTemplate)
9681     {
9682     currentFunction->Template = currentTemplate;
9683     currentTemplate = NULL;
9684     }
9685
9686   /* a void argument is the same as no arguments */
9687   if (currentFunction->NumberOfArguments == 1 &&
9688       (currentFunction->Arguments[0]->Type & VTK_PARSE_UNQUALIFIED_TYPE) ==
9689       VTK_PARSE_VOID)
9690     {
9691     currentFunction->NumberOfArguments = 0;
9692     }
9693
9694   /* if return type is void, set return class to void */
9695   if (currentFunction->ReturnClass == NULL &&
9696       (currentFunction->ReturnType & VTK_PARSE_UNQUALIFIED_TYPE) ==
9697        VTK_PARSE_VOID)
9698     {
9699     currentFunction->ReturnClass = vtkstrdup("void");
9700     }
9701
9702   /* set public, protected */
9703   if (currentClass)
9704     {
9705     currentFunction->Access = access_level;
9706     /* set legacy flags */
9707     currentFunction->IsPublic = (access_level == VTK_ACCESS_PUBLIC);
9708     currentFunction->IsProtected = (access_level == VTK_ACCESS_PROTECTED);
9709     }
9710   else
9711     {
9712     currentFunction->Access = VTK_ACCESS_PUBLIC;
9713     /* set legacy flags */
9714     currentFunction->IsPublic = 1;
9715     currentFunction->IsProtected = 0;
9716     }
9717
9718   /* look for legacy VAR FUNCTIONS */
9719   if (currentFunction->NumberOfArguments
9720       && (currentFunction->Arguments[0]->Type == VTK_PARSE_FUNCTION))
9721     {
9722     if (currentFunction->NumberOfArguments != 2 ||
9723         currentFunction->Arguments[1]->Type != VTK_PARSE_VOID_PTR)
9724       {
9725       currentFunction->ArrayFailure = 1;
9726       }
9727     }
9728
9729   /* check for too many arguments */
9730   if (currentFunction->NumberOfArguments > MAX_ARGS)
9731     {
9732     currentFunction->ArrayFailure = 1;
9733     }
9734
9735   /* also legacy: tell old wrappers that multi-dimensional arrays are bad */
9736   for (i = 0; i < currentFunction->NumberOfArguments; i++)
9737     {
9738     ValueInfo *arg = currentFunction->Arguments[i];
9739     if ((arg->Type & VTK_PARSE_POINTER_MASK) != 0)
9740       {
9741       if (((arg->Type & VTK_PARSE_BASE_TYPE) == VTK_PARSE_FUNCTION) ||
9742           ((arg->Type & VTK_PARSE_INDIRECT) == VTK_PARSE_BAD_INDIRECT) ||
9743           ((arg->Type & VTK_PARSE_POINTER_LOWMASK) != VTK_PARSE_POINTER))
9744        {
9745        currentFunction->ArrayFailure = 1;
9746        }
9747       }
9748     }
9749
9750   if (currentClass)
9751     {
9752     /* is it a delete function */
9753     if (currentFunction->Name && !strcmp("Delete",currentFunction->Name))
9754       {
9755       currentClass->HasDelete = 1;
9756       }
9757
9758     currentFunction->Class = vtkstrdup(currentClass->Name);
9759     vtkParse_AddFunctionToClass(currentClass, currentFunction);
9760
9761     currentFunction = (FunctionInfo *)malloc(sizeof(FunctionInfo));
9762     }
9763   else
9764     {
9765     /* make sure this function isn't a repeat */
9766     match = 0;
9767     for (i = 0; i < currentNamespace->NumberOfFunctions; i++)
9768       {
9769       if (currentNamespace->Functions[i]->Name &&
9770           strcmp(currentNamespace->Functions[i]->Name,
9771                  currentFunction->Name) == 0)
9772         {
9773         if (currentNamespace->Functions[i]->NumberOfArguments ==
9774             currentFunction->NumberOfArguments)
9775           {
9776           for (j = 0; j < currentFunction->NumberOfArguments; j++)
9777             {
9778             if (currentNamespace->Functions[i]->Arguments[j]->Type ==
9779                 currentFunction->Arguments[j]->Type)
9780               {
9781               if (currentFunction->Arguments[j]->Type == VTK_PARSE_OBJECT &&
9782                   strcmp(currentNamespace->Functions[i]->Arguments[j]->Class,
9783                          currentFunction->Arguments[j]->Class) == 0)
9784                 {
9785                 break;
9786                 }
9787               }
9788             }
9789           if (j == currentFunction->NumberOfArguments)
9790             {
9791             match = 1;
9792             break;
9793             }
9794           }
9795         }
9796       }
9797
9798     if (!match)
9799       {
9800       vtkParse_AddFunctionToNamespace(currentNamespace, currentFunction);
9801
9802       currentFunction = (FunctionInfo *)malloc(sizeof(FunctionInfo));
9803       }
9804     }
9805
9806   vtkParse_InitFunction(currentFunction);
9807   startSig();
9808 }
9809
9810 void outputSetVectorMacro(const char *var, unsigned int argType,
9811                           const char *typeText, int n)
9812 {
9813   static const char *mnames[] = {
9814     NULL, NULL,
9815     "vtkSetVector2Macro", "vtkSetVector3Macro", "vtkSetVector4Macro",
9816     NULL,
9817     "vtkSetVector6Macro",
9818     NULL };
9819   char ntext[32];
9820   int i, m;
9821   m = (n > 7 ? 0 : n);
9822
9823   sprintf(ntext, "%i", n);
9824
9825   currentFunction->Macro = mnames[m];
9826   currentFunction->Name = vtkstrcat("Set", var);
9827   startSig();
9828   postSig("void ");
9829   postSig(currentFunction->Name);
9830   postSig("(");
9831   postSig(typeText);
9832   for (i = 1; i < n; i++)
9833     {
9834     postSig(", ");
9835     postSig(typeText);
9836     }
9837   postSig(");");
9838   for (i = 0; i < n; i++)
9839     {
9840     add_argument(currentFunction, argType, getTypeId(), 0);
9841     }
9842   set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
9843   output_function();
9844
9845   currentFunction->Macro = mnames[m];
9846   currentFunction->Name = vtkstrcat("Set", var);
9847   currentFunction->Signature =
9848     vtkstrcat7("void ", currentFunction->Name, "(", getTypeId(),
9849                " a[", ntext, "]);");
9850   add_argument(currentFunction, (VTK_PARSE_POINTER | argType),
9851                getTypeId(), n);
9852   set_return(currentFunction, VTK_PARSE_VOID, "void", 0);
9853   output_function();
9854 }
9855
9856 void outputGetVectorMacro(const char *var, unsigned int argType,
9857                           const char *typeText, int n)
9858 {
9859   static const char *mnames[] = {
9860     NULL, NULL,
9861     "vtkGetVector2Macro", "vtkGetVector3Macro", "vtkGetVector4Macro",
9862     NULL,
9863     "vtkGetVector6Macro",
9864     NULL };
9865   int m;
9866   m = (n > 7 ? 0 : n);
9867
9868   currentFunction->Macro = mnames[m];
9869   currentFunction->Name = vtkstrcat("Get", var);
9870   currentFunction->Signature =
9871     vtkstrcat4(typeText, " *", currentFunction->Name, "();");
9872   set_return(currentFunction, (VTK_PARSE_POINTER | argType), getTypeId(), n);
9873   output_function();
9874 }
9875
9876 /* This method is used for extending dynamic arrays in a progression of
9877  * powers of two.  If "n" reaches a power of two, then the array size is
9878  * doubled so that "n" can be safely incremented. */
9879 static void *array_size_check(
9880   void *arraymem, size_t size, int n)
9881 {
9882   /* if empty, alloc for the first time */
9883   if (n == 0)
9884     {
9885     return malloc(size);
9886     }
9887   /* if count is power of two, reallocate with double size */
9888   else if ((n & (n-1)) == 0)
9889     {
9890     return realloc(arraymem, (n << 1)*size);
9891     }
9892
9893   /* no reallocation, just return the original array */
9894   return arraymem;
9895 }
9896
9897 /* Utility method to add a pointer to an array */
9898 void vtkParse_AddPointerToArray(
9899   void *valueArray, int *count, const void *value)
9900 {
9901   void **values = *(void ***)valueArray;
9902   int n = *count;
9903
9904   values = (void **)array_size_check(values, sizeof(void *), n);
9905
9906   values[n++] = (void *)value;
9907   *count = n;
9908   *(void ***)valueArray = values;
9909 }
9910
9911 /*
9912  * There is a lot of repetition here, but all the code is written
9913  * out explicitly to avoid the use of macros or typecasts.  The
9914  * use of macros for generic programming makes code harder to debug,
9915  * and the use of C typecasts for anything but void* and char* breaks
9916  * the C99 standard.
9917  */
9918
9919 /* Utility method to add an item to an array */
9920 void vtkParse_AddItemToArray(
9921   ItemInfo **valueArray, int *count,
9922   parse_item_t type, int idx)
9923 {
9924   size_t n = *count;
9925   ItemInfo *values = *valueArray;
9926
9927   values = (ItemInfo *)array_size_check(values, sizeof(ItemInfo), n);
9928
9929   values[n].Type = type;
9930   values[n].Index = idx;
9931   *count = n+1;
9932   *valueArray = values;
9933 }
9934
9935 /* Add a ClassInfo to a ClassInfo */
9936 void vtkParse_AddClassToClass(ClassInfo *info, ClassInfo *item)
9937 {
9938   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
9939     item->ItemType, info->NumberOfClasses);
9940   info->Classes = (ClassInfo **)array_size_check(
9941     info->Classes, sizeof(ClassInfo *), info->NumberOfClasses);
9942   info->Classes[info->NumberOfClasses++] = item;
9943 }
9944
9945 /* Add a FunctionInfo to a ClassInfo */
9946 void vtkParse_AddFunctionToClass(ClassInfo *info, FunctionInfo *item)
9947 {
9948   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
9949     item->ItemType, info->NumberOfFunctions);
9950   info->Functions = (FunctionInfo **)array_size_check(
9951     info->Functions, sizeof(FunctionInfo *), info->NumberOfFunctions);
9952   info->Functions[info->NumberOfFunctions++] = item;
9953 }
9954
9955 /* Add a EnumInfo to a ClassInfo */
9956 void vtkParse_AddEnumToClass(ClassInfo *info, EnumInfo *item)
9957 {
9958   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
9959     item->ItemType, info->NumberOfEnums);
9960   info->Enums = (EnumInfo **)array_size_check(
9961     info->Enums, sizeof(EnumInfo *), info->NumberOfEnums);
9962   info->Enums[info->NumberOfEnums++] = item;
9963 }
9964
9965 /* Add a Constant ValueInfo to a ClassInfo */
9966 void vtkParse_AddConstantToClass(ClassInfo *info, ValueInfo *item)
9967 {
9968   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
9969     item->ItemType, info->NumberOfConstants);
9970   info->Constants = (ValueInfo **)array_size_check(
9971     info->Constants, sizeof(ValueInfo *), info->NumberOfConstants);
9972   info->Constants[info->NumberOfConstants++] = item;
9973 }
9974
9975 /* Add a Variable ValueInfo to a ClassInfo */
9976 void vtkParse_AddVariableToClass(ClassInfo *info, ValueInfo *item)
9977 {
9978   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
9979     item->ItemType, info->NumberOfVariables);
9980   info->Variables = (ValueInfo **)array_size_check(
9981     info->Variables, sizeof(ValueInfo *), info->NumberOfVariables);
9982   info->Variables[info->NumberOfVariables++] = item;
9983 }
9984
9985 /* Add a Typedef ValueInfo to a ClassInfo */
9986 void vtkParse_AddTypedefToClass(ClassInfo *info, ValueInfo *item)
9987 {
9988   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
9989     item->ItemType, info->NumberOfTypedefs);
9990   info->Typedefs = (ValueInfo **)array_size_check(
9991     info->Typedefs, sizeof(ValueInfo *), info->NumberOfTypedefs);
9992   info->Typedefs[info->NumberOfTypedefs++] = item;
9993 }
9994
9995 /* Add a UsingInfo to a ClassInfo */
9996 void vtkParse_AddUsingToClass(ClassInfo *info, UsingInfo *item)
9997 {
9998   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
9999     item->ItemType, info->NumberOfUsings);
10000   info->Usings = (UsingInfo **)array_size_check(
10001     info->Usings, sizeof(UsingInfo *), info->NumberOfUsings);
10002   info->Usings[info->NumberOfUsings++] = item;
10003 }
10004
10005
10006 /* Add a NamespaceInfo to a NamespaceInfo */
10007 void vtkParse_AddNamespaceToNamespace(NamespaceInfo *info, NamespaceInfo *item)
10008 {
10009   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
10010     item->ItemType, info->NumberOfNamespaces);
10011   info->Namespaces = (NamespaceInfo **)array_size_check(
10012     info->Namespaces, sizeof(NamespaceInfo *), info->NumberOfNamespaces);
10013   info->Namespaces[info->NumberOfNamespaces++] = item;
10014 }
10015
10016 /* Add a ClassInfo to a NamespaceInfo */
10017 void vtkParse_AddClassToNamespace(NamespaceInfo *info, ClassInfo *item)
10018 {
10019   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
10020     item->ItemType, info->NumberOfClasses);
10021   info->Classes = (ClassInfo **)array_size_check(
10022     info->Classes, sizeof(ClassInfo *), info->NumberOfClasses);
10023   info->Classes[info->NumberOfClasses++] = item;
10024 }
10025
10026 /* Add a FunctionInfo to a NamespaceInfo */
10027 void vtkParse_AddFunctionToNamespace(NamespaceInfo *info, FunctionInfo *item)
10028 {
10029   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
10030     item->ItemType, info->NumberOfFunctions);
10031   info->Functions = (FunctionInfo **)array_size_check(
10032     info->Functions, sizeof(FunctionInfo *), info->NumberOfFunctions);
10033   info->Functions[info->NumberOfFunctions++] = item;
10034 }
10035
10036 /* Add a EnumInfo to a NamespaceInfo */
10037 void vtkParse_AddEnumToNamespace(NamespaceInfo *info, EnumInfo *item)
10038 {
10039   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
10040     item->ItemType, info->NumberOfEnums);
10041   info->Enums = (EnumInfo **)array_size_check(
10042     info->Enums, sizeof(EnumInfo *), info->NumberOfEnums);
10043   info->Enums[info->NumberOfEnums++] = item;
10044 }
10045
10046 /* Add a Constant ValueInfo to a NamespaceInfo */
10047 void vtkParse_AddConstantToNamespace(NamespaceInfo *info, ValueInfo *item)
10048 {
10049   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
10050     item->ItemType, info->NumberOfConstants);
10051   info->Constants = (ValueInfo **)array_size_check(
10052     info->Constants, sizeof(ValueInfo *), info->NumberOfConstants);
10053   info->Constants[info->NumberOfConstants++] = item;
10054 }
10055
10056 /* Add a Variable ValueInfo to a NamespaceInfo */
10057 void vtkParse_AddVariableToNamespace(NamespaceInfo *info, ValueInfo *item)
10058 {
10059   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
10060     item->ItemType, info->NumberOfVariables);
10061   info->Variables = (ValueInfo **)array_size_check(
10062     info->Variables, sizeof(ValueInfo *), info->NumberOfVariables);
10063   info->Variables[info->NumberOfVariables++] = item;
10064 }
10065
10066 /* Add a Typedef ValueInfo to a NamespaceInfo */
10067 void vtkParse_AddTypedefToNamespace(NamespaceInfo *info, ValueInfo *item)
10068 {
10069   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
10070     item->ItemType, info->NumberOfTypedefs);
10071   info->Typedefs = (ValueInfo **)array_size_check(
10072     info->Typedefs, sizeof(ValueInfo *), info->NumberOfTypedefs);
10073   info->Typedefs[info->NumberOfTypedefs++] = item;
10074 }
10075
10076 /* Add a UsingInfo to a NamespaceInfo */
10077 void vtkParse_AddUsingToNamespace(NamespaceInfo *info, UsingInfo *item)
10078 {
10079   vtkParse_AddItemToArray(&info->Items, &info->NumberOfItems,
10080     item->ItemType, info->NumberOfUsings);
10081   info->Usings = (UsingInfo **)array_size_check(
10082     info->Usings, sizeof(UsingInfo *), info->NumberOfUsings);
10083   info->Usings[info->NumberOfUsings++] = item;
10084 }
10085
10086
10087 /* Add a Argument ValueInfo to a FunctionInfo */
10088 void vtkParse_AddArgumentToFunction(FunctionInfo *info, ValueInfo *item)
10089 {
10090   info->Arguments = (ValueInfo **)array_size_check(
10091     info->Arguments, sizeof(ValueInfo *), info->NumberOfArguments);
10092   info->Arguments[info->NumberOfArguments++] = item;
10093 }
10094
10095
10096 /* Add a TemplateArg to a TemplateArgs */
10097 void vtkParse_AddArgumentToTemplate(TemplateArgs *info, TemplateArg *item)
10098 {
10099   info->Arguments = (TemplateArg **)array_size_check(
10100     info->Arguments, sizeof(TemplateArg *), info->NumberOfArguments);
10101   info->Arguments[info->NumberOfArguments++] = item;
10102 }
10103
10104
10105 /* Utility method to add a const char pointer to an array */
10106 void vtkParse_AddStringToArray(
10107   const char ***valueArray, int *count, const char *value)
10108 {
10109   *valueArray = (const char **)array_size_check(
10110     (char **)*valueArray, sizeof(const char *), *count);
10111
10112   (*valueArray)[(*count)++] = value;
10113 }
10114
10115 /* duplicate the first n bytes of a string and terminate */
10116 const char *vtkParse_DuplicateString(const char *cp, size_t n)
10117 {
10118   char *res = NULL;
10119
10120   res = vtkstralloc(n);
10121   strncpy(res, cp, n);
10122   res[n] = '\0';
10123
10124   return res;
10125 }
10126
10127 /* Add default constructors if they do not already exist */
10128 void vtkParse_AddDefaultConstructors(ClassInfo *cls)
10129 {
10130   FunctionInfo *func;
10131   ValueInfo *arg;
10132   size_t k;
10133   int i, n;
10134   int default_constructor = 1;
10135   int copy_constructor = 1;
10136   char *tname;
10137   const char *ccname;
10138
10139   if (cls == NULL || cls->Name == NULL)
10140     {
10141     return;
10142     }
10143
10144   n = cls->NumberOfFunctions;
10145   for (i = 0; i < n; i++)
10146     {
10147     func = cls->Functions[i];
10148     if (func->Name && strcmp(func->Name, cls->Name) == 0)
10149       {
10150       default_constructor = 0;
10151
10152       if (func->NumberOfArguments == 1)
10153         {
10154         arg = func->Arguments[0];
10155         if (arg->Class &&
10156             strcmp(arg->Class, cls->Name) == 0 &&
10157             (arg->Type & VTK_PARSE_POINTER_MASK) == 0)
10158           {
10159           copy_constructor = 0;
10160           }
10161         }
10162       }
10163     }
10164
10165   if (default_constructor)
10166     {
10167     func = (FunctionInfo *)malloc(sizeof(FunctionInfo));
10168     vtkParse_InitFunction(func);
10169     func->Class = vtkstrdup(cls->Name);
10170     func->Name = vtkstrdup(cls->Name);
10171     func->Signature = vtkstrcat(cls->Name, "()");
10172     vtkParse_AddFunctionToClass(cls, func);
10173     }
10174
10175   if (copy_constructor)
10176     {
10177     if (cls->Template)
10178       {
10179       /* specialize the name */
10180       n = cls->Template->NumberOfArguments;
10181
10182       k = strlen(cls->Name) + 2;
10183       for (i = 0; i < n; i++)
10184         {
10185         k += strlen(cls->Template->Arguments[i]->Name) + 2;
10186         }
10187       tname = vtkstralloc(k);
10188       strcpy(tname, cls->Name);
10189       k = strlen(tname);
10190       tname[k++] = '<';
10191       for (i = 0; i < n; i++)
10192         {
10193         strcpy(&tname[k], cls->Template->Arguments[i]->Name);
10194         k += strlen(cls->Template->Arguments[i]->Name);
10195         if (i+1 < n)
10196           {
10197           tname[k++] = ',';
10198           tname[k++] = ' ';
10199           }
10200         }
10201       tname[k++] = '>';
10202       tname[k] = '\0';
10203       ccname = tname;
10204       }
10205     else
10206       {
10207       ccname = vtkstrdup(cls->Name);
10208       }
10209
10210     func = (FunctionInfo *)malloc(sizeof(FunctionInfo));
10211     vtkParse_InitFunction(func);
10212     func->Class = vtkstrdup(cls->Name);
10213     func->Name = vtkstrdup(cls->Name);
10214     func->Signature = vtkstrcat4(cls->Name, "(const &", ccname, ")");
10215     arg = (ValueInfo *)malloc(sizeof(ValueInfo));
10216     vtkParse_InitValue(arg);
10217     arg->Type = (VTK_PARSE_OBJECT_REF | VTK_PARSE_CONST);
10218     arg->Class = ccname;
10219     vtkParse_AddArgumentToFunction(func, arg);
10220     vtkParse_AddFunctionToClass(cls, func);
10221     }
10222 }
10223
10224 /* Set a flag to ignore BTX/ETX markers in the files */
10225 void vtkParse_SetIgnoreBTX(int option)
10226 {
10227   if (option)
10228     {
10229     IgnoreBTX = 1;
10230     }
10231   else
10232     {
10233     IgnoreBTX = 0;
10234     }
10235 }
10236
10237 /* Parse a header file and return a FileInfo struct */
10238 FileInfo *vtkParse_ParseFile(
10239   const char *filename, FILE *ifile, FILE *errfile)
10240 {
10241   int i, j;
10242   int lineno;
10243   int ret;
10244   FileInfo *file_info;
10245   char *main_class;
10246   const char **include_dirs;
10247
10248   vtkParse_InitFile(&data);
10249
10250   i = preprocessor.NumberOfIncludeDirectories;
10251   include_dirs = preprocessor.IncludeDirectories;
10252   preprocessor.NumberOfIncludeDirectories = 0;
10253   preprocessor.IncludeDirectories = NULL;
10254   vtkParsePreprocess_InitPreprocess(&preprocessor);
10255   vtkParsePreprocess_AddStandardMacros(&preprocessor, VTK_PARSE_NATIVE);
10256   preprocessor.FileName = vtkstrdup(filename);
10257   preprocessor.NumberOfIncludeDirectories = i;
10258   preprocessor.IncludeDirectories = include_dirs;
10259   /* should explicitly check for vtkConfigure.h, or even explicitly load it */
10260 #ifdef VTK_USE_64BIT_IDS
10261   vtkParsePreprocess_AddMacro(&preprocessor, "VTK_USE_64BIT_IDS", "1");
10262 #endif
10263
10264   data.FileName = vtkstrdup(filename);
10265
10266   clearComment();
10267
10268   namespaceDepth = 0;
10269   currentNamespace = (NamespaceInfo *)malloc(sizeof(NamespaceInfo));
10270   vtkParse_InitNamespace(currentNamespace);
10271   data.Contents = currentNamespace;
10272
10273   templateDepth = 0;
10274   currentTemplate = NULL;
10275
10276   currentFunction = (FunctionInfo *)malloc(sizeof(FunctionInfo));
10277   vtkParse_InitFunction(currentFunction);
10278   startSig();
10279
10280   parseDebug = 0;
10281   if (getenv("DEBUG") != NULL)
10282     {
10283     parseDebug = 1;
10284     }
10285
10286   yyset_in(ifile);
10287   yyset_out(errfile);
10288   ret = yyparse();
10289   lineno = yyget_lineno();
10290   yylex_destroy();
10291
10292   free(currentFunction);
10293
10294   if (ret)
10295     {
10296     fprintf(errfile,
10297             "*** SYNTAX ERROR found in parsing the header file %s "
10298             "before line %d ***\n",
10299             filename, lineno);
10300     return NULL;
10301     }
10302
10303   /* The main class name should match the file name */
10304   i = strlen(filename);
10305   j = i;
10306   while (i > 0)
10307     {
10308     --i;
10309     if (filename[i] == '.')
10310       {
10311       j = i;
10312       }
10313     if (filename[i] == '/' || filename[i] == '\\')
10314       {
10315       i++;
10316       break;
10317       }
10318     }
10319   main_class = (char *)malloc(j-i+1);
10320   strncpy(main_class, &filename[i], j-i);
10321   main_class[j-i] = '\0';
10322
10323   /* special treatment of the main class in the file */
10324   for (i = 0; i < currentNamespace->NumberOfClasses; i++)
10325     {
10326     if (strcmp(currentNamespace->Classes[i]->Name, main_class) == 0)
10327       {
10328       data.MainClass = currentNamespace->Classes[i];
10329       break;
10330       }
10331     }
10332
10333   free(main_class);
10334
10335   file_info = (FileInfo *)malloc(sizeof(FileInfo));
10336   memcpy(file_info, &data, sizeof(FileInfo));
10337
10338   return file_info;
10339 }
10340
10341 /* Read a hints file and update the FileInfo */
10342 int vtkParse_ReadHints(FileInfo *file_info, FILE *hfile, FILE *errfile)
10343 {
10344   char h_cls[512];
10345   char h_func[512];
10346   unsigned int h_type, type;
10347   int h_value;
10348   FunctionInfo *func_info;
10349   ClassInfo *class_info;
10350   NamespaceInfo *contents;
10351   int i, j;
10352   int lineno = 0;
10353   int n;
10354
10355   contents = file_info->Contents;
10356
10357   /* read each hint line in succession */
10358   while ((n = fscanf(hfile,"%s %s %x %i", h_cls, h_func, &h_type, &h_value))
10359          != EOF)
10360     {
10361     lineno++;
10362     if (n < 4)
10363       {
10364       fprintf(errfile, "Wrapping: error parsing hints file line %i\n", lineno);
10365       exit(1);
10366       }
10367
10368     /* erase "ref" and qualifiers from hint type */
10369     type = ((h_type & VTK_PARSE_BASE_TYPE) |
10370             (h_type & VTK_PARSE_POINTER_LOWMASK));
10371
10372     /* find the matching class */
10373     for (i = 0; i < contents->NumberOfClasses; i++)
10374       {
10375       class_info = contents->Classes[i];
10376
10377       if (strcmp(h_cls, class_info->Name) == 0)
10378         {
10379         /* find the matching function */
10380         for (j = 0; j < class_info->NumberOfFunctions; j++)
10381           {
10382           func_info = class_info->Functions[j];
10383
10384           if (func_info->HaveHint == 0 && func_info->Name &&
10385               (strcmp(h_func, func_info->Name) == 0) &&
10386               (type == ((func_info->ReturnType & ~VTK_PARSE_REF) &
10387                         VTK_PARSE_UNQUALIFIED_TYPE)))
10388             {
10389             /* types that hints are accepted for */
10390             switch (func_info->ReturnType & VTK_PARSE_UNQUALIFIED_TYPE)
10391               {
10392               case VTK_PARSE_FLOAT_PTR:
10393               case VTK_PARSE_VOID_PTR:
10394               case VTK_PARSE_DOUBLE_PTR:
10395               case VTK_PARSE_ID_TYPE_PTR:
10396               case VTK_PARSE_LONG_LONG_PTR:
10397               case VTK_PARSE_UNSIGNED_LONG_LONG_PTR:
10398               case VTK_PARSE___INT64_PTR:
10399               case VTK_PARSE_UNSIGNED___INT64_PTR:
10400               case VTK_PARSE_INT_PTR:
10401               case VTK_PARSE_UNSIGNED_INT_PTR:
10402               case VTK_PARSE_SHORT_PTR:
10403               case VTK_PARSE_UNSIGNED_SHORT_PTR:
10404               case VTK_PARSE_LONG_PTR:
10405               case VTK_PARSE_UNSIGNED_LONG_PTR:
10406               case VTK_PARSE_SIGNED_CHAR_PTR:
10407               case VTK_PARSE_UNSIGNED_CHAR_PTR:
10408               case VTK_PARSE_CHAR_PTR:
10409                 {
10410                 if (func_info->ReturnValue &&
10411                     func_info->ReturnValue->NumberOfDimensions == 0)
10412                   {
10413                   char text[64];
10414                   func_info->HaveHint = 1;
10415                   func_info->HintSize = h_value;
10416                   func_info->ReturnValue->Count = h_value;
10417                   sprintf(text, "%i", h_value);
10418                   vtkParse_AddStringToArray(
10419                     &func_info->ReturnValue->Dimensions,
10420                     &func_info->ReturnValue->NumberOfDimensions,
10421                     vtkstrdup(text));
10422                   }
10423                 break;
10424                 }
10425               default:
10426                 {
10427                 fprintf(errfile,
10428                         "Wrapping: unhandled hint type %#x\n", h_type);
10429                 }
10430               }
10431             }
10432           }
10433         }
10434       }
10435     }
10436
10437   return 1;
10438 }
10439
10440 /* Free the FileInfo struct returned by vtkParse_ParseFile() */
10441 void vtkParse_Free(FileInfo *file_info)
10442 {
10443   vtkParse_FreeNamespace(file_info->Contents);
10444   file_info->Contents = NULL;
10445 }
10446
10447 /* Set a property before parsing */
10448 void vtkParse_SetClassProperty(
10449   const char *classname, const char *property)
10450 {
10451    /* the only property recognized */
10452    if (strcmp(property, "concrete") == 0 ||
10453        strcmp(property, "CONCRETE") == 0 ||
10454        strcmp(property, "Concrete") == 0)
10455      {
10456      vtkParse_AddStringToArray(&ConcreteClasses,
10457                                &NumberOfConcreteClasses,
10458                                vtkstrdup(classname));
10459      }
10460 }
10461
10462 /** Define a preprocessor macro. Function macros are not supported.  */
10463 void vtkParse_DefineMacro(const char *name, const char *definition)
10464 {
10465   vtkParsePreprocess_AddMacro(&preprocessor, name, definition);
10466 }
10467
10468 /** Undefine a preprocessor macro.  */
10469 void vtkParse_UndefineMacro(const char *name)
10470 {
10471   vtkParsePreprocess_RemoveMacro(&preprocessor, name);
10472 }
10473
10474 /** Add an include directory, for use with the "-I" option.  */
10475 void vtkParse_IncludeDirectory(const char *dirname)
10476 {
10477   vtkParsePreprocess_IncludeDirectory(&preprocessor, dirname);
10478 }
10479
10480 /** Return the full path to a header file.  */
10481 const char *vtkParse_FindIncludeFile(const char *filename)
10482 {
10483   int val;
10484   return vtkParsePreprocess_FindIncludeFile(&preprocessor, filename, 0, &val);
10485 }
10486
10487 /** Simple utility for mapping VTK types to VTK_PARSE types */
10488 unsigned int vtkParse_MapType(int vtktype)
10489 {
10490   if (vtktype > 0 && vtktype <= VTK_UNICODE_STRING)
10491     {
10492     return vtkParseTypeMap[vtktype];
10493     }
10494   return 0;
10495 }