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);
}