diff --git a/HISTORY.TXT b/HISTORY.TXT index 84d11637aa..9a1c7aec79 100644 --- a/HISTORY.TXT +++ b/HISTORY.TXT @@ -14,6 +14,10 @@ For a complete change history, please see the Git log comments. Current Version (git master, 6.3-dev, future 6.4): -------------------------------------------------- +- Fix segfault in queryByFilter function in PHP/MapScript + +- Adjusted WCS 2.0 to WCS Core 2.0.1 and GMLCOV 1.0.1 corrigenda (#4003) + - Adjusted mediatype to multipart/related in WCS 2.0 (#4003) - Fix symbolObj.getImage seg fault in PHP/MapScript diff --git a/mapows.h b/mapows.h index 42e30c6a28..72b790e4e1 100644 --- a/mapows.h +++ b/mapows.h @@ -144,6 +144,7 @@ MS_DLL_EXPORT int msOWSParseRequestMetadata(const char *metadata, const char *re #define OWS_1_1_2 0x010102 #define OWS_1_3_0 0x010300 #define OWS_2_0_0 0x020000 +#define OWS_2_0_1 0x020001 #define OWS_VERSION_MAXLEN 20 /* Buffer size for msOWSGetVersionString() */ #define OWS_VERSION_NOTSET -1 #define OWS_VERSION_BADFORMAT -2 diff --git a/mapparser.c b/mapparser.c index 3cb0fd78f3..204930caa3 100644 --- a/mapparser.c +++ b/mapparser.c @@ -1,19 +1,19 @@ /* A Bison parser, made by GNU Bison 2.5. */ /* Bison implementation for Yacc-like parsers in C - + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -110,44 +110,44 @@ int yyerror(parseObj *, const char *); /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE -/* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ -enum yytokentype { - NUMBER = 258, - STRING = 259, - TIME = 260, - SHAPE = 261, - OR = 262, - AND = 263, - NOT = 264, - IRE = 265, - IEQ = 266, - IN = 267, - GE = 268, - LE = 269, - GT = 270, - LT = 271, - NE = 272, - EQ = 273, - RE = 274, - DWITHIN = 275, - BEYOND = 276, - CONTAINS = 277, - WITHIN = 278, - CROSSES = 279, - OVERLAPS = 280, - TOUCHES = 281, - DISJOINT = 282, - INTERSECTS = 283, - ROUND = 284, - COMMIFY = 285, - LENGTH = 286, - AREA = 287, - TOSTRING = 288, - DIFFERENCE = 289, - YYBUFFER = 290, - NEG = 291 -}; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NUMBER = 258, + STRING = 259, + TIME = 260, + SHAPE = 261, + OR = 262, + AND = 263, + NOT = 264, + IRE = 265, + IEQ = 266, + IN = 267, + GE = 268, + LE = 269, + GT = 270, + LT = 271, + NE = 272, + EQ = 273, + RE = 274, + DWITHIN = 275, + BEYOND = 276, + CONTAINS = 277, + WITHIN = 278, + CROSSES = 279, + OVERLAPS = 280, + TOUCHES = 281, + DISJOINT = 282, + INTERSECTS = 283, + ROUND = 284, + COMMIFY = 285, + LENGTH = 286, + AREA = 287, + TOSTRING = 288, + DIFFERENCE = 289, + YYBUFFER = 290, + NEG = 291 + }; #endif /* Tokens. */ #define NUMBER 258 @@ -189,20 +189,21 @@ enum yytokentype { #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE { +typedef union YYSTYPE +{ - /* Line 293 of yacc.c */ +/* Line 293 of yacc.c */ #line 30 "mapparser.y" double dblval; - int intval; - char *strval; + int intval; + char *strval; struct tm tmval; shapeObj *shpval; - /* Line 293 of yacc.c */ +/* Line 293 of yacc.c */ #line 208 "mapparser.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 @@ -294,7 +295,7 @@ YYID (int yyi) #else static int YYID (yyi) -int yyi; + int yyi; #endif { return yyi; @@ -330,13 +331,13 @@ int yyi; # endif # ifdef YYSTACK_ALLOC -/* Pacify GCC's `empty if-body' warning. */ + /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM -/* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else @@ -347,7 +348,7 @@ int yyi; # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -373,10 +374,11 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ -union yyalloc { +union yyalloc +{ yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; @@ -397,15 +399,15 @@ union yyalloc { elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ while (YYID (0)) #endif @@ -418,13 +420,13 @@ union yyalloc { # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else -# define YYCOPY(To, From, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (To)[yyi] = (From)[yyi]; \ - } \ +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ while (YYID (0)) # endif # endif @@ -448,108 +450,113 @@ union yyalloc { #define YYUNDEFTOK 2 #define YYMAXUTOK 291 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ -static const yytype_uint8 yytranslate[] = { - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 40, 2, 2, - 43, 44, 38, 36, 45, 37, 2, 39, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 42, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 41 +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 40, 2, 2, + 43, 44, 38, 36, 45, 37, 2, 39, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 42, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 41 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ -static const yytype_uint16 yyprhs[] = { - 0, 0, 3, 4, 6, 8, 10, 12, 16, 20, - 24, 28, 32, 36, 40, 44, 47, 50, 54, 58, - 62, 66, 70, 74, 78, 82, 86, 90, 94, 98, - 102, 106, 110, 114, 118, 122, 126, 130, 134, 138, - 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, - 182, 186, 190, 194, 196, 200, 204, 208, 212, 216, - 220, 223, 227, 232, 237, 244, 246, 250, 257, 264, - 266, 270, 274, 281, 286, 288 +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 4, 6, 8, 10, 12, 16, 20, + 24, 28, 32, 36, 40, 44, 47, 50, 54, 58, + 62, 66, 70, 74, 78, 82, 86, 90, 94, 98, + 102, 106, 110, 114, 118, 122, 126, 130, 134, 138, + 142, 146, 150, 154, 158, 162, 166, 170, 174, 178, + 182, 186, 190, 194, 196, 200, 204, 208, 212, 216, + 220, 223, 227, 232, 237, 244, 246, 250, 257, 264, + 266, 270, 274, 281, 286, 288 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int8 yyrhs[] = { - 47, 0, -1, -1, 48, -1, 49, -1, 51, -1, - 50, -1, 48, 7, 48, -1, 48, 8, 48, -1, - 48, 7, 49, -1, 48, 8, 49, -1, 49, 7, - 48, -1, 49, 8, 48, -1, 49, 7, 49, -1, - 49, 8, 49, -1, 9, 48, -1, 9, 49, -1, - 51, 19, 51, -1, 51, 10, 51, -1, 49, 18, - 49, -1, 49, 17, 49, -1, 49, 15, 49, -1, - 49, 16, 49, -1, 49, 13, 49, -1, 49, 14, - 49, -1, 43, 48, 44, -1, 51, 18, 51, -1, - 51, 17, 51, -1, 51, 15, 51, -1, 51, 16, - 51, -1, 51, 13, 51, -1, 51, 14, 51, -1, - 52, 18, 52, -1, 52, 17, 52, -1, 52, 15, - 52, -1, 52, 16, 52, -1, 52, 13, 52, -1, - 52, 14, 52, -1, 51, 12, 51, -1, 49, 12, - 51, -1, 49, 11, 49, -1, 51, 11, 51, -1, - 52, 11, 52, -1, 50, 18, 50, -1, 50, 28, - 50, -1, 50, 27, 50, -1, 50, 26, 50, -1, - 50, 25, 50, -1, 50, 24, 50, -1, 50, 23, - 50, -1, 50, 22, 50, -1, 50, 20, 50, -1, - 50, 21, 50, -1, 3, -1, 43, 49, 44, -1, - 49, 36, 49, -1, 49, 37, 49, -1, 49, 38, - 49, -1, 49, 40, 49, -1, 49, 39, 49, -1, - 37, 49, -1, 49, 42, 49, -1, 31, 43, 51, - 44, -1, 32, 43, 50, 44, -1, 29, 43, 49, - 45, 49, 44, -1, 6, -1, 43, 50, 44, -1, - 35, 43, 50, 45, 49, 44, -1, 34, 43, 50, - 45, 50, 44, -1, 4, -1, 43, 51, 44, -1, - 51, 36, 51, -1, 33, 43, 49, 45, 51, 44, - -1, 30, 43, 51, 44, -1, 5, -1, 43, 52, - 44, -1 +static const yytype_int8 yyrhs[] = +{ + 47, 0, -1, -1, 48, -1, 49, -1, 51, -1, + 50, -1, 48, 7, 48, -1, 48, 8, 48, -1, + 48, 7, 49, -1, 48, 8, 49, -1, 49, 7, + 48, -1, 49, 8, 48, -1, 49, 7, 49, -1, + 49, 8, 49, -1, 9, 48, -1, 9, 49, -1, + 51, 19, 51, -1, 51, 10, 51, -1, 49, 18, + 49, -1, 49, 17, 49, -1, 49, 15, 49, -1, + 49, 16, 49, -1, 49, 13, 49, -1, 49, 14, + 49, -1, 43, 48, 44, -1, 51, 18, 51, -1, + 51, 17, 51, -1, 51, 15, 51, -1, 51, 16, + 51, -1, 51, 13, 51, -1, 51, 14, 51, -1, + 52, 18, 52, -1, 52, 17, 52, -1, 52, 15, + 52, -1, 52, 16, 52, -1, 52, 13, 52, -1, + 52, 14, 52, -1, 51, 12, 51, -1, 49, 12, + 51, -1, 49, 11, 49, -1, 51, 11, 51, -1, + 52, 11, 52, -1, 50, 18, 50, -1, 50, 28, + 50, -1, 50, 27, 50, -1, 50, 26, 50, -1, + 50, 25, 50, -1, 50, 24, 50, -1, 50, 23, + 50, -1, 50, 22, 50, -1, 50, 20, 50, -1, + 50, 21, 50, -1, 3, -1, 43, 49, 44, -1, + 49, 36, 49, -1, 49, 37, 49, -1, 49, 38, + 49, -1, 49, 40, 49, -1, 49, 39, 49, -1, + 37, 49, -1, 49, 42, 49, -1, 31, 43, 51, + 44, -1, 32, 43, 50, 44, -1, 29, 43, 49, + 45, 49, 44, -1, 6, -1, 43, 50, 44, -1, + 35, 43, 50, 45, 49, 44, -1, 34, 43, 50, + 45, 50, 44, -1, 4, -1, 43, 51, 44, -1, + 51, 36, 51, -1, 33, 43, 49, 45, 51, 44, + -1, 30, 43, 51, 44, -1, 5, -1, 43, 52, + 44, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = { - 0, 65, 65, 66, 79, 93, 106, 117, 125, 134, - 142, 151, 159, 168, 176, 185, 186, 187, 200, 213, - 219, 225, 231, 237, 243, 249, 250, 258, 266, 275, - 283, 291, 299, 305, 311, 317, 323, 329, 335, 356, - 377, 383, 391, 398, 409, 420, 431, 442, 453, 464, - 475, 486, 496, 508, 509, 510, 511, 512, 513, 514, - 521, 522, 523, 524, 532, 535, 536, 537, 547, 559, - 560, 561, 565, 569, 575, 576 +static const yytype_uint16 yyrline[] = +{ + 0, 65, 65, 66, 79, 93, 106, 117, 125, 134, + 142, 151, 159, 168, 176, 185, 186, 187, 200, 213, + 219, 225, 231, 237, 243, 249, 250, 258, 266, 275, + 283, 291, 299, 305, 311, 317, 323, 329, 335, 356, + 377, 383, 391, 398, 409, 420, 431, 442, 453, 464, + 475, 486, 496, 508, 509, 510, 511, 512, 513, 514, + 521, 522, 523, 524, 532, 535, 536, 537, 547, 559, + 560, 561, 565, 569, 575, 576 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = { +static const char *const yytname[] = +{ "$end", "error", "$undefined", "NUMBER", "STRING", "TIME", "SHAPE", "OR", "AND", "NOT", "IRE", "IEQ", "IN", "GE", "LE", "GT", "LT", "NE", "EQ", "RE", "DWITHIN", "BEYOND", "CONTAINS", "WITHIN", "CROSSES", @@ -564,137 +571,145 @@ static const char *const yytname[] = { # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ -static const yytype_uint16 yytoknum[] = { - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 43, 45, 42, 47, - 37, 291, 94, 40, 41, 44 +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 43, 45, 42, 47, + 37, 291, 94, 40, 41, 44 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = { - 0, 46, 47, 47, 47, 47, 47, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 50, 50, 50, 50, 51, - 51, 51, 51, 51, 52, 52 +static const yytype_uint8 yyr1[] = +{ + 0, 46, 47, 47, 47, 47, 47, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, + 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 49, 49, 50, 50, 50, 50, 51, + 51, 51, 51, 51, 52, 52 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = { - 0, 2, 0, 1, 1, 1, 1, 3, 3, 3, - 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, - 2, 3, 4, 4, 6, 1, 3, 6, 6, 1, - 3, 3, 6, 4, 1, 3 +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 1, 1, 1, 1, 3, 3, 3, + 3, 3, 3, 3, 3, 2, 2, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, + 2, 3, 4, 4, 6, 1, 3, 6, 6, 1, + 3, 3, 6, 4, 1, 3 }; /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. Performed when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ -static const yytype_uint8 yydefact[] = { - 2, 53, 69, 74, 65, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3, 4, 6, 5, - 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 60, 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 25, 54, 66, 70, - 75, 7, 9, 8, 10, 11, 13, 12, 14, 40, - 39, 23, 24, 21, 22, 20, 19, 55, 56, 57, - 59, 58, 61, 43, 51, 52, 50, 49, 48, 47, - 46, 45, 44, 18, 41, 38, 30, 31, 28, 29, - 27, 26, 17, 71, 0, 42, 36, 37, 34, 35, - 33, 32, 0, 0, 73, 62, 0, 63, 0, 0, - 0, 0, 0, 0, 0, 0, 64, 72, 68, 67 +static const yytype_uint8 yydefact[] = +{ + 2, 53, 69, 74, 65, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3, 4, 6, 5, + 0, 15, 16, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 60, 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 25, 54, 66, 70, + 75, 7, 9, 8, 10, 11, 13, 12, 14, 40, + 39, 23, 24, 21, 22, 20, 19, 55, 56, 57, + 59, 58, 61, 43, 51, 52, 50, 49, 48, 47, + 46, 45, 44, 18, 41, 38, 30, 31, 28, 29, + 27, 26, 17, 71, 0, 42, 36, 37, 34, 35, + 33, 32, 0, 0, 73, 62, 0, 63, 0, 0, + 0, 0, 0, 0, 0, 0, 64, 72, 68, 67 }; /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int8 yydefgoto[] = { - -1, 15, 16, 17, 23, 24, 20 +static const yytype_int8 yydefgoto[] = +{ + -1, 15, 16, 17, 23, 24, 20 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -40 -static const yytype_int16 yypact[] = { - 7, -40, -40, -40, -40, 7, -39, -38, -28, -8, - 4, 5, 9, 68, 7, 8, -5, 192, 298, 281, - 171, -40, 248, 298, 281, 68, 13, 13, 106, 68, - 106, 106, 68, 12, 11, 154, 283, 239, 139, -40, - 7, 7, 7, 7, 68, 13, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 106, 106, - 106, 106, 106, 106, 106, 106, 106, 106, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 2, - 2, 2, 2, 2, 2, 2, 231, 13, -35, -10, - 106, 29, 292, 40, 42, -15, -40, -40, -40, -40, - -40, 45, 206, -40, 248, 45, 206, -40, 248, 320, - 21, 320, 320, 320, 320, 320, 320, 30, 30, 12, - 12, 12, 12, -40, -40, -40, -40, -40, -40, -40, - -40, -40, -40, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, -40, 2, -40, -40, -40, -40, -40, - -40, -40, 68, 52, -40, -40, 47, -40, 13, 106, - 68, 48, 302, 65, 54, 311, -40, -40, -40, -40 +static const yytype_int16 yypact[] = +{ + 7, -40, -40, -40, -40, 7, -39, -38, -28, -8, + 4, 5, 9, 68, 7, 8, -5, 192, 298, 281, + 171, -40, 248, 298, 281, 68, 13, 13, 106, 68, + 106, 106, 68, 12, 11, 154, 283, 239, 139, -40, + 7, 7, 7, 7, 68, 13, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, 106, 106, + 106, 106, 106, 106, 106, 106, 106, 106, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 2, + 2, 2, 2, 2, 2, 2, 231, 13, -35, -10, + 106, 29, 292, 40, 42, -15, -40, -40, -40, -40, + -40, 45, 206, -40, 248, 45, 206, -40, 248, 320, + 21, 320, 320, 320, 320, 320, 320, 30, 30, 12, + 12, 12, 12, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, -40, 2, -40, -40, -40, -40, -40, + -40, -40, 68, 52, -40, -40, 47, -40, 13, 106, + 68, 48, 302, 65, 54, 311, -40, -40, -40, -40 }; /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = { - -40, -40, 134, 81, 0, 6, 35 +static const yytype_int16 yypgoto[] = +{ + -40, -40, 134, 81, 0, 6, 35 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -1 -static const yytype_uint8 yytable[] = { - 18, 78, 40, 41, 25, 26, 19, 3, 39, 154, - 1, 2, 3, 4, 36, 27, 5, 2, 40, 41, - 37, 52, 53, 54, 55, 56, 78, 57, 91, 97, - 93, 94, 88, 89, 155, 28, 6, 7, 8, 9, - 10, 11, 12, 7, 13, 144, 10, 29, 30, 38, - 14, 110, 31, 41, 57, 96, 87, 78, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 54, 55, - 56, 1, 57, 157, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 159, 22, 160, 78, 0, - 156, 98, 100, 153, 33, 35, 99, 6, 168, 8, - 9, 78, 0, 0, 0, 13, 86, 0, 0, 167, - 92, 32, 4, 95, 145, 146, 147, 148, 149, 150, - 151, 102, 104, 106, 108, 109, 0, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 21, - 11, 12, 0, 0, 0, 0, 0, 0, 34, 90, - 79, 0, 80, 81, 82, 83, 84, 85, 0, 164, - 0, 42, 43, 0, 163, 44, 45, 46, 47, 48, - 49, 50, 51, 0, 101, 103, 105, 107, 0, 161, - 0, 0, 79, 100, 80, 81, 82, 83, 84, 85, - 52, 53, 54, 55, 56, 0, 57, 0, 97, 42, - 43, 0, 0, 44, 45, 46, 47, 48, 49, 50, - 51, 0, 0, 0, 43, 0, 0, 44, 45, 46, - 47, 48, 49, 50, 51, 0, 0, 0, 52, 53, - 54, 55, 56, 162, 57, 0, 0, 0, 0, 0, - 0, 165, 52, 53, 54, 55, 56, 0, 57, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 0, 57, 0, 78, 152, 0, 0, 0, - 0, 0, 0, 99, 52, 53, 54, 55, 56, 0, - 57, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 58, 0, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 0, 0, 0, 0, 58, 78, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 98, 52, 53, - 54, 55, 56, 0, 57, 0, 0, 158, 52, 53, - 54, 55, 56, 0, 57, 0, 166, 52, 53, 54, - 55, 56, 0, 57, 0, 169, 52, 53, 54, 55, - 56, 0, 57 +static const yytype_uint8 yytable[] = +{ + 18, 78, 40, 41, 25, 26, 19, 3, 39, 154, + 1, 2, 3, 4, 36, 27, 5, 2, 40, 41, + 37, 52, 53, 54, 55, 56, 78, 57, 91, 97, + 93, 94, 88, 89, 155, 28, 6, 7, 8, 9, + 10, 11, 12, 7, 13, 144, 10, 29, 30, 38, + 14, 110, 31, 41, 57, 96, 87, 78, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 54, 55, + 56, 1, 57, 157, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 159, 22, 160, 78, 0, + 156, 98, 100, 153, 33, 35, 99, 6, 168, 8, + 9, 78, 0, 0, 0, 13, 86, 0, 0, 167, + 92, 32, 4, 95, 145, 146, 147, 148, 149, 150, + 151, 102, 104, 106, 108, 109, 0, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 21, + 11, 12, 0, 0, 0, 0, 0, 0, 34, 90, + 79, 0, 80, 81, 82, 83, 84, 85, 0, 164, + 0, 42, 43, 0, 163, 44, 45, 46, 47, 48, + 49, 50, 51, 0, 101, 103, 105, 107, 0, 161, + 0, 0, 79, 100, 80, 81, 82, 83, 84, 85, + 52, 53, 54, 55, 56, 0, 57, 0, 97, 42, + 43, 0, 0, 44, 45, 46, 47, 48, 49, 50, + 51, 0, 0, 0, 43, 0, 0, 44, 45, 46, + 47, 48, 49, 50, 51, 0, 0, 0, 52, 53, + 54, 55, 56, 162, 57, 0, 0, 0, 0, 0, + 0, 165, 52, 53, 54, 55, 56, 0, 57, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 0, 57, 0, 78, 152, 0, 0, 0, + 0, 0, 0, 99, 52, 53, 54, 55, 56, 0, + 57, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 58, 0, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 0, 0, 0, 0, 58, 78, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 98, 52, 53, + 54, 55, 56, 0, 57, 0, 0, 158, 52, 53, + 54, 55, 56, 0, 57, 0, 166, 52, 53, 54, + 55, 56, 0, 57, 0, 169, 52, 53, 54, 55, + 56, 0, 57 }; #define yypact_value_is_default(yystate) \ @@ -703,76 +718,78 @@ static const yytype_uint8 yytable[] = { #define yytable_value_is_error(yytable_value) \ YYID (0) -static const yytype_int16 yycheck[] = { - 0, 36, 7, 8, 43, 43, 0, 5, 0, 44, - 3, 4, 5, 6, 14, 43, 9, 4, 7, 8, - 14, 36, 37, 38, 39, 40, 36, 42, 28, 44, - 30, 31, 26, 27, 44, 43, 29, 30, 31, 32, - 33, 34, 35, 30, 37, 43, 33, 43, 43, 14, - 43, 45, 43, 8, 42, 44, 43, 36, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 38, 39, - 40, 3, 42, 44, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 45, 5, 45, 36, -1, - 90, 44, 44, 87, 13, 14, 44, 29, 44, 31, - 32, 36, -1, -1, -1, 37, 25, -1, -1, 44, - 29, 43, 6, 32, 79, 80, 81, 82, 83, 84, - 85, 40, 41, 42, 43, 44, -1, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 5, - 34, 35, -1, -1, -1, -1, -1, -1, 14, 43, - 11, -1, 13, 14, 15, 16, 17, 18, -1, 159, - -1, 7, 8, -1, 158, 11, 12, 13, 14, 15, - 16, 17, 18, -1, 40, 41, 42, 43, -1, 144, - -1, -1, 11, 44, 13, 14, 15, 16, 17, 18, - 36, 37, 38, 39, 40, -1, 42, -1, 44, 7, - 8, -1, -1, 11, 12, 13, 14, 15, 16, 17, - 18, -1, -1, -1, 8, -1, -1, 11, 12, 13, - 14, 15, 16, 17, 18, -1, -1, -1, 36, 37, - 38, 39, 40, 152, 42, -1, -1, -1, -1, -1, - -1, 160, 36, 37, 38, 39, 40, -1, 42, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 11, - 12, 13, 14, 15, 16, 17, 18, 36, 37, 38, - 39, 40, -1, 42, -1, 36, 45, -1, -1, -1, - -1, -1, -1, 44, 36, 37, 38, 39, 40, -1, - 42, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 18, -1, 20, 21, 22, 23, 24, 25, 26, - 27, 28, -1, -1, -1, -1, 18, 36, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 44, 36, 37, - 38, 39, 40, -1, 42, -1, -1, 45, 36, 37, - 38, 39, 40, -1, 42, -1, 44, 36, 37, 38, - 39, 40, -1, 42, -1, 44, 36, 37, 38, 39, - 40, -1, 42 +static const yytype_int16 yycheck[] = +{ + 0, 36, 7, 8, 43, 43, 0, 5, 0, 44, + 3, 4, 5, 6, 14, 43, 9, 4, 7, 8, + 14, 36, 37, 38, 39, 40, 36, 42, 28, 44, + 30, 31, 26, 27, 44, 43, 29, 30, 31, 32, + 33, 34, 35, 30, 37, 43, 33, 43, 43, 14, + 43, 45, 43, 8, 42, 44, 43, 36, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 38, 39, + 40, 3, 42, 44, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 45, 5, 45, 36, -1, + 90, 44, 44, 87, 13, 14, 44, 29, 44, 31, + 32, 36, -1, -1, -1, 37, 25, -1, -1, 44, + 29, 43, 6, 32, 79, 80, 81, 82, 83, 84, + 85, 40, 41, 42, 43, 44, -1, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 5, + 34, 35, -1, -1, -1, -1, -1, -1, 14, 43, + 11, -1, 13, 14, 15, 16, 17, 18, -1, 159, + -1, 7, 8, -1, 158, 11, 12, 13, 14, 15, + 16, 17, 18, -1, 40, 41, 42, 43, -1, 144, + -1, -1, 11, 44, 13, 14, 15, 16, 17, 18, + 36, 37, 38, 39, 40, -1, 42, -1, 44, 7, + 8, -1, -1, 11, 12, 13, 14, 15, 16, 17, + 18, -1, -1, -1, 8, -1, -1, 11, 12, 13, + 14, 15, 16, 17, 18, -1, -1, -1, 36, 37, + 38, 39, 40, 152, 42, -1, -1, -1, -1, -1, + -1, 160, 36, 37, 38, 39, 40, -1, 42, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 11, + 12, 13, 14, 15, 16, 17, 18, 36, 37, 38, + 39, 40, -1, 42, -1, 36, 45, -1, -1, -1, + -1, -1, -1, 44, 36, 37, 38, 39, 40, -1, + 42, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 18, -1, 20, 21, 22, 23, 24, 25, 26, + 27, 28, -1, -1, -1, -1, 18, 36, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 44, 36, 37, + 38, 39, 40, -1, 42, -1, -1, 45, 36, 37, + 38, 39, 40, -1, 42, -1, 44, 36, 37, 38, + 39, 40, -1, 42, -1, 44, 36, 37, 38, 39, + 40, -1, 42 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = { - 0, 3, 4, 5, 6, 9, 29, 30, 31, 32, - 33, 34, 35, 37, 43, 47, 48, 49, 50, 51, - 52, 48, 49, 50, 51, 43, 43, 43, 43, 43, - 43, 43, 43, 49, 48, 49, 50, 51, 52, 0, - 7, 8, 7, 8, 11, 12, 13, 14, 15, 16, - 17, 18, 36, 37, 38, 39, 40, 42, 18, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 36, 11, - 13, 14, 15, 16, 17, 18, 49, 43, 51, 51, - 43, 50, 49, 50, 50, 49, 44, 44, 44, 44, - 44, 48, 49, 48, 49, 48, 49, 48, 49, 49, - 51, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, 43, 52, 52, 52, 52, 52, - 52, 52, 45, 51, 44, 44, 50, 44, 45, 45, - 45, 52, 49, 51, 50, 49, 44, 44, 44, 44 +static const yytype_uint8 yystos[] = +{ + 0, 3, 4, 5, 6, 9, 29, 30, 31, 32, + 33, 34, 35, 37, 43, 47, 48, 49, 50, 51, + 52, 48, 49, 50, 51, 43, 43, 43, 43, 43, + 43, 43, 43, 49, 48, 49, 50, 51, 52, 0, + 7, 8, 7, 8, 11, 12, 13, 14, 15, 16, + 17, 18, 36, 37, 38, 39, 40, 42, 18, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 36, 11, + 13, 14, 15, 16, 17, 18, 49, 43, 51, 51, + 43, 50, 49, 50, 50, 49, 44, 44, 44, 44, + 44, 48, 49, 48, 49, 48, 49, 48, 49, 49, + 51, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 49, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 51, 51, 51, 51, 51, 51, 51, + 51, 51, 51, 51, 43, 52, 52, 52, 52, 52, + 52, 52, 45, 51, 44, 44, 50, 44, 45, 45, + 45, 52, 49, 51, 50, 49, 44, 44, 44, 44 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily @@ -782,35 +799,35 @@ static const yytype_uint8 yystos[] = { in Bison 2.4.2's NEWS entry, where a plan to phase it out is discussed. */ -#define YYFAIL goto yyerrlab +#define YYFAIL goto yyerrlab #if defined YYFAIL -/* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (1); \ - goto yybackup; \ - } \ - else \ - { \ +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ yyerror (p, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ + YYERROR; \ + } \ while (YYID (0)) -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. @@ -819,22 +836,22 @@ while (YYID (0)) #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT -# define YYLLOC_DEFAULT(Current, Rhs, N) \ - do \ +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ if (YYID (N)) \ - { \ - (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ - (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ - (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ - (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ - } \ - else \ - { \ - (Current).first_line = (Current).last_line = \ - YYRHSLOC (Rhs, 0).last_line; \ - (Current).first_column = (Current).last_column = \ - YYRHSLOC (Rhs, 0).last_column; \ - } \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ while (YYID (0)) #endif @@ -862,21 +879,21 @@ while (YYID (0)) # define YYFPRINTF fprintf # endif -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ } while (YYID (0)) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, p); \ - YYFPRINTF (stderr, "\n"); \ - } \ +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, p); \ + YYFPRINTF (stderr, "\n"); \ + } \ } while (YYID (0)) @@ -892,10 +909,10 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep, p) -FILE *yyoutput; -int yytype; -YYSTYPE const * const yyvaluep; -parseObj *p; + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + parseObj *p; #endif { if (!yyvaluep) @@ -907,10 +924,11 @@ parseObj *p; # else YYUSE (yyoutput); # endif - switch (yytype) { - default: - break; - } + switch (yytype) + { + default: + break; + } } @@ -925,10 +943,10 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, par #else static void yy_symbol_print (yyoutput, yytype, yyvaluep, p) -FILE *yyoutput; -int yytype; -YYSTYPE const * const yyvaluep; -parseObj *p; + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + parseObj *p; #endif { if (yytype < YYNTOKENS) @@ -952,22 +970,23 @@ yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) -yytype_int16 *yybottom; -yytype_int16 *yytop; + yytype_int16 *yybottom; + yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) @@ -982,29 +1001,30 @@ yy_reduce_print (YYSTYPE *yyvsp, int yyrule, parseObj *p) #else static void yy_reduce_print (yyvsp, yyrule, p) -YYSTYPE *yyvsp; -int yyrule; -parseObj *p; + YYSTYPE *yyvsp; + int yyrule; + parseObj *p; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , p); - YYFPRINTF (stderr, "\n"); - } + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , p); + YYFPRINTF (stderr, "\n"); + } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ yy_reduce_print (yyvsp, Rule, p); \ } while (YYID (0)) @@ -1020,7 +1040,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -1050,7 +1070,7 @@ yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) -const char *yystr; + const char *yystr; #endif { YYSIZE_T yylen; @@ -1074,8 +1094,8 @@ yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) -char *yydest; -const char *yysrc; + char *yydest; + const char *yysrc; #endif { char *yyd = yydest; @@ -1100,34 +1120,35 @@ const char *yysrc; static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { - if (*yystr == '"') { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } -do_not_strip_quotes: - ; - } + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } if (! yyres) return yystrlen (yystr); @@ -1187,38 +1208,43 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ - if (yytoken != YYEMPTY) { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - yysize1 = yysize + yytnamerr (0, yytname[yyx]); - if (! (yysize <= yysize1 - && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) - return 2; - yysize = yysize1; + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; + yysize = yysize1; + } } } - } - switch (yycount) { + switch (yycount) + { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ @@ -1230,20 +1256,21 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ - } + } yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; - if (*yymsg_alloc < yysize) { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation @@ -1252,13 +1279,16 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } else { - yyp++; - yyformat++; - } + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } } return 0; } @@ -1276,10 +1306,10 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parseObj *p) #else static void yydestruct (yymsg, yytype, yyvaluep, p) -const char *yymsg; -int yytype; -YYSTYPE *yyvaluep; -parseObj *p; + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + parseObj *p; #endif { YYUSE (yyvaluep); @@ -1289,11 +1319,12 @@ parseObj *p; yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) { + switch (yytype) + { - default: - break; - } + default: + break; + } } @@ -1325,7 +1356,7 @@ yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) -void *YYPARSE_PARAM; + void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ @@ -1335,41 +1366,41 @@ yyparse (parseObj *p) #else int yyparse (p) -parseObj *p; + parseObj *p; #endif #endif { - /* The lookahead symbol. */ - int yychar; +/* The lookahead symbol. */ +int yychar; - /* The semantic value of the lookahead symbol. */ - YYSTYPE yylval; +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval; - /* Number of syntax errors so far. */ - int yynerrs; + /* Number of syntax errors so far. */ + int yynerrs; - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; - /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; - YYSIZE_T yystacksize; + YYSIZE_T yystacksize; int yyn; int yyresult; @@ -1413,76 +1444,77 @@ parseObj *p; goto yysetstate; - /*------------------------------------------------------------. - | yynewstate -- Push a new state, which is found in yystate. | - `------------------------------------------------------------*/ -yynewstate: +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; -yysetstate: + yysetstate: *yyssp = yystate; - if (yyss + yystacksize - 1 <= yyssp) { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = yyssp - yyss + 1; + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - - yyss = yyss1; - yyvs = yyvs1; - } + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE - goto yyexhaustedlab; -# else - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } # endif #endif /* no yyoverflow */ - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -1491,9 +1523,9 @@ parseObj *p; goto yybackup; - /*-----------. - | yybackup. | - `-----------*/ +/*-----------. +| yybackup. | +`-----------*/ yybackup: /* Do appropriate processing given the current state. Read a @@ -1507,18 +1539,22 @@ parseObj *p; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } - if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } else { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ @@ -1526,12 +1562,13 @@ parseObj *p; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; - if (yyn <= 0) { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } + if (yyn <= 0) + { + if (yytable_value_is_error (yyn)) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } /* Count tokens shifted since error; after three, turn off error status. */ @@ -1550,9 +1587,9 @@ parseObj *p; goto yynewstate; - /*-----------------------------------------------------------. - | yydefault -- do the default action for the current state. | - `-----------------------------------------------------------*/ +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) @@ -1560,9 +1597,9 @@ parseObj *p; goto yyreduce; - /*-----------------------------. - | yyreduce -- Do a reduction. | - `-----------------------------*/ +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; @@ -1579,578 +1616,579 @@ parseObj *p; YY_REDUCE_PRINT (yyn); - switch (yyn) { - case 3: + switch (yyn) + { + case 3: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 66 "mapparser.y" { switch(p->type) { - case(MS_PARSE_TYPE_BOOLEAN): - p->result.intval = (yyvsp[(1) - (1)].intval); - break; - case(MS_PARSE_TYPE_STRING): - if((yyvsp[(1) - (1)].intval)) - p->result.strval = strdup("true"); - else - p->result.strval = strdup("false"); - break; + case(MS_PARSE_TYPE_BOOLEAN): + p->result.intval = (yyvsp[(1) - (1)].intval); + break; + case(MS_PARSE_TYPE_STRING): + if((yyvsp[(1) - (1)].intval)) + p->result.strval = strdup("true"); + else + p->result.strval = strdup("false"); + break; } } break; - case 4: + case 4: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 79 "mapparser.y" { switch(p->type) { - case(MS_PARSE_TYPE_BOOLEAN): - if((yyvsp[(1) - (1)].dblval) != 0) - p->result.intval = MS_TRUE; - else - p->result.intval = MS_FALSE; - break; - case(MS_PARSE_TYPE_STRING): - p->result.strval = (char *)malloc(64); /* large enough for a double */ - snprintf(p->result.strval, 64, "%g", (yyvsp[(1) - (1)].dblval)); - break; + case(MS_PARSE_TYPE_BOOLEAN): + if((yyvsp[(1) - (1)].dblval) != 0) + p->result.intval = MS_TRUE; + else + p->result.intval = MS_FALSE; + break; + case(MS_PARSE_TYPE_STRING): + p->result.strval = (char *)malloc(64); /* large enough for a double */ + snprintf(p->result.strval, 64, "%g", (yyvsp[(1) - (1)].dblval)); + break; } } break; - case 5: + case 5: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 93 "mapparser.y" { switch(p->type) { - case(MS_PARSE_TYPE_BOOLEAN): - if((yyvsp[(1) - (1)].strval)) /* string is not NULL */ - p->result.intval = MS_TRUE; - else - p->result.intval = MS_FALSE; - break; - case(MS_PARSE_TYPE_STRING): - p->result.strval = (yyvsp[(1) - (1)].strval); // strdup($1); - break; + case(MS_PARSE_TYPE_BOOLEAN): + if((yyvsp[(1) - (1)].strval)) /* string is not NULL */ + p->result.intval = MS_TRUE; + else + p->result.intval = MS_FALSE; + break; + case(MS_PARSE_TYPE_STRING): + p->result.strval = (yyvsp[(1) - (1)].strval); // strdup($1); + break; } } break; - case 6: + case 6: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 106 "mapparser.y" { - switch(p->type) { - case(MS_PARSE_TYPE_SHAPE): - p->result.shpval = (yyvsp[(1) - (1)].shpval); - p->result.shpval->scratch = MS_FALSE; - break; - } + switch(p->type) { + case(MS_PARSE_TYPE_SHAPE): + p->result.shpval = (yyvsp[(1) - (1)].shpval); + p->result.shpval->scratch = MS_FALSE; + break; } + } break; - case 7: + case 7: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 117 "mapparser.y" { - if((yyvsp[(1) - (3)].intval) == MS_TRUE) - (yyval.intval) = MS_TRUE; - else if((yyvsp[(3) - (3)].intval) == MS_TRUE) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].intval) == MS_TRUE) + (yyval.intval) = MS_TRUE; + else if((yyvsp[(3) - (3)].intval) == MS_TRUE) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 8: + case 8: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 125 "mapparser.y" { - if((yyvsp[(1) - (3)].intval) == MS_TRUE) { - if((yyvsp[(3) - (3)].intval) == MS_TRUE) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].intval) == MS_TRUE) { + if((yyvsp[(3) - (3)].intval) == MS_TRUE) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } else + (yyval.intval) = MS_FALSE; + } break; - case 9: + case 9: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 134 "mapparser.y" { - if((yyvsp[(1) - (3)].intval) == MS_TRUE) - (yyval.intval) = MS_TRUE; - else if((yyvsp[(3) - (3)].dblval) != 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].intval) == MS_TRUE) + (yyval.intval) = MS_TRUE; + else if((yyvsp[(3) - (3)].dblval) != 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 10: + case 10: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 142 "mapparser.y" { - if((yyvsp[(1) - (3)].intval) == MS_TRUE) { - if((yyvsp[(3) - (3)].dblval) != 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].intval) == MS_TRUE) { + if((yyvsp[(3) - (3)].dblval) != 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } else + (yyval.intval) = MS_FALSE; + } break; - case 11: + case 11: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 151 "mapparser.y" { - if((yyvsp[(1) - (3)].dblval) != 0) - (yyval.intval) = MS_TRUE; - else if((yyvsp[(3) - (3)].intval) == MS_TRUE) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].dblval) != 0) + (yyval.intval) = MS_TRUE; + else if((yyvsp[(3) - (3)].intval) == MS_TRUE) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 12: + case 12: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 159 "mapparser.y" { - if((yyvsp[(1) - (3)].dblval) != 0) { - if((yyvsp[(3) - (3)].intval) == MS_TRUE) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].dblval) != 0) { + if((yyvsp[(3) - (3)].intval) == MS_TRUE) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } else + (yyval.intval) = MS_FALSE; + } break; - case 13: + case 13: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 168 "mapparser.y" { - if((yyvsp[(1) - (3)].dblval) != 0) - (yyval.intval) = MS_TRUE; - else if((yyvsp[(3) - (3)].dblval) != 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].dblval) != 0) + (yyval.intval) = MS_TRUE; + else if((yyvsp[(3) - (3)].dblval) != 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 14: + case 14: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 176 "mapparser.y" { - if((yyvsp[(1) - (3)].dblval) != 0) { - if((yyvsp[(3) - (3)].dblval) != 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].dblval) != 0) { + if((yyvsp[(3) - (3)].dblval) != 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } else + (yyval.intval) = MS_FALSE; + } break; - case 15: + case 15: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 185 "mapparser.y" { (yyval.intval) = !(yyvsp[(2) - (2)].intval); } break; - case 16: + case 16: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 186 "mapparser.y" { (yyval.intval) = !(yyvsp[(2) - (2)].dblval); } break; - case 17: + case 17: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 187 "mapparser.y" { - ms_regex_t re; + ms_regex_t re; - if(ms_regcomp(&re, (yyvsp[(3) - (3)].strval), MS_REG_EXTENDED|MS_REG_NOSUB) != 0) - (yyval.intval) = MS_FALSE; + if(ms_regcomp(&re, (yyvsp[(3) - (3)].strval), MS_REG_EXTENDED|MS_REG_NOSUB) != 0) + (yyval.intval) = MS_FALSE; - if(ms_regexec(&re, (yyvsp[(1) - (3)].strval), 0, NULL, 0) == 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; + if(ms_regexec(&re, (yyvsp[(1) - (3)].strval), 0, NULL, 0) == 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; - ms_regfree(&re); - } + ms_regfree(&re); + } break; - case 18: + case 18: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 200 "mapparser.y" { - ms_regex_t re; + ms_regex_t re; - if(ms_regcomp(&re, (yyvsp[(3) - (3)].strval), MS_REG_EXTENDED|MS_REG_NOSUB|MS_REG_ICASE) != 0) - (yyval.intval) = MS_FALSE; + if(ms_regcomp(&re, (yyvsp[(3) - (3)].strval), MS_REG_EXTENDED|MS_REG_NOSUB|MS_REG_ICASE) != 0) + (yyval.intval) = MS_FALSE; - if(ms_regexec(&re, (yyvsp[(1) - (3)].strval), 0, NULL, 0) == 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; + if(ms_regexec(&re, (yyvsp[(1) - (3)].strval), 0, NULL, 0) == 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; - ms_regfree(&re); - } + ms_regfree(&re); + } break; - case 19: + case 19: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 213 "mapparser.y" { - if((yyvsp[(1) - (3)].dblval) == (yyvsp[(3) - (3)].dblval)) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].dblval) == (yyvsp[(3) - (3)].dblval)) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 20: + case 20: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 219 "mapparser.y" { - if((yyvsp[(1) - (3)].dblval) != (yyvsp[(3) - (3)].dblval)) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].dblval) != (yyvsp[(3) - (3)].dblval)) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 21: + case 21: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 225 "mapparser.y" - { - if((yyvsp[(1) - (3)].dblval) > (yyvsp[(3) - (3)].dblval)) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + { + if((yyvsp[(1) - (3)].dblval) > (yyvsp[(3) - (3)].dblval)) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 22: + case 22: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 231 "mapparser.y" { - if((yyvsp[(1) - (3)].dblval) < (yyvsp[(3) - (3)].dblval)) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].dblval) < (yyvsp[(3) - (3)].dblval)) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 23: + case 23: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 237 "mapparser.y" - { - if((yyvsp[(1) - (3)].dblval) >= (yyvsp[(3) - (3)].dblval)) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + { + if((yyvsp[(1) - (3)].dblval) >= (yyvsp[(3) - (3)].dblval)) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 24: + case 24: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 243 "mapparser.y" { - if((yyvsp[(1) - (3)].dblval) <= (yyvsp[(3) - (3)].dblval)) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].dblval) <= (yyvsp[(3) - (3)].dblval)) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 25: + case 25: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 249 "mapparser.y" { (yyval.intval) = (yyvsp[(2) - (3)].intval); } break; - case 26: + case 26: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 250 "mapparser.y" { - if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) == 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - free((yyvsp[(1) - (3)].strval)); - free((yyvsp[(3) - (3)].strval)); - } + if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) == 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + free((yyvsp[(1) - (3)].strval)); + free((yyvsp[(3) - (3)].strval)); + } break; - case 27: + case 27: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 258 "mapparser.y" { - if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) != 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - free((yyvsp[(1) - (3)].strval)); - free((yyvsp[(3) - (3)].strval)); - } + if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) != 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + free((yyvsp[(1) - (3)].strval)); + free((yyvsp[(3) - (3)].strval)); + } break; - case 28: + case 28: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 266 "mapparser.y" { - if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) > 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - /* printf("Not freeing: %s >= %s\n",$1, $3); */ - free((yyvsp[(1) - (3)].strval)); - free((yyvsp[(3) - (3)].strval)); - } + if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) > 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + /* printf("Not freeing: %s >= %s\n",$1, $3); */ + free((yyvsp[(1) - (3)].strval)); + free((yyvsp[(3) - (3)].strval)); + } break; - case 29: + case 29: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 275 "mapparser.y" { - if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) < 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - free((yyvsp[(1) - (3)].strval)); - free((yyvsp[(3) - (3)].strval)); - } + if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) < 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + free((yyvsp[(1) - (3)].strval)); + free((yyvsp[(3) - (3)].strval)); + } break; - case 30: + case 30: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 283 "mapparser.y" { - if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) >= 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - free((yyvsp[(1) - (3)].strval)); - free((yyvsp[(3) - (3)].strval)); - } + if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) >= 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + free((yyvsp[(1) - (3)].strval)); + free((yyvsp[(3) - (3)].strval)); + } break; - case 31: + case 31: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 291 "mapparser.y" { - if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) <= 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - free((yyvsp[(1) - (3)].strval)); - free((yyvsp[(3) - (3)].strval)); - } + if(strcmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) <= 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + free((yyvsp[(1) - (3)].strval)); + free((yyvsp[(3) - (3)].strval)); + } break; - case 32: + case 32: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 299 "mapparser.y" { - if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) == 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) == 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 33: + case 33: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 305 "mapparser.y" { - if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) != 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) != 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 34: + case 34: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 311 "mapparser.y" { - if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) > 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) > 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 35: + case 35: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 317 "mapparser.y" { - if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) < 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) < 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 36: + case 36: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 323 "mapparser.y" { - if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) >= 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) >= 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 37: + case 37: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 329 "mapparser.y" { - if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) <= 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) <= 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 38: + case 38: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 335 "mapparser.y" { - char *delim,*bufferp; + char *delim,*bufferp; - (yyval.intval) = MS_FALSE; - bufferp=(yyvsp[(3) - (3)].strval); + (yyval.intval) = MS_FALSE; + bufferp=(yyvsp[(3) - (3)].strval); - while((delim=strchr(bufferp,',')) != NULL) { - *delim='\0'; - if(strcmp((yyvsp[(1) - (3)].strval),bufferp) == 0) { - (yyval.intval) = MS_TRUE; - break; - } - *delim=','; - bufferp=delim+1; - } + while((delim=strchr(bufferp,',')) != NULL) { + *delim='\0'; + if(strcmp((yyvsp[(1) - (3)].strval),bufferp) == 0) { + (yyval.intval) = MS_TRUE; + break; + } + *delim=','; + bufferp=delim+1; + } - if(strcmp((yyvsp[(1) - (3)].strval),bufferp) == 0) // is this test necessary? - (yyval.intval) = MS_TRUE; - free((yyvsp[(1) - (3)].strval)); - free((yyvsp[(3) - (3)].strval)); - } + if(strcmp((yyvsp[(1) - (3)].strval),bufferp) == 0) // is this test necessary? + (yyval.intval) = MS_TRUE; + free((yyvsp[(1) - (3)].strval)); + free((yyvsp[(3) - (3)].strval)); + } break; - case 39: + case 39: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 356 "mapparser.y" { - char *delim,*bufferp; - - (yyval.intval) = MS_FALSE; - bufferp=(yyvsp[(3) - (3)].strval); + char *delim,*bufferp; - while((delim=strchr(bufferp,',')) != NULL) { - *delim='\0'; - if((yyvsp[(1) - (3)].dblval) == atof(bufferp)) { - (yyval.intval) = MS_TRUE; - break; - } - *delim=','; - bufferp=delim+1; - } + (yyval.intval) = MS_FALSE; + bufferp=(yyvsp[(3) - (3)].strval); - if((yyvsp[(1) - (3)].dblval) == atof(bufferp)) // is this test necessary? - (yyval.intval) = MS_TRUE; + while((delim=strchr(bufferp,',')) != NULL) { + *delim='\0'; + if((yyvsp[(1) - (3)].dblval) == atof(bufferp)) { + (yyval.intval) = MS_TRUE; + break; + } + *delim=','; + bufferp=delim+1; + } - free((yyvsp[(3) - (3)].strval)); - } + if((yyvsp[(1) - (3)].dblval) == atof(bufferp)) // is this test necessary? + (yyval.intval) = MS_TRUE; + + free((yyvsp[(3) - (3)].strval)); + } break; - case 40: + case 40: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 377 "mapparser.y" { - if((yyvsp[(1) - (3)].dblval) == (yyvsp[(3) - (3)].dblval)) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if((yyvsp[(1) - (3)].dblval) == (yyvsp[(3) - (3)].dblval)) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 41: + case 41: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 383 "mapparser.y" { - if(strcasecmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) == 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - free((yyvsp[(1) - (3)].strval)); - free((yyvsp[(3) - (3)].strval)); - } + if(strcasecmp((yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)) == 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + free((yyvsp[(1) - (3)].strval)); + free((yyvsp[(3) - (3)].strval)); + } break; - case 42: + case 42: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 391 "mapparser.y" { - if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) == 0) - (yyval.intval) = MS_TRUE; - else - (yyval.intval) = MS_FALSE; - } + if(msTimeCompare(&((yyvsp[(1) - (3)].tmval)), &((yyvsp[(3) - (3)].tmval))) == 0) + (yyval.intval) = MS_TRUE; + else + (yyval.intval) = MS_FALSE; + } break; - case 43: + case 43: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 398 "mapparser.y" { int rval; @@ -2165,15 +2203,15 @@ parseObj *p; } break; - case 44: + case 44: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 409 "mapparser.y" { int rval; - rval = msGEOSIntersects((yyvsp[(1) - (3)].shpval), (yyvsp[(3) - (3)].shpval)); + rval = msGEOSIntersects((yyvsp[(1) - (3)].shpval), (yyvsp[(3) - (3)].shpval)); if((yyvsp[(1) - (3)].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[(1) - (3)].shpval)); - if((yyvsp[(3) - (3)].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[(3) - (3)].shpval)); + if((yyvsp[(3) - (3)].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[(3) - (3)].shpval)); if(rval == -1) { yyerror(p, "Intersects operator failed."); return(-1); @@ -2182,9 +2220,9 @@ parseObj *p; } break; - case 45: + case 45: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 420 "mapparser.y" { int rval; @@ -2199,9 +2237,9 @@ parseObj *p; } break; - case 46: + case 46: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 431 "mapparser.y" { int rval; @@ -2216,9 +2254,9 @@ parseObj *p; } break; - case 47: + case 47: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 442 "mapparser.y" { int rval; @@ -2233,9 +2271,9 @@ parseObj *p; } break; - case 48: + case 48: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 453 "mapparser.y" { int rval; @@ -2250,9 +2288,9 @@ parseObj *p; } break; - case 49: + case 49: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 464 "mapparser.y" { int rval; @@ -2267,9 +2305,9 @@ parseObj *p; } break; - case 50: + case 50: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 475 "mapparser.y" { int rval; @@ -2284,110 +2322,110 @@ parseObj *p; } break; - case 51: + case 51: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 486 "mapparser.y" { double d; d = msGEOSDistance((yyvsp[(1) - (3)].shpval), (yyvsp[(3) - (3)].shpval)); if((yyvsp[(1) - (3)].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[(1) - (3)].shpval)); if((yyvsp[(3) - (3)].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[(3) - (3)].shpval)); - if(d == 0.0) + if(d == 0.0) (yyval.intval) = MS_TRUE; else (yyval.intval) = MS_FALSE; } break; - case 52: + case 52: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 496 "mapparser.y" { double d; d = msGEOSDistance((yyvsp[(1) - (3)].shpval), (yyvsp[(3) - (3)].shpval)); if((yyvsp[(1) - (3)].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[(1) - (3)].shpval)); if((yyvsp[(3) - (3)].shpval)->scratch == MS_TRUE) msFreeShape((yyvsp[(3) - (3)].shpval)); - if(d > 0.0) + if(d > 0.0) (yyval.intval) = MS_TRUE; else (yyval.intval) = MS_FALSE; } break; - case 54: + case 54: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 509 "mapparser.y" { (yyval.dblval) = (yyvsp[(2) - (3)].dblval); } break; - case 55: + case 55: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 510 "mapparser.y" { (yyval.dblval) = (yyvsp[(1) - (3)].dblval) + (yyvsp[(3) - (3)].dblval); } break; - case 56: + case 56: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 511 "mapparser.y" { (yyval.dblval) = (yyvsp[(1) - (3)].dblval) - (yyvsp[(3) - (3)].dblval); } break; - case 57: + case 57: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 512 "mapparser.y" { (yyval.dblval) = (yyvsp[(1) - (3)].dblval) * (yyvsp[(3) - (3)].dblval); } break; - case 58: + case 58: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 513 "mapparser.y" { (yyval.dblval) = (int)(yyvsp[(1) - (3)].dblval) % (int)(yyvsp[(3) - (3)].dblval); } break; - case 59: + case 59: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 514 "mapparser.y" { if((yyvsp[(3) - (3)].dblval) == 0.0) { yyerror(p, "Division by zero."); return(-1); } else - (yyval.dblval) = (yyvsp[(1) - (3)].dblval) / (yyvsp[(3) - (3)].dblval); + (yyval.dblval) = (yyvsp[(1) - (3)].dblval) / (yyvsp[(3) - (3)].dblval); } break; - case 60: + case 60: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 521 "mapparser.y" { (yyval.dblval) = (yyvsp[(2) - (2)].dblval); } break; - case 61: + case 61: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 522 "mapparser.y" { (yyval.dblval) = pow((yyvsp[(1) - (3)].dblval), (yyvsp[(3) - (3)].dblval)); } break; - case 62: + case 62: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 523 "mapparser.y" { (yyval.dblval) = strlen((yyvsp[(3) - (4)].strval)); } break; - case 63: + case 63: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 524 "mapparser.y" { if((yyvsp[(3) - (4)].shpval)->type != MS_SHAPE_POLYGON) { @@ -2399,23 +2437,23 @@ parseObj *p; } break; - case 64: + case 64: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 532 "mapparser.y" { (yyval.dblval) = (MS_NINT((yyvsp[(3) - (6)].dblval)/(yyvsp[(5) - (6)].dblval)))*(yyvsp[(5) - (6)].dblval); } break; - case 66: + case 66: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 536 "mapparser.y" { (yyval.shpval) = (yyvsp[(2) - (3)].shpval); } break; - case 67: + case 67: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 537 "mapparser.y" { shapeObj *s; @@ -2429,9 +2467,9 @@ parseObj *p; } break; - case 68: + case 68: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 547 "mapparser.y" { shapeObj *s; @@ -2445,28 +2483,26 @@ parseObj *p; } break; - case 70: + case 70: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 560 "mapparser.y" { (yyval.strval) = (yyvsp[(2) - (3)].strval); } break; - case 71: + case 71: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 561 "mapparser.y" - { + { (yyval.strval) = (char *)malloc(strlen((yyvsp[(1) - (3)].strval)) + strlen((yyvsp[(3) - (3)].strval)) + 1); - sprintf((yyval.strval), "%s%s", (yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)); - free((yyvsp[(1) - (3)].strval)); - free((yyvsp[(3) - (3)].strval)); + sprintf((yyval.strval), "%s%s", (yyvsp[(1) - (3)].strval), (yyvsp[(3) - (3)].strval)); free((yyvsp[(1) - (3)].strval)); free((yyvsp[(3) - (3)].strval)); } break; - case 72: + case 72: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 565 "mapparser.y" { (yyval.strval) = (char *) malloc(strlen((yyvsp[(5) - (6)].strval)) + 64); /* Plenty big? Should use snprintf below... */ @@ -2474,30 +2510,29 @@ parseObj *p; } break; - case 73: + case 73: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 569 "mapparser.y" - { - (yyvsp[(3) - (4)].strval) = msCommifyString((yyvsp[(3) - (4)].strval)); - (yyval.strval) = (yyvsp[(3) - (4)].strval); + { + (yyvsp[(3) - (4)].strval) = msCommifyString((yyvsp[(3) - (4)].strval)); + (yyval.strval) = (yyvsp[(3) - (4)].strval); } break; - case 75: + case 75: - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 576 "mapparser.y" { (yyval.tmval) = (yyvsp[(2) - (3)].tmval); } break; - /* Line 1806 of yacc.c */ +/* Line 1806 of yacc.c */ #line 2534 "mapparser.c" - default: - break; - } + default: break; + } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. @@ -2532,81 +2567,90 @@ parseObj *p; goto yynewstate; - /*------------------------------------. - | yyerrlab -- here on detecting error | - `------------------------------------*/ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) { - ++yynerrs; + if (!yyerrstatus) + { + ++yynerrs; #if ! YYERROR_VERBOSE - yyerror (p, YY_("syntax error")); + yyerror (p, YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } else { - yysyntax_error_status = YYSYNTAX_ERROR; + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) yymsgp = yymsg; - } + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (p, yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; } - yyerror (p, yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } # undef YYSYNTAX_ERROR #endif - } - + } - if (yyerrstatus == 3) { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - if (yychar <= YYEOF) { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } else { - yydestruct ("Error: discarding", - yytoken, &yylval, p); - yychar = YYEMPTY; + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval, p); + yychar = YYEMPTY; + } } - } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; - /*---------------------------------------------------. - | yyerrorlab -- error raised explicitly by YYERROR. | - `---------------------------------------------------*/ +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) - goto yyerrorlab; + goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ @@ -2617,34 +2661,37 @@ parseObj *p; goto yyerrlab1; - /*-------------------------------------------------------------. - | yyerrlab1 -- common code for both syntax error and YYERROR. | - `-------------------------------------------------------------*/ +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - + yyerrstatus = 3; /* Each real token shifted decrements this. */ - yydestruct ("Error: popping", - yystos[yystate], yyvsp, p); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp, p); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } *++yyvsp = yylval; @@ -2656,24 +2703,24 @@ parseObj *p; goto yynewstate; - /*-------------------------------------. - | yyacceptlab -- YYACCEPT comes here. | - `-------------------------------------*/ +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; - /*-----------------------------------. - | yyabortlab -- YYABORT comes here. | - `-----------------------------------*/ +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined(yyoverflow) || YYERROR_VERBOSE - /*-------------------------------------------------. - | yyexhaustedlab -- memory exhaustion comes here. | - `-------------------------------------------------*/ +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ yyexhaustedlab: yyerror (p, YY_("memory exhausted")); yyresult = 2; @@ -2681,22 +2728,24 @@ parseObj *p; #endif yyreturn: - if (yychar != YYEMPTY) { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval, p); - } + if (yychar != YYEMPTY) + { + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ + yytoken = YYTRANSLATE (yychar); + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, p); + } /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, p); - YYPOPSTACK (1); - } + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, p); + YYPOPSTACK (1); + } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); @@ -2719,7 +2768,7 @@ parseObj *p; ** Any extra C functions */ -int yylex(YYSTYPE *lvalp, parseObj *p) +int yylex(YYSTYPE *lvalp, parseObj *p) { int token; @@ -2729,147 +2778,90 @@ int yylex(YYSTYPE *lvalp, parseObj *p) token = p->expr->curtoken->token; /* may override */ switch(p->expr->curtoken->token) { - case MS_TOKEN_LITERAL_NUMBER: - token = NUMBER; - (*lvalp).dblval = p->expr->curtoken->tokenval.dblval; - break; - case MS_TOKEN_LITERAL_SHAPE: - token = SHAPE; - // fprintf(stderr, "token value = %s\n", msShapeToWKT(p->expr->curtoken->tokenval.shpval)); - (*lvalp).shpval = p->expr->curtoken->tokenval.shpval; - break; - case MS_TOKEN_LITERAL_STRING: - // printf("token value = %s\n", p->expr->curtoken->tokenval.strval); - token = STRING; - (*lvalp).strval = strdup(p->expr->curtoken->tokenval.strval); - break; - case MS_TOKEN_LITERAL_TIME: - token = TIME; - (*lvalp).tmval = p->expr->curtoken->tokenval.tmval; - break; - - case MS_TOKEN_COMPARISON_EQ: - token = EQ; - break; - case MS_TOKEN_COMPARISON_IEQ: - token = IEQ; - break; - case MS_TOKEN_COMPARISON_NE: - token = NE; - break; - case MS_TOKEN_COMPARISON_LT: - token = LT; - break; - case MS_TOKEN_COMPARISON_GT: - token = GT; - break; - case MS_TOKEN_COMPARISON_LE: - token = LE; - break; - case MS_TOKEN_COMPARISON_GE: - token = GE; - break; - case MS_TOKEN_COMPARISON_RE: - token = RE; - break; - case MS_TOKEN_COMPARISON_IRE: - token = IRE; - break; - - case MS_TOKEN_COMPARISON_INTERSECTS: - token = INTERSECTS; - break; - case MS_TOKEN_COMPARISON_DISJOINT: - token = DISJOINT; - break; - case MS_TOKEN_COMPARISON_TOUCHES: - token = TOUCHES; - break; - case MS_TOKEN_COMPARISON_OVERLAPS: - token = OVERLAPS; - break; - case MS_TOKEN_COMPARISON_CROSSES: - token = CROSSES; - break; - case MS_TOKEN_COMPARISON_WITHIN: - token = WITHIN; - break; - case MS_TOKEN_COMPARISON_CONTAINS: - token = CONTAINS; - break; - case MS_TOKEN_COMPARISON_BEYOND: - token = BEYOND; - break; - case MS_TOKEN_COMPARISON_DWITHIN: - token = DWITHIN; - break; - - case MS_TOKEN_LOGICAL_AND: - token = AND; - break; - case MS_TOKEN_LOGICAL_OR: - token = OR; - break; - case MS_TOKEN_LOGICAL_NOT: - token = NOT; - break; + case MS_TOKEN_LITERAL_NUMBER: + token = NUMBER; + (*lvalp).dblval = p->expr->curtoken->tokenval.dblval; + break; + case MS_TOKEN_LITERAL_SHAPE: + token = SHAPE; + // fprintf(stderr, "token value = %s\n", msShapeToWKT(p->expr->curtoken->tokenval.shpval)); + (*lvalp).shpval = p->expr->curtoken->tokenval.shpval; + break; + case MS_TOKEN_LITERAL_STRING: + // printf("token value = %s\n", p->expr->curtoken->tokenval.strval); + token = STRING; + (*lvalp).strval = strdup(p->expr->curtoken->tokenval.strval); + break; + case MS_TOKEN_LITERAL_TIME: + token = TIME; + (*lvalp).tmval = p->expr->curtoken->tokenval.tmval; + break; + + case MS_TOKEN_COMPARISON_EQ: token = EQ; break; + case MS_TOKEN_COMPARISON_IEQ: token = IEQ; break; + case MS_TOKEN_COMPARISON_NE: token = NE; break; + case MS_TOKEN_COMPARISON_LT: token = LT; break; + case MS_TOKEN_COMPARISON_GT: token = GT; break; + case MS_TOKEN_COMPARISON_LE: token = LE; break; + case MS_TOKEN_COMPARISON_GE: token = GE; break; + case MS_TOKEN_COMPARISON_RE: token = RE; break; + case MS_TOKEN_COMPARISON_IRE: token = IRE; break; + + case MS_TOKEN_COMPARISON_INTERSECTS: token = INTERSECTS; break; + case MS_TOKEN_COMPARISON_DISJOINT: token = DISJOINT; break; + case MS_TOKEN_COMPARISON_TOUCHES: token = TOUCHES; break; + case MS_TOKEN_COMPARISON_OVERLAPS: token = OVERLAPS; break; + case MS_TOKEN_COMPARISON_CROSSES: token = CROSSES; break; + case MS_TOKEN_COMPARISON_WITHIN: token = WITHIN; break; + case MS_TOKEN_COMPARISON_CONTAINS: token = CONTAINS; break; + case MS_TOKEN_COMPARISON_BEYOND: token = BEYOND; break; + case MS_TOKEN_COMPARISON_DWITHIN: token = DWITHIN; break; + + case MS_TOKEN_LOGICAL_AND: token = AND; break; + case MS_TOKEN_LOGICAL_OR: token = OR; break; + case MS_TOKEN_LOGICAL_NOT: token = NOT; break; + + case MS_TOKEN_BINDING_DOUBLE: + case MS_TOKEN_BINDING_INTEGER: + token = NUMBER; + (*lvalp).dblval = atof(p->shape->values[p->expr->curtoken->tokenval.bindval.index]); + break; + case MS_TOKEN_BINDING_STRING: + token = STRING; + (*lvalp).strval = strdup(p->shape->values[p->expr->curtoken->tokenval.bindval.index]); + break; + case MS_TOKEN_BINDING_SHAPE: + token = SHAPE; + // fprintf(stderr, "token value = %s\n", msShapeToWKT(p->shape)); + (*lvalp).shpval = p->shape; + break; + case MS_TOKEN_BINDING_TIME: + token = TIME; + msTimeInit(&((*lvalp).tmval)); + if(msParseTime(p->shape->values[p->expr->curtoken->tokenval.bindval.index], &((*lvalp).tmval)) != MS_TRUE) { + yyerror(p, "Parsing time value failed."); + return(-1); + } + break; - case MS_TOKEN_BINDING_DOUBLE: - case MS_TOKEN_BINDING_INTEGER: - token = NUMBER; - (*lvalp).dblval = atof(p->shape->values[p->expr->curtoken->tokenval.bindval.index]); - break; - case MS_TOKEN_BINDING_STRING: - token = STRING; - (*lvalp).strval = strdup(p->shape->values[p->expr->curtoken->tokenval.bindval.index]); - break; - case MS_TOKEN_BINDING_SHAPE: - token = SHAPE; - // fprintf(stderr, "token value = %s\n", msShapeToWKT(p->shape)); - (*lvalp).shpval = p->shape; - break; - case MS_TOKEN_BINDING_TIME: - token = TIME; - msTimeInit(&((*lvalp).tmval)); - if(msParseTime(p->shape->values[p->expr->curtoken->tokenval.bindval.index], &((*lvalp).tmval)) != MS_TRUE) { - yyerror(p, "Parsing time value failed."); - return(-1); - } - break; + case MS_TOKEN_FUNCTION_AREA: token = AREA; break; + case MS_TOKEN_FUNCTION_LENGTH: token = LENGTH; break; + case MS_TOKEN_FUNCTION_TOSTRING: token = TOSTRING; break; + case MS_TOKEN_FUNCTION_COMMIFY: token = COMMIFY; break; + case MS_TOKEN_FUNCTION_ROUND: token = ROUND; break; - case MS_TOKEN_FUNCTION_AREA: - token = AREA; - break; - case MS_TOKEN_FUNCTION_LENGTH: - token = LENGTH; - break; - case MS_TOKEN_FUNCTION_TOSTRING: - token = TOSTRING; - break; - case MS_TOKEN_FUNCTION_COMMIFY: - token = COMMIFY; - break; - case MS_TOKEN_FUNCTION_ROUND: - token = ROUND; - break; + case MS_TOKEN_FUNCTION_BUFFER: token = YYBUFFER; break; + case MS_TOKEN_FUNCTION_DIFFERENCE: token = DIFFERENCE; break; - case MS_TOKEN_FUNCTION_BUFFER: - token = YYBUFFER; - break; - case MS_TOKEN_FUNCTION_DIFFERENCE: - token = DIFFERENCE; - break; - - default: - break; + default: + break; } - p->expr->curtoken = p->expr->curtoken->next; /* re-position */ + p->expr->curtoken = p->expr->curtoken->next; /* re-position */ return(token); } -int yyerror(parseObj *p, const char *s) -{ +int yyerror(parseObj *p, const char *s) { msSetError(MS_PARSEERR, s, "yyparse()"); return(0); } diff --git a/mapparser.h b/mapparser.h index b5ab85408b..3374ecc1c3 100644 --- a/mapparser.h +++ b/mapparser.h @@ -1,19 +1,19 @@ /* A Bison parser, made by GNU Bison 2.5. */ /* Bison interface for Yacc-like parsers in C - + Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc. - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -26,7 +26,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -34,44 +34,44 @@ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE -/* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ -enum yytokentype { - NUMBER = 258, - STRING = 259, - TIME = 260, - SHAPE = 261, - OR = 262, - AND = 263, - NOT = 264, - IRE = 265, - IEQ = 266, - IN = 267, - GE = 268, - LE = 269, - GT = 270, - LT = 271, - NE = 272, - EQ = 273, - RE = 274, - DWITHIN = 275, - BEYOND = 276, - CONTAINS = 277, - WITHIN = 278, - CROSSES = 279, - OVERLAPS = 280, - TOUCHES = 281, - DISJOINT = 282, - INTERSECTS = 283, - ROUND = 284, - COMMIFY = 285, - LENGTH = 286, - AREA = 287, - TOSTRING = 288, - DIFFERENCE = 289, - YYBUFFER = 290, - NEG = 291 -}; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + NUMBER = 258, + STRING = 259, + TIME = 260, + SHAPE = 261, + OR = 262, + AND = 263, + NOT = 264, + IRE = 265, + IEQ = 266, + IN = 267, + GE = 268, + LE = 269, + GT = 270, + LT = 271, + NE = 272, + EQ = 273, + RE = 274, + DWITHIN = 275, + BEYOND = 276, + CONTAINS = 277, + WITHIN = 278, + CROSSES = 279, + OVERLAPS = 280, + TOUCHES = 281, + DISJOINT = 282, + INTERSECTS = 283, + ROUND = 284, + COMMIFY = 285, + LENGTH = 286, + AREA = 287, + TOSTRING = 288, + DIFFERENCE = 289, + YYBUFFER = 290, + NEG = 291 + }; #endif /* Tokens. */ #define NUMBER 258 @@ -113,20 +113,21 @@ enum yytokentype { #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE { +typedef union YYSTYPE +{ - /* Line 2068 of yacc.c */ +/* Line 2068 of yacc.c */ #line 30 "mapparser.y" double dblval; - int intval; - char *strval; + int intval; + char *strval; struct tm tmval; shapeObj *shpval; - /* Line 2068 of yacc.c */ +/* Line 2068 of yacc.c */ #line 132 "mapparser.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 diff --git a/mapscript/php/mapscript_i.c b/mapscript/php/mapscript_i.c index 3fe1af8c1a..7fb400ca36 100644 --- a/mapscript/php/mapscript_i.c +++ b/mapscript/php/mapscript_i.c @@ -213,6 +213,9 @@ int mapObj_queryByFilter(mapObj* self, char *string) self->query.type = MS_QUERY_BY_FILTER; self->query.filter = (expressionObj *) malloc(sizeof(expressionObj)); + self->query.filter->compiled = MS_FALSE; + self->query.filter->flags = 0; + self->query.filter->tokens = self->query.filter->curtoken = NULL; self->query.filter->string = strdup(string); self->query.filter->type = 2000; /* MS_EXPRESSION: lot's of conflicts in mapfile.h */ @@ -696,6 +699,9 @@ int layerObj_queryByFilter(layerObj *self, mapObj *map, char *string) map->query.filter = (expressionObj *) malloc(sizeof(expressionObj)); map->query.filter->string = strdup(string); map->query.filter->type = 2000; /* MS_EXPRESSION: lot's of conflicts in mapfile.h */ + map->query.filter->compiled = MS_FALSE; + map->query.filter->flags = 0; + map->query.filter->tokens = map->query.filter->curtoken = NULL; map->query.layer = self->index; map->query.rect = map->extent; diff --git a/mapscript/php/symbol.c b/mapscript/php/symbol.c index c0e1ffed9a..8a7edb2a00 100644 --- a/mapscript/php/symbol.c +++ b/mapscript/php/symbol.c @@ -333,6 +333,7 @@ PHP_METHOD(symbolObj, getImage) { zval *zoutputformat; imageObj *image = NULL; + php_map_object *php_map; php_symbol_object *php_symbol; php_outputformat_object *php_outputformat; @@ -345,16 +346,22 @@ PHP_METHOD(symbolObj, getImage) PHP_MAPSCRIPT_RESTORE_ERRORS(TRUE); php_symbol = (php_symbol_object *)zend_object_store_get_object(getThis() TSRMLS_CC); + php_map = (php_map_object *) zend_object_store_get_object(php_symbol->parent.val TSRMLS_CC); php_outputformat = (php_outputformat_object *)zend_object_store_get_object(zoutputformat TSRMLS_CC); + image = symbolObj_getImage(php_symbol->symbol, php_outputformat->outputformat); if (image == NULL) { mapscript_throw_exception("Unable to get the symbol image" TSRMLS_CC); return; } + /* the outputformat HAS to be added to the map, since the renderer is now used + by the current symbol */ + if (msGetOutputFormatIndex(php_map->map, php_outputformat->outputformat->name) == -1) + msAppendOutputFormat(php_map->map, php_outputformat->outputformat); + mapscript_create_image(image, return_value TSRMLS_CC); -} -/* }}} */ + } /* }}} */ zend_function_entry symbol_functions[] = { PHP_ME(symbolObj, __construct, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR) diff --git a/mapwcs.c b/mapwcs.c index 3f2ac59f32..49bd25d118 100644 --- a/mapwcs.c +++ b/mapwcs.c @@ -2034,7 +2034,7 @@ int msWCSDispatch(mapObj *map, cgiRequestObj *request, owsRequestObj *ows_reques /* be determined (GetCapabilities). To determine the */ /* version, the request has to be fully parsed to */ /* obtain the ACCEPTVERSIONS parameter. If this is */ - /* present also, set version to "2.0.0". */ + /* present also, set version to "2.0.1". */ if (operation == MS_WCS_GET_CAPABILITIES) { /* Parse it as if it was a WCS 2.0 request */ @@ -2043,7 +2043,7 @@ int msWCSDispatch(mapObj *map, cgiRequestObj *request, owsRequestObj *ows_reques if (status == MS_FAILURE) { msWCSFreeParamsObj20(params); return msWCSException(map, "InvalidParameterValue", - "request", "2.0.0"); + "request", "2.0"); } /* VERSION negotiation */ @@ -2067,12 +2067,12 @@ int msWCSDispatch(mapObj *map, cgiRequestObj *request, owsRequestObj *ows_reques ows_request->version = msStrdup(version_string); } else { /* set to highest acceptable */ - params_tmp->version = msStrdup("2.0.0"); - ows_request->version = msStrdup("2.0.0"); + params_tmp->version = msStrdup("2.0.1"); + ows_request->version = msStrdup("2.0.1"); } /* check if we can keep the params object */ - if (EQUAL(params_tmp->version, "2.0.0")) { + if (EQUAL(params_tmp->version, "2.0.1")) { params = params_tmp; } else { msWCSFreeParamsObj20(params_tmp); @@ -2098,7 +2098,7 @@ int msWCSDispatch(mapObj *map, cgiRequestObj *request, owsRequestObj *ows_reques /* In case of GetCapabilities, make */ char version_string[OWS_VERSION_MAXLEN]; int version, supported_versions[] = - {OWS_2_0_0, OWS_1_1_2, OWS_1_1_1, OWS_1_1_0, OWS_1_0_0}; + {OWS_2_0_1, OWS_2_0_0, OWS_1_1_2, OWS_1_1_1, OWS_1_1_0, OWS_1_0_0}; version = msOWSNegotiateVersion(requested_version, supported_versions, sizeof(supported_versions)/sizeof(int)); @@ -2119,7 +2119,7 @@ int msWCSDispatch(mapObj *map, cgiRequestObj *request, owsRequestObj *ows_reques msWCSFreeParams(params); free(params); return msWCSException(map, "InvalidParameterValue", - "request", "2.0.0"); + "request", "2.0"); } if (operation == MS_WCS_GET_CAPABILITIES) { @@ -2130,7 +2130,8 @@ int msWCSDispatch(mapObj *map, cgiRequestObj *request, owsRequestObj *ows_reques retVal = msWCSGetCoverage(map, request, params, ows_request); } return retVal; - } else if (strcmp(ows_request->version, "2.0.0") == 0) { + } else if (strcmp(ows_request->version, "2.0.0") == 0 + || strcmp(ows_request->version, "2.0.1") == 0) { #if defined(USE_LIBXML2) int i; @@ -2140,7 +2141,7 @@ int msWCSDispatch(mapObj *map, cgiRequestObj *request, owsRequestObj *ows_reques if (status == MS_FAILURE) { msWCSFreeParamsObj20(params); return msWCSException(map, "InvalidParameterValue", - "request", "2.0.0"); + "request", "2.0"); } } @@ -2154,7 +2155,7 @@ int msWCSDispatch(mapObj *map, cgiRequestObj *request, owsRequestObj *ows_reques msSetError(MS_WCSERR, "Layer name '%s' is not a valid NCName.", "msWCSDispatch()", map->layers[i]->name); msWCSFreeParamsObj20(params); - return msWCSException(map, "mapserv", "Internal", "2.0.0"); + return msWCSException(map, "mapserv", "Internal", "2.0"); } } @@ -2169,13 +2170,13 @@ int msWCSDispatch(mapObj *map, cgiRequestObj *request, owsRequestObj *ows_reques msSetError(MS_WCSERR, "Invalid request '%s'.", "msWCSDispatch20()", ows_request->request); retVal = msWCSException20(map, "InvalidParameterValue", - "request", "2.0.0"); + "request", "2.0"); } /* clean up */ msWCSFreeParamsObj20(params); return retVal; #else /* def USE_LIBXML2 */ - msSetError(MS_WCSERR, "WCS 2.0.0 needs mapserver to be compiled with libxml2.", + msSetError(MS_WCSERR, "WCS 2.0 needs mapserver to be compiled with libxml2.", "msWCSDispatch()"); return msWCSException(map, "mapserv", "NoApplicableCode", "1.0.0"); #endif /* def USE_LIBXML2 */ diff --git a/mapwcs.h b/mapwcs.h index 3c52d9838c..4dcb53c67a 100644 --- a/mapwcs.h +++ b/mapwcs.h @@ -163,7 +163,7 @@ typedef struct { typedef wcs20AxisObj * wcs20AxisObjPtr; typedef struct { - char *version; /* 2.0.0 */ + char *version; /* 2.0.0 v 2.0.1 */ char *request; /* GetCapabilities|DescribeCoverage|GetCoverage */ char *service; /* MUST be WCS */ char **accept_versions; /* NULL terminated list of Accepted versions */ @@ -225,10 +225,12 @@ typedef wcs20coverageMetadataObj * wcs20coverageMetadataObjPtr; #define MS_WCS_20_PROFILE_CORE "http://www.opengis.net/spec/WCS/2.0/conf/core" #define MS_WCS_20_PROFILE_KVP "http://www.opengis.net/spec/WCS_protocol-binding_get-kvp/1.0/conf/get-kvp" #define MS_WCS_20_PROFILE_POST "http://www.opengis.net/spec/WCS_protocol-binding_post-xml/1.0/conf/post-xml" -#define MS_WCS_20_PROFILE_GEOTIFF "http://www.opengis.net/spec/WCS_encoding_geotiff/1.0/conf/geotiff" -#define MS_WCS_20_PROFILE_GML_GEOTIFF "http://www.placeholder.com/GML_and_GeoTIFF" +#define MS_WCS_20_PROFILE_GML "http://www.opengis.net/spec/GMLCOV/1.0/conf/gml-coverage" +#define MS_WCS_20_PROFILE_GML_MULTIPART "http://www.opengis.net/spec/GMLCOV/1.0/conf/multipart" +#define MS_WCS_20_PROFILE_GML_SPECIAL "http://www.opengis.net/spec/GMLCOV/1.0/conf/special-format" +#define MS_WCS_20_PROFILE_GML_GEOTIFF "http://www.opengis.net/spec/GMLCOV_geotiff-coverages/1.0/conf/geotiff-coverage" +#define MS_WCS_20_PROFILE_GEOTIFF "http://www.opengis.net/spec/WCS_geotiff-coverages/1.0/conf/geotiff-coverage" #define MS_WCS_20_PROFILE_CRS "http://www.opengis.net/spec/WCS_service-model_crs-predefined/1.0/conf/crs-predefined" -#define MS_WCS_20_PROFILE_IMAGECRS "http://www.placeholder.com/IMAGECRS" #define MS_WCS_20_PROFILE_SCALING "http://www.opengis.net/spec/WCS_service-model_scaling+interpolation/1.0/conf/scaling+interpolation" #define MS_WCS_20_PROFILE_RANGESUBSET "http://www.opengis.net/spec/WCS_service-model_band-subsetting/1.0/conf/band-subsetting" diff --git a/mapwcs20.c b/mapwcs20.c index 910d554809..9b6ce10e1f 100644 --- a/mapwcs20.c +++ b/mapwcs20.c @@ -1577,9 +1577,9 @@ static int msWCSWriteDocument20(mapObj* map, xmlDocPtr psDoc) } if (encoding) - msIO_setHeader("Content-type","text/xml; charset=%s", encoding); + msIO_setHeader("Content-type","application/gml+xml; charset=%s", encoding); else - msIO_setHeader("Content-type","text/xml"); + msIO_setHeader("Content-type","application/gml+xml"); msIO_sendHeaders(); context = msIO_getHandler(stdout); @@ -1672,7 +1672,7 @@ static int msWCSWriteFile20(mapObj* map, imageObj* image, wcs20ParamsObjPtr para if( fo_filename != NULL ) msIO_fprintf( stdout, "Content-ID: coverage/%s\n" - "Content-Disposition: attachment; filename=%s%c%c", + "Content-Disposition: INLINE; filename=%s%c%c", fo_filename, fo_filename, 10, 10 ); @@ -1689,7 +1689,7 @@ static int msWCSWriteFile20(mapObj* map, imageObj* image, wcs20ParamsObjPtr para if( fo_filename != NULL ) { msIO_setHeader("Content-ID","coverage/%s",fo_filename); - msIO_setHeader("Content-Disposition","attachment; filename=%s",fo_filename); + msIO_setHeader("Content-Disposition","INLINE; filename=%s",fo_filename); } else { msIO_setHeader("Content-ID","coverage/wcs.%s",MS_IMAGE_EXTENSION(map->outputformat)); msIO_setHeader("Content-Disposition","INLINE"); @@ -1768,7 +1768,7 @@ static int msWCSWriteFile20(mapObj* map, imageObj* image, wcs20ParamsObjPtr para "Content-Description: coverage data\n" "Content-Transfer-Encoding: binary\n" "Content-ID: coverage/%s\n" - "Content-Disposition: attachment; filename=%s%c%c", + "Content-Disposition: INLINE; filename=%s%c%c", mimetype, all_files[i], all_files[i], @@ -1778,7 +1778,7 @@ static int msWCSWriteFile20(mapObj* map, imageObj* image, wcs20ParamsObjPtr para msIO_setHeader("Content-Description","coverage data"); msIO_setHeader("Content-Transfer-Encoding","binary"); msIO_setHeader("Content-ID","coverage/%s",all_files[i]); - msIO_setHeader("Content-Disposition","attachment; filename=%s",all_files[i]); + msIO_setHeader("Content-Disposition","INLINE; filename=%s",all_files[i]); msIO_sendHeaders(); } @@ -2449,10 +2449,12 @@ static int msWCSGetCapabilities20_CreateProfiles( MS_WCS_20_PROFILE_CORE, NULL, MS_WCS_20_PROFILE_KVP, NULL, MS_WCS_20_PROFILE_POST, NULL, - MS_WCS_20_PROFILE_CRS, NULL, - MS_WCS_20_PROFILE_IMAGECRS, NULL, + MS_WCS_20_PROFILE_GML, NULL, + MS_WCS_20_PROFILE_GML_MULTIPART, NULL, + MS_WCS_20_PROFILE_GML_SPECIAL, NULL, + MS_WCS_20_PROFILE_GML_GEOTIFF, "image/tiff", MS_WCS_20_PROFILE_GEOTIFF, "image/tiff", - MS_WCS_20_PROFILE_GML_GEOTIFF, NULL, + MS_WCS_20_PROFILE_CRS, NULL, MS_WCS_20_PROFILE_SCALING, NULL, MS_WCS_20_PROFILE_RANGESUBSET, NULL, NULL, NULL /* guardian */ @@ -2805,8 +2807,8 @@ static int msWCSDescribeCoverage20_CoverageDescription(mapObj *map, /* -------------------------------------------------------------------- */ /* SupportedCRS */ /* -------------------------------------------------------------------- */ - - { + /* for now, WCS 2.0 does not allow per coverage CRS definitions */ + /*{ xmlNodePtr psSupportedCrss; char *owned_value; @@ -2832,7 +2834,7 @@ static int msWCSDescribeCoverage20_CoverageDescription(mapObj *map, BAD_CAST "NativeCRS", BAD_CAST cm.srs_uri); msFree(owned_value); - } + }*/ /* -------------------------------------------------------------------- */ /* SupportedFormats */ @@ -3501,7 +3503,7 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p wcs20coverageMetadataObj tmpCm; char *srs_uri, *default_filename; const char *filename; - char *file_ref; + char *file_ref, *role; int length = 0, swapAxes; /* Create Document */ @@ -3554,13 +3556,23 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p default_filename = msStringConcatenate(default_filename, MS_IMAGE_EXTENSION(image->format)); filename = msGetOutputFormatOption(image->format, "FILENAME", default_filename); - length = strlen("coverage/") + strlen(filename) + 1; + length = strlen("cid:coverage/") + strlen(filename) + 1; file_ref = msSmallMalloc(length); - strlcpy(file_ref, "coverage/", length); + strlcpy(file_ref, "cid:coverage/", length); strlcat(file_ref, filename, length); + if(EQUAL(MS_IMAGE_MIME_TYPE(map->outputformat), "image/tiff")) { + length = strlen(MS_WCS_20_PROFILE_GML_GEOTIFF) + 1; + role = msSmallMalloc(length); + strlcpy(role, MS_WCS_20_PROFILE_GML_GEOTIFF, length); + } else { + length = strlen(MS_IMAGE_MIME_TYPE(map->outputformat)) + 1; + role = msSmallMalloc(length); + strlcpy(role, MS_IMAGE_MIME_TYPE(map->outputformat), length); + } + xmlNewNsProp(psRangeParameters, psXLinkNs, BAD_CAST "href", BAD_CAST file_ref); - xmlNewNsProp(psRangeParameters, psXLinkNs, BAD_CAST "role", BAD_CAST MS_IMAGE_MIME_TYPE(map->outputformat)); + xmlNewNsProp(psRangeParameters, psXLinkNs, BAD_CAST "role", BAD_CAST role); xmlNewNsProp(psRangeParameters, psXLinkNs, BAD_CAST "arcrole", BAD_CAST "fileReference"); xmlNewChild(psFile, psGmlNs, BAD_CAST "fileReference", BAD_CAST file_ref); @@ -3577,11 +3589,11 @@ this request. Check wcs/ows_enable_request settings.", "msWCSGetCoverage20()", p msWCSWriteFile20(map, image, params, 1); msFree(file_ref); + msFree(role); xmlFreeDoc(psDoc); xmlCleanupParser(); - } /* just print out the file without gml */ - else { + } else { msWCSWriteFile20(map, image, params, 0); }