From: Paul Ramsey Date: Mon, 27 Apr 2015 17:07:55 +0000 (+0000) Subject: #2587, CompoundCurve with empties parses differently from WKB and WKT X-Git-Tag: 2.2.0rc1~544 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d4f379957096da49d6056d007209ae0d080db8c8;p=postgis #2587, CompoundCurve with empties parses differently from WKB and WKT git-svn-id: http://svn.osgeo.org/postgis/trunk@13452 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/liblwgeom/lwin_wkt.c b/liblwgeom/lwin_wkt.c index ee325030b..e5e50a1a0 100644 --- a/liblwgeom/lwin_wkt.c +++ b/liblwgeom/lwin_wkt.c @@ -707,6 +707,41 @@ LWGEOM* wkt_parser_collection_new(LWGEOM *geom) } +LWGEOM* wkt_parser_compound_new(LWGEOM *geom) +{ + LWCOLLECTION *col; + LWGEOM **geoms; + static int ngeoms = 1; + LWDEBUG(4,"entered"); + + /* Toss error on null geometry input */ + if( ! geom ) + { + SET_PARSER_ERROR(PARSER_ERROR_OTHER); + return NULL; + } + + /* Elements of a compoundcurve cannot be empty, because */ + /* empty things can't join up and form a ring */ + if ( lwgeom_is_empty(geom) ) + { + lwgeom_free(geom); + SET_PARSER_ERROR(PARSER_ERROR_INCONTINUOUS); + return NULL; + } + + /* Create our geometry array */ + geoms = lwalloc(sizeof(LWGEOM*) * ngeoms); + geoms[0] = geom; + + /* Make a new collection */ + col = lwcollection_construct(COLLECTIONTYPE, SRID_UNKNOWN, NULL, ngeoms, geoms); + + /* Return the result. */ + return lwcollection_as_lwgeom(col); +} + + LWGEOM* wkt_parser_compound_add_geom(LWGEOM *col, LWGEOM *geom) { LWDEBUG(4,"entered"); diff --git a/liblwgeom/lwin_wkt.h b/liblwgeom/lwin_wkt.h index febe97ddd..e60673e3c 100644 --- a/liblwgeom/lwin_wkt.h +++ b/liblwgeom/lwin_wkt.h @@ -46,6 +46,7 @@ LWGEOM* wkt_parser_polygon_finalize(LWGEOM *poly, char *dimensionality); LWGEOM* wkt_parser_curvepolygon_new(LWGEOM *ring); LWGEOM* wkt_parser_curvepolygon_add_ring(LWGEOM *poly, LWGEOM *ring); LWGEOM* wkt_parser_curvepolygon_finalize(LWGEOM *poly, char *dimensionality); +LWGEOM* wkt_parser_compound_new(LWGEOM *element); LWGEOM* wkt_parser_compound_add_geom(LWGEOM *col, LWGEOM *geom); LWGEOM* wkt_parser_collection_new(LWGEOM *geom); LWGEOM* wkt_parser_collection_add_geom(LWGEOM *col, LWGEOM *geom); diff --git a/liblwgeom/lwin_wkt_parse.c b/liblwgeom/lwin_wkt_parse.c index dde999ee1..b1815676e 100644 --- a/liblwgeom/lwin_wkt_parse.c +++ b/liblwgeom/lwin_wkt_parse.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 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 @@ -44,7 +44,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.2" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -259,7 +259,7 @@ extern int wkt_yydebug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { #line 106 "lwin_wkt_parse.y" /* yacc.c:355 */ @@ -273,6 +273,8 @@ union YYSTYPE #line 275 "lwin_wkt_parse.c" /* yacc.c:355 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif @@ -300,7 +302,7 @@ int wkt_yyparse (void); /* Copy the second part of user declarations. */ -#line 304 "lwin_wkt_parse.c" /* yacc.c:358 */ +#line 306 "lwin_wkt_parse.c" /* yacc.c:358 */ #ifdef short # undef short @@ -1383,217 +1385,217 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio case 28: /* geometry_no_srid */ #line 188 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1387 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1389 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 29: /* geometrycollection */ #line 189 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1393 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1395 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 31: /* multisurface */ #line 196 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1399 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1401 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 32: /* surface_list */ #line 175 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1405 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1407 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 33: /* tin */ #line 203 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1411 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1413 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 34: /* polyhedralsurface */ #line 202 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1417 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1419 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 35: /* multipolygon */ #line 195 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1423 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1425 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 36: /* polygon_list */ #line 176 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1429 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1431 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 37: /* patch_list */ #line 177 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1435 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1437 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 38: /* polygon */ #line 199 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1441 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1443 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 39: /* polygon_untagged */ #line 201 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1447 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1449 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 40: /* patch */ #line 200 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1453 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1455 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 41: /* curvepolygon */ #line 186 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1459 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1461 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 42: /* curvering_list */ #line 173 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1465 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1467 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 43: /* curvering */ #line 187 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1471 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1473 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 44: /* patchring_list */ #line 183 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1477 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1479 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 45: /* ring_list */ #line 182 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1483 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1485 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 46: /* patchring */ #line 172 "lwin_wkt_parse.y" /* yacc.c:1257 */ { ptarray_free(((*yyvaluep).ptarrayvalue)); } -#line 1489 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1491 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 47: /* ring */ #line 171 "lwin_wkt_parse.y" /* yacc.c:1257 */ { ptarray_free(((*yyvaluep).ptarrayvalue)); } -#line 1495 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1497 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 48: /* compoundcurve */ #line 185 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1501 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1503 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 49: /* compound_list */ #line 181 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1507 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1509 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 50: /* multicurve */ #line 192 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1513 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1515 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 51: /* curve_list */ #line 180 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1519 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1521 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 52: /* multilinestring */ #line 193 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1525 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1527 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 53: /* linestring_list */ #line 179 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1531 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1533 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 54: /* circularstring */ #line 184 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1537 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1539 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 55: /* linestring */ #line 190 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1543 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1545 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 56: /* linestring_untagged */ #line 191 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1549 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1551 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 57: /* triangle_list */ #line 174 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1555 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1557 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 58: /* triangle */ #line 204 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1561 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1563 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 59: /* triangle_untagged */ #line 205 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1567 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1569 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 60: /* multipoint */ #line 194 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1573 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1575 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 61: /* point_list */ #line 178 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1579 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1581 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 62: /* point_untagged */ #line 198 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1585 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1587 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 63: /* point */ #line 197 "lwin_wkt_parse.y" /* yacc.c:1257 */ { lwgeom_free(((*yyvaluep).geometryvalue)); } -#line 1591 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1593 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; case 64: /* ptarray */ #line 170 "lwin_wkt_parse.y" /* yacc.c:1257 */ { ptarray_free(((*yyvaluep).ptarrayvalue)); } -#line 1597 "lwin_wkt_parse.c" /* yacc.c:1257 */ +#line 1599 "lwin_wkt_parse.c" /* yacc.c:1257 */ break; @@ -1881,815 +1883,815 @@ yyreduce: case 2: #line 211 "lwin_wkt_parse.y" /* yacc.c:1646 */ { wkt_parser_geometry_new((yyvsp[0].geometryvalue), SRID_UNKNOWN); WKT_ERROR(); } -#line 1885 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1887 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 3: #line 213 "lwin_wkt_parse.y" /* yacc.c:1646 */ { wkt_parser_geometry_new((yyvsp[0].geometryvalue), (yyvsp[-2].integervalue)); WKT_ERROR(); } -#line 1891 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1893 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 4: #line 216 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1897 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1899 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 5: #line 217 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1903 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1905 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 6: #line 218 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1909 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1911 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 7: #line 219 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1915 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1917 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 8: #line 220 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1921 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1923 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 9: #line 221 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1927 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1929 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 10: #line 222 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1933 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1935 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 11: #line 223 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1939 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1941 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 12: #line 224 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1945 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1947 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 13: #line 225 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1951 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1953 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 14: #line 226 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1957 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1959 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 15: #line 227 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1963 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1965 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 16: #line 228 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1969 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1971 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 17: #line 229 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1975 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1977 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 18: #line 230 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 1981 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1983 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 19: #line 234 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(COLLECTIONTYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 1987 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1989 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 20: #line 236 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(COLLECTIONTYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 1993 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 1995 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 21: #line 238 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(COLLECTIONTYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 1999 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2001 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 22: #line 240 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(COLLECTIONTYPE, NULL, NULL); WKT_ERROR(); } -#line 2005 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2007 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 23: #line 244 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2011 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2013 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 24: #line 246 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2017 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2019 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 25: #line 250 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTISURFACETYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 2023 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2025 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 26: #line 252 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTISURFACETYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2029 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2031 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 27: #line 254 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTISURFACETYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2035 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2037 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 28: #line 256 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTISURFACETYPE, NULL, NULL); WKT_ERROR(); } -#line 2041 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2043 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 29: #line 260 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2047 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2049 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 30: #line 262 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2053 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2055 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 31: #line 264 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2059 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2061 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 32: #line 266 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2065 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2067 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 33: #line 268 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2071 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2073 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 34: #line 270 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2077 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2079 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 35: #line 274 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(TINTYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 2083 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2085 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 36: #line 276 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(TINTYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2089 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2091 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 37: #line 278 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(TINTYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2095 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2097 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 38: #line 280 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(TINTYPE, NULL, NULL); WKT_ERROR(); } -#line 2101 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2103 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 39: #line 284 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(POLYHEDRALSURFACETYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 2107 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2109 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 40: #line 286 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(POLYHEDRALSURFACETYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2113 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2115 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 41: #line 288 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(POLYHEDRALSURFACETYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2119 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2121 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 42: #line 290 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(POLYHEDRALSURFACETYPE, NULL, NULL); WKT_ERROR(); } -#line 2125 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2127 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 43: #line 294 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOLYGONTYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 2131 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2133 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 44: #line 296 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOLYGONTYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2137 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2139 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 45: #line 298 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOLYGONTYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2143 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2145 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 46: #line 300 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOLYGONTYPE, NULL, NULL); WKT_ERROR(); } -#line 2149 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2151 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 47: #line 304 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2155 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2157 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 48: #line 306 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2161 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2163 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 49: #line 310 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2167 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2169 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 50: #line 312 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2173 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2175 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 51: #line 316 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_polygon_finalize((yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 2179 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2181 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 52: #line 318 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_polygon_finalize((yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2185 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2187 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 53: #line 320 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_polygon_finalize(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2191 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2193 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 54: #line 322 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_polygon_finalize(NULL, NULL); WKT_ERROR(); } -#line 2197 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2199 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 55: #line 326 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[-1].geometryvalue); } -#line 2203 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2205 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 56: #line 328 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_polygon_finalize(NULL, NULL); WKT_ERROR(); } -#line 2209 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2211 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 57: #line 331 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[-1].geometryvalue); } -#line 2215 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2217 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 58: #line 335 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_curvepolygon_finalize((yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 2221 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2223 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 59: #line 337 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_curvepolygon_finalize((yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2227 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2229 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 60: #line 339 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_curvepolygon_finalize(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2233 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2235 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 61: #line 341 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_curvepolygon_finalize(NULL, NULL); WKT_ERROR(); } -#line 2239 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2241 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 62: #line 345 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_curvepolygon_add_ring((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2245 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2247 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 63: #line 347 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_curvepolygon_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2251 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2253 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 64: #line 350 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 2257 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2259 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 65: #line 351 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 2263 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2265 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 66: #line 352 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 2269 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2271 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 67: #line 353 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); } -#line 2275 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2277 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 68: #line 357 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_polygon_add_ring((yyvsp[-2].geometryvalue),(yyvsp[0].ptarrayvalue),'Z'); WKT_ERROR(); } -#line 2281 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2283 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 69: #line 359 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_polygon_new((yyvsp[0].ptarrayvalue),'Z'); WKT_ERROR(); } -#line 2287 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2289 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 70: #line 363 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_polygon_add_ring((yyvsp[-2].geometryvalue),(yyvsp[0].ptarrayvalue),'2'); WKT_ERROR(); } -#line 2293 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2295 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 71: #line 365 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_polygon_new((yyvsp[0].ptarrayvalue),'2'); WKT_ERROR(); } -#line 2299 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2301 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 72: #line 368 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.ptarrayvalue) = (yyvsp[-1].ptarrayvalue); } -#line 2305 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2307 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 73: #line 371 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.ptarrayvalue) = (yyvsp[-1].ptarrayvalue); } -#line 2311 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2313 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 74: #line 375 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(COMPOUNDTYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 2317 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2319 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 75: #line 377 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(COMPOUNDTYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2323 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2325 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 76: #line 379 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(COMPOUNDTYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2329 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2331 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 77: #line 381 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(COMPOUNDTYPE, NULL, NULL); WKT_ERROR(); } -#line 2335 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2337 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 78: #line 385 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_compound_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2341 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2343 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 79: #line 387 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_compound_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2347 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2349 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 80: #line 389 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_compound_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2353 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2355 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 81: #line 391 "lwin_wkt_parse.y" /* yacc.c:1646 */ - { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2359 "lwin_wkt_parse.c" /* yacc.c:1646 */ + { (yyval.geometryvalue) = wkt_parser_compound_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } +#line 2361 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 82: #line 393 "lwin_wkt_parse.y" /* yacc.c:1646 */ - { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2365 "lwin_wkt_parse.c" /* yacc.c:1646 */ + { (yyval.geometryvalue) = wkt_parser_compound_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } +#line 2367 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 83: #line 395 "lwin_wkt_parse.y" /* yacc.c:1646 */ - { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2371 "lwin_wkt_parse.c" /* yacc.c:1646 */ + { (yyval.geometryvalue) = wkt_parser_compound_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } +#line 2373 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 84: #line 399 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTICURVETYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 2377 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2379 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 85: #line 401 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTICURVETYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2383 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2385 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 86: #line 403 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTICURVETYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2389 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2391 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 87: #line 405 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTICURVETYPE, NULL, NULL); WKT_ERROR(); } -#line 2395 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2397 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 88: #line 409 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2401 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2403 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 89: #line 411 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2407 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2409 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 90: #line 413 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2413 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2415 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 91: #line 415 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2419 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2421 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 92: #line 417 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2425 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2427 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 93: #line 419 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2431 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2433 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 94: #line 421 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2437 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2439 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 95: #line 423 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2443 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2445 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 96: #line 427 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTILINETYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 2449 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2451 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 97: #line 429 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTILINETYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2455 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2457 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 98: #line 431 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTILINETYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2461 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2463 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 99: #line 433 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTILINETYPE, NULL, NULL); WKT_ERROR(); } -#line 2467 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2469 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 100: #line 437 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2473 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2475 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 101: #line 439 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2479 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2481 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 102: #line 443 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_circularstring_new((yyvsp[-1].ptarrayvalue), NULL); WKT_ERROR(); } -#line 2485 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2487 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 103: #line 445 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_circularstring_new((yyvsp[-1].ptarrayvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2491 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2493 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 104: #line 447 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_circularstring_new(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2497 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2499 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 105: #line 449 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_circularstring_new(NULL, NULL); WKT_ERROR(); } -#line 2503 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2505 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 106: #line 453 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_linestring_new((yyvsp[-1].ptarrayvalue), NULL); WKT_ERROR(); } -#line 2509 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2511 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 107: #line 455 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_linestring_new((yyvsp[-1].ptarrayvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2515 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2517 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 108: #line 457 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_linestring_new(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2521 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2523 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 109: #line 459 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_linestring_new(NULL, NULL); WKT_ERROR(); } -#line 2527 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2529 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 110: #line 463 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_linestring_new((yyvsp[-1].ptarrayvalue), NULL); WKT_ERROR(); } -#line 2533 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2535 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 111: #line 465 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_linestring_new(NULL, NULL); WKT_ERROR(); } -#line 2539 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2541 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 112: #line 469 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2545 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2547 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 113: #line 471 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2551 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2553 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 114: #line 475 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_triangle_new((yyvsp[-2].ptarrayvalue), NULL); WKT_ERROR(); } -#line 2557 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2559 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 115: #line 477 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_triangle_new((yyvsp[-2].ptarrayvalue), (yyvsp[-5].stringvalue)); WKT_ERROR(); } -#line 2563 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2565 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 116: #line 479 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_triangle_new(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2569 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2571 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 117: #line 481 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_triangle_new(NULL, NULL); WKT_ERROR(); } -#line 2575 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2577 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 118: #line 485 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_triangle_new((yyvsp[-2].ptarrayvalue), NULL); WKT_ERROR(); } -#line 2581 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2583 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 119: #line 489 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOINTTYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); } -#line 2587 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2589 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 120: #line 491 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOINTTYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2593 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2595 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 121: #line 493 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOINTTYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2599 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2601 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 122: #line 495 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOINTTYPE, NULL, NULL); WKT_ERROR(); } -#line 2605 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2607 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 123: #line 499 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2611 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2613 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 124: #line 501 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); } -#line 2617 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2619 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 125: #line 505 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_point_new(wkt_parser_ptarray_new((yyvsp[0].coordinatevalue)),NULL); WKT_ERROR(); } -#line 2623 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2625 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 126: #line 507 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_point_new(wkt_parser_ptarray_new((yyvsp[-1].coordinatevalue)),NULL); WKT_ERROR(); } -#line 2629 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2631 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 127: #line 509 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_point_new(NULL, NULL); WKT_ERROR(); } -#line 2635 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2637 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 128: #line 513 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_point_new((yyvsp[-1].ptarrayvalue), NULL); WKT_ERROR(); } -#line 2641 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2643 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 129: #line 515 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_point_new((yyvsp[-1].ptarrayvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); } -#line 2647 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2649 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 130: #line 517 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_point_new(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); } -#line 2653 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2655 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 131: #line 519 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.geometryvalue) = wkt_parser_point_new(NULL,NULL); WKT_ERROR(); } -#line 2659 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2661 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 132: #line 523 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.ptarrayvalue) = wkt_parser_ptarray_add_coord((yyvsp[-2].ptarrayvalue), (yyvsp[0].coordinatevalue)); WKT_ERROR(); } -#line 2665 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2667 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 133: #line 525 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.ptarrayvalue) = wkt_parser_ptarray_new((yyvsp[0].coordinatevalue)); WKT_ERROR(); } -#line 2671 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2673 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 134: #line 529 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.coordinatevalue) = wkt_parser_coord_2((yyvsp[-1].doublevalue), (yyvsp[0].doublevalue)); WKT_ERROR(); } -#line 2677 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2679 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 135: #line 531 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.coordinatevalue) = wkt_parser_coord_3((yyvsp[-2].doublevalue), (yyvsp[-1].doublevalue), (yyvsp[0].doublevalue)); WKT_ERROR(); } -#line 2683 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2685 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; case 136: #line 533 "lwin_wkt_parse.y" /* yacc.c:1646 */ { (yyval.coordinatevalue) = wkt_parser_coord_4((yyvsp[-3].doublevalue), (yyvsp[-2].doublevalue), (yyvsp[-1].doublevalue), (yyvsp[0].doublevalue)); WKT_ERROR(); } -#line 2689 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2691 "lwin_wkt_parse.c" /* yacc.c:1646 */ break; -#line 2693 "lwin_wkt_parse.c" /* yacc.c:1646 */ +#line 2695 "lwin_wkt_parse.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires diff --git a/liblwgeom/lwin_wkt_parse.h b/liblwgeom/lwin_wkt_parse.h index 30d9a8d93..4a001390a 100644 --- a/liblwgeom/lwin_wkt_parse.h +++ b/liblwgeom/lwin_wkt_parse.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.2. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 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 @@ -97,7 +97,7 @@ extern int wkt_yydebug; /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE YYSTYPE; + union YYSTYPE { #line 106 "lwin_wkt_parse.y" /* yacc.c:1909 */ @@ -111,6 +111,8 @@ union YYSTYPE #line 113 "lwin_wkt_parse.h" /* yacc.c:1909 */ }; + +typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif diff --git a/liblwgeom/lwin_wkt_parse.y b/liblwgeom/lwin_wkt_parse.y index 3bd1776d2..c03bbd56d 100644 --- a/liblwgeom/lwin_wkt_parse.y +++ b/liblwgeom/lwin_wkt_parse.y @@ -388,11 +388,11 @@ compound_list : compound_list COMMA_TOK linestring_untagged { $$ = wkt_parser_compound_add_geom($1,$3); WKT_ERROR(); } | circularstring - { $$ = wkt_parser_collection_new($1); WKT_ERROR(); } | + { $$ = wkt_parser_compound_new($1); WKT_ERROR(); } | linestring - { $$ = wkt_parser_collection_new($1); WKT_ERROR(); } | + { $$ = wkt_parser_compound_new($1); WKT_ERROR(); } | linestring_untagged - { $$ = wkt_parser_collection_new($1); WKT_ERROR(); } ; + { $$ = wkt_parser_compound_new($1); WKT_ERROR(); } ; multicurve : MCURVE_TOK LBRACKET_TOK curve_list RBRACKET_TOK