PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ yyparse

int yyparse (   void)    wkt_yyparse

Definition at line 1770 of file lwin_wkt_parse.c.

1771{
1772 yy_state_fast_t yystate = 0;
1773 /* Number of tokens to shift before error messages enabled. */
1774 int yyerrstatus = 0;
1775
1776 /* Refer to the stacks through separate pointers, to allow yyoverflow
1777 to reallocate them elsewhere. */
1778
1779 /* Their size. */
1780 YYPTRDIFF_T yystacksize = YYINITDEPTH;
1781
1782 /* The state stack: array, bottom, top. */
1783 yy_state_t yyssa[YYINITDEPTH];
1784 yy_state_t *yyss = yyssa;
1785 yy_state_t *yyssp = yyss;
1786
1787 /* The semantic value stack: array, bottom, top. */
1788 YYSTYPE yyvsa[YYINITDEPTH];
1789 YYSTYPE *yyvs = yyvsa;
1790 YYSTYPE *yyvsp = yyvs;
1791
1792 /* The location stack: array, bottom, top. */
1793 YYLTYPE yylsa[YYINITDEPTH];
1794 YYLTYPE *yyls = yylsa;
1795 YYLTYPE *yylsp = yyls;
1796
1797 int yyn;
1798 /* The return value of yyparse. */
1799 int yyresult;
1800 /* Lookahead symbol kind. */
1802 /* The variables used to return semantic value and location from the
1803 action routines. */
1804 YYSTYPE yyval;
1805 YYLTYPE yyloc;
1806
1807 /* The locations where the error started and ended. */
1808 YYLTYPE yyerror_range[3];
1809
1810 /* Buffer for error messages, and its allocated size. */
1811 char yymsgbuf[128];
1812 char *yymsg = yymsgbuf;
1813 YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
1814
1815#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
1816
1817 /* The number of symbols on the RHS of the reduced rule.
1818 Keep to zero when no symbol should be popped. */
1819 int yylen = 0;
1820
1821 YYDPRINTF ((stderr, "Starting parse\n"));
1822
1823 yychar = YYEMPTY; /* Cause a token to be read. */
1824
1825 yylsp[0] = yylloc;
1826 goto yysetstate;
1827
1828
1829/*------------------------------------------------------------.
1830| yynewstate -- push a new state, which is found in yystate. |
1831`------------------------------------------------------------*/
1832yynewstate:
1833 /* In all cases, when you get here, the value and location stacks
1834 have just been pushed. So pushing a state here evens the stacks. */
1835 yyssp++;
1836
1837
1838/*--------------------------------------------------------------------.
1839| yysetstate -- set current state (the top of the stack) to yystate. |
1840`--------------------------------------------------------------------*/
1841yysetstate:
1842 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1843 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
1845 *yyssp = YY_CAST (yy_state_t, yystate);
1847 YY_STACK_PRINT (yyss, yyssp);
1848
1849 if (yyss + yystacksize - 1 <= yyssp)
1850#if !defined yyoverflow && !defined YYSTACK_RELOCATE
1851 YYNOMEM;
1852#else
1853 {
1854 /* Get the current used size of the three stacks, in elements. */
1855 YYPTRDIFF_T yysize = yyssp - yyss + 1;
1856
1857# if defined yyoverflow
1858 {
1859 /* Give user a chance to reallocate the stack. Use copies of
1860 these so that the &'s don't force the real ones into
1861 memory. */
1862 yy_state_t *yyss1 = yyss;
1863 YYSTYPE *yyvs1 = yyvs;
1864 YYLTYPE *yyls1 = yyls;
1865
1866 /* Each stack pointer address is followed by the size of the
1867 data in use in that stack, in bytes. This used to be a
1868 conditional around just the two extra args, but that might
1869 be undefined if yyoverflow is a macro. */
1870 yyoverflow (YY_("memory exhausted"),
1871 &yyss1, yysize * YYSIZEOF (*yyssp),
1872 &yyvs1, yysize * YYSIZEOF (*yyvsp),
1873 &yyls1, yysize * YYSIZEOF (*yylsp),
1874 &yystacksize);
1875 yyss = yyss1;
1876 yyvs = yyvs1;
1877 yyls = yyls1;
1878 }
1879# else /* defined YYSTACK_RELOCATE */
1880 /* Extend the stack our own way. */
1881 if (YYMAXDEPTH <= yystacksize)
1882 YYNOMEM;
1883 yystacksize *= 2;
1884 if (YYMAXDEPTH < yystacksize)
1885 yystacksize = YYMAXDEPTH;
1886
1887 {
1888 yy_state_t *yyss1 = yyss;
1889 union yyalloc *yyptr =
1890 YY_CAST (union yyalloc *,
1891 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
1892 if (! yyptr)
1893 YYNOMEM;
1894 YYSTACK_RELOCATE (yyss_alloc, yyss);
1895 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1896 YYSTACK_RELOCATE (yyls_alloc, yyls);
1897# undef YYSTACK_RELOCATE
1898 if (yyss1 != yyssa)
1899 YYSTACK_FREE (yyss1);
1900 }
1901# endif
1902
1903 yyssp = yyss + yysize - 1;
1904 yyvsp = yyvs + yysize - 1;
1905 yylsp = yyls + yysize - 1;
1906
1908 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
1909 YY_CAST (long, yystacksize)));
1911
1912 if (yyss + yystacksize - 1 <= yyssp)
1913 YYABORT;
1914 }
1915#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
1916
1917
1918 if (yystate == YYFINAL)
1919 YYACCEPT;
1920
1921 goto yybackup;
1922
1923
1924/*-----------.
1925| yybackup. |
1926`-----------*/
1927yybackup:
1928 /* Do appropriate processing given the current state. Read a
1929 lookahead token if we need one and don't already have one. */
1930
1931 /* First try to decide what to do without reference to lookahead token. */
1932 yyn = yypact[yystate];
1933 if (yypact_value_is_default (yyn))
1934 goto yydefault;
1935
1936 /* Not known => get a lookahead token if don't already have one. */
1937
1938 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
1939 if (yychar == YYEMPTY)
1940 {
1941 YYDPRINTF ((stderr, "Reading a token\n"));
1942 yychar = yylex ();
1943 }
1944
1945 if (yychar <= YYEOF)
1946 {
1947 yychar = YYEOF;
1948 yytoken = YYSYMBOL_YYEOF;
1949 YYDPRINTF ((stderr, "Now at end of input.\n"));
1950 }
1951 else if (yychar == YYerror)
1952 {
1953 /* The scanner already issued an error message, process directly
1954 to error recovery. But do not keep the error token as
1955 lookahead, it is too special and may lead us to an endless
1956 loop in error recovery. */
1957 yychar = YYUNDEF;
1958 yytoken = YYSYMBOL_YYerror;
1959 yyerror_range[1] = yylloc;
1960 goto yyerrlab1;
1961 }
1962 else
1963 {
1964 yytoken = YYTRANSLATE (yychar);
1965 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1966 }
1967
1968 /* If the proper action on seeing token YYTOKEN is to reduce or to
1969 detect an error, take that action. */
1970 yyn += yytoken;
1971 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1972 goto yydefault;
1973 yyn = yytable[yyn];
1974 if (yyn <= 0)
1975 {
1976 if (yytable_value_is_error (yyn))
1977 goto yyerrlab;
1978 yyn = -yyn;
1979 goto yyreduce;
1980 }
1981
1982 /* Count tokens shifted since error; after three, turn off error
1983 status. */
1984 if (yyerrstatus)
1985 yyerrstatus--;
1986
1987 /* Shift the lookahead token. */
1988 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1989 yystate = yyn;
1991 *++yyvsp = yylval;
1993 *++yylsp = yylloc;
1994
1995 /* Discard the shifted token. */
1996 yychar = YYEMPTY;
1997 goto yynewstate;
1998
1999
2000/*-----------------------------------------------------------.
2001| yydefault -- do the default action for the current state. |
2002`-----------------------------------------------------------*/
2003yydefault:
2004 yyn = yydefact[yystate];
2005 if (yyn == 0)
2006 goto yyerrlab;
2007 goto yyreduce;
2008
2009
2010/*-----------------------------.
2011| yyreduce -- do a reduction. |
2012`-----------------------------*/
2013yyreduce:
2014 /* yyn is the number of a rule to reduce with. */
2015 yylen = yyr2[yyn];
2016
2017 /* If YYLEN is nonzero, implement the default value of the action:
2018 '$$ = $1'.
2019
2020 Otherwise, the following line sets YYVAL to garbage.
2021 This behavior is undocumented and Bison
2022 users should not rely upon it. Assigning to YYVAL
2023 unconditionally makes the parser a bit smaller, and it avoids a
2024 GCC warning that YYVAL may be used uninitialized. */
2025 yyval = yyvsp[1-yylen];
2026
2027 /* Default location. */
2028 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
2029 yyerror_range[1] = yyloc;
2030 YY_REDUCE_PRINT (yyn);
2031 switch (yyn)
2032 {
2033 case 2: /* geometry: geometry_no_srid */
2034#line 218 "lwin_wkt_parse.y"
2035 { wkt_parser_geometry_new((yyvsp[0].geometryvalue), SRID_UNKNOWN); WKT_ERROR(); }
2036#line 2037 "lwin_wkt_parse.c"
2037 break;
2038
2039 case 3: /* geometry: SRID_TOK SEMICOLON_TOK geometry_no_srid */
2040#line 220 "lwin_wkt_parse.y"
2041 { wkt_parser_geometry_new((yyvsp[0].geometryvalue), (yyvsp[-2].integervalue)); WKT_ERROR(); }
2042#line 2043 "lwin_wkt_parse.c"
2043 break;
2044
2045 case 4: /* geometry_no_srid: point */
2046#line 223 "lwin_wkt_parse.y"
2047 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2048#line 2049 "lwin_wkt_parse.c"
2049 break;
2050
2051 case 5: /* geometry_no_srid: linestring */
2052#line 224 "lwin_wkt_parse.y"
2053 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2054#line 2055 "lwin_wkt_parse.c"
2055 break;
2056
2057 case 6: /* geometry_no_srid: circularstring */
2058#line 225 "lwin_wkt_parse.y"
2059 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2060#line 2061 "lwin_wkt_parse.c"
2061 break;
2062
2063 case 7: /* geometry_no_srid: compoundcurve */
2064#line 226 "lwin_wkt_parse.y"
2065 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2066#line 2067 "lwin_wkt_parse.c"
2067 break;
2068
2069 case 8: /* geometry_no_srid: polygon */
2070#line 227 "lwin_wkt_parse.y"
2071 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2072#line 2073 "lwin_wkt_parse.c"
2073 break;
2074
2075 case 9: /* geometry_no_srid: curvepolygon */
2076#line 228 "lwin_wkt_parse.y"
2077 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2078#line 2079 "lwin_wkt_parse.c"
2079 break;
2080
2081 case 10: /* geometry_no_srid: multipoint */
2082#line 229 "lwin_wkt_parse.y"
2083 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2084#line 2085 "lwin_wkt_parse.c"
2085 break;
2086
2087 case 11: /* geometry_no_srid: multilinestring */
2088#line 230 "lwin_wkt_parse.y"
2089 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2090#line 2091 "lwin_wkt_parse.c"
2091 break;
2092
2093 case 12: /* geometry_no_srid: multipolygon */
2094#line 231 "lwin_wkt_parse.y"
2095 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2096#line 2097 "lwin_wkt_parse.c"
2097 break;
2098
2099 case 13: /* geometry_no_srid: multisurface */
2100#line 232 "lwin_wkt_parse.y"
2101 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2102#line 2103 "lwin_wkt_parse.c"
2103 break;
2104
2105 case 14: /* geometry_no_srid: multicurve */
2106#line 233 "lwin_wkt_parse.y"
2107 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2108#line 2109 "lwin_wkt_parse.c"
2109 break;
2110
2111 case 15: /* geometry_no_srid: tin */
2112#line 234 "lwin_wkt_parse.y"
2113 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2114#line 2115 "lwin_wkt_parse.c"
2115 break;
2116
2117 case 16: /* geometry_no_srid: polyhedralsurface */
2118#line 235 "lwin_wkt_parse.y"
2119 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2120#line 2121 "lwin_wkt_parse.c"
2121 break;
2122
2123 case 17: /* geometry_no_srid: triangle */
2124#line 236 "lwin_wkt_parse.y"
2125 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2126#line 2127 "lwin_wkt_parse.c"
2127 break;
2128
2129 case 18: /* geometry_no_srid: geometrycollection */
2130#line 237 "lwin_wkt_parse.y"
2131 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2132#line 2133 "lwin_wkt_parse.c"
2133 break;
2134
2135 case 19: /* geometrycollection: COLLECTION_TOK LBRACKET_TOK geometry_list RBRACKET_TOK */
2136#line 241 "lwin_wkt_parse.y"
2137 { (yyval.geometryvalue) = wkt_parser_collection_finalize(COLLECTIONTYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2138#line 2139 "lwin_wkt_parse.c"
2139 break;
2140
2141 case 20: /* geometrycollection: COLLECTION_TOK DIMENSIONALITY_TOK LBRACKET_TOK geometry_list RBRACKET_TOK */
2142#line 243 "lwin_wkt_parse.y"
2143 { (yyval.geometryvalue) = wkt_parser_collection_finalize(COLLECTIONTYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2144#line 2145 "lwin_wkt_parse.c"
2145 break;
2146
2147 case 21: /* geometrycollection: COLLECTION_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2148#line 245 "lwin_wkt_parse.y"
2149 { (yyval.geometryvalue) = wkt_parser_collection_finalize(COLLECTIONTYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2150#line 2151 "lwin_wkt_parse.c"
2151 break;
2152
2153 case 22: /* geometrycollection: COLLECTION_TOK EMPTY_TOK */
2154#line 247 "lwin_wkt_parse.y"
2156#line 2157 "lwin_wkt_parse.c"
2157 break;
2158
2159 case 23: /* geometry_list: geometry_list COMMA_TOK geometry_no_srid */
2160#line 251 "lwin_wkt_parse.y"
2161 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2162#line 2163 "lwin_wkt_parse.c"
2163 break;
2164
2165 case 24: /* geometry_list: geometry_no_srid */
2166#line 253 "lwin_wkt_parse.y"
2167 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2168#line 2169 "lwin_wkt_parse.c"
2169 break;
2170
2171 case 25: /* multisurface: MSURFACE_TOK LBRACKET_TOK surface_list RBRACKET_TOK */
2172#line 257 "lwin_wkt_parse.y"
2173 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTISURFACETYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2174#line 2175 "lwin_wkt_parse.c"
2175 break;
2176
2177 case 26: /* multisurface: MSURFACE_TOK DIMENSIONALITY_TOK LBRACKET_TOK surface_list RBRACKET_TOK */
2178#line 259 "lwin_wkt_parse.y"
2179 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTISURFACETYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2180#line 2181 "lwin_wkt_parse.c"
2181 break;
2182
2183 case 27: /* multisurface: MSURFACE_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2184#line 261 "lwin_wkt_parse.y"
2185 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTISURFACETYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2186#line 2187 "lwin_wkt_parse.c"
2187 break;
2188
2189 case 28: /* multisurface: MSURFACE_TOK EMPTY_TOK */
2190#line 263 "lwin_wkt_parse.y"
2192#line 2193 "lwin_wkt_parse.c"
2193 break;
2194
2195 case 29: /* surface_list: surface_list COMMA_TOK polygon */
2196#line 267 "lwin_wkt_parse.y"
2197 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2198#line 2199 "lwin_wkt_parse.c"
2199 break;
2200
2201 case 30: /* surface_list: surface_list COMMA_TOK curvepolygon */
2202#line 269 "lwin_wkt_parse.y"
2203 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2204#line 2205 "lwin_wkt_parse.c"
2205 break;
2206
2207 case 31: /* surface_list: surface_list COMMA_TOK polygon_untagged */
2208#line 271 "lwin_wkt_parse.y"
2209 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2210#line 2211 "lwin_wkt_parse.c"
2211 break;
2212
2213 case 32: /* surface_list: polygon */
2214#line 273 "lwin_wkt_parse.y"
2215 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2216#line 2217 "lwin_wkt_parse.c"
2217 break;
2218
2219 case 33: /* surface_list: curvepolygon */
2220#line 275 "lwin_wkt_parse.y"
2221 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2222#line 2223 "lwin_wkt_parse.c"
2223 break;
2224
2225 case 34: /* surface_list: polygon_untagged */
2226#line 277 "lwin_wkt_parse.y"
2227 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2228#line 2229 "lwin_wkt_parse.c"
2229 break;
2230
2231 case 35: /* tin: TIN_TOK LBRACKET_TOK triangle_list RBRACKET_TOK */
2232#line 281 "lwin_wkt_parse.y"
2233 { (yyval.geometryvalue) = wkt_parser_collection_finalize(TINTYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2234#line 2235 "lwin_wkt_parse.c"
2235 break;
2236
2237 case 36: /* tin: TIN_TOK DIMENSIONALITY_TOK LBRACKET_TOK triangle_list RBRACKET_TOK */
2238#line 283 "lwin_wkt_parse.y"
2239 { (yyval.geometryvalue) = wkt_parser_collection_finalize(TINTYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2240#line 2241 "lwin_wkt_parse.c"
2241 break;
2242
2243 case 37: /* tin: TIN_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2244#line 285 "lwin_wkt_parse.y"
2245 { (yyval.geometryvalue) = wkt_parser_collection_finalize(TINTYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2246#line 2247 "lwin_wkt_parse.c"
2247 break;
2248
2249 case 38: /* tin: TIN_TOK EMPTY_TOK */
2250#line 287 "lwin_wkt_parse.y"
2251 { (yyval.geometryvalue) = wkt_parser_collection_finalize(TINTYPE, NULL, NULL); WKT_ERROR(); }
2252#line 2253 "lwin_wkt_parse.c"
2253 break;
2254
2255 case 39: /* polyhedralsurface: POLYHEDRALSURFACE_TOK LBRACKET_TOK patch_list RBRACKET_TOK */
2256#line 291 "lwin_wkt_parse.y"
2257 { (yyval.geometryvalue) = wkt_parser_collection_finalize(POLYHEDRALSURFACETYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2258#line 2259 "lwin_wkt_parse.c"
2259 break;
2260
2261 case 40: /* polyhedralsurface: POLYHEDRALSURFACE_TOK DIMENSIONALITY_TOK LBRACKET_TOK patch_list RBRACKET_TOK */
2262#line 293 "lwin_wkt_parse.y"
2263 { (yyval.geometryvalue) = wkt_parser_collection_finalize(POLYHEDRALSURFACETYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2264#line 2265 "lwin_wkt_parse.c"
2265 break;
2266
2267 case 41: /* polyhedralsurface: POLYHEDRALSURFACE_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2268#line 295 "lwin_wkt_parse.y"
2269 { (yyval.geometryvalue) = wkt_parser_collection_finalize(POLYHEDRALSURFACETYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2270#line 2271 "lwin_wkt_parse.c"
2271 break;
2272
2273 case 42: /* polyhedralsurface: POLYHEDRALSURFACE_TOK EMPTY_TOK */
2274#line 297 "lwin_wkt_parse.y"
2276#line 2277 "lwin_wkt_parse.c"
2277 break;
2278
2279 case 43: /* multipolygon: MPOLYGON_TOK LBRACKET_TOK polygon_list RBRACKET_TOK */
2280#line 301 "lwin_wkt_parse.y"
2281 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOLYGONTYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2282#line 2283 "lwin_wkt_parse.c"
2283 break;
2284
2285 case 44: /* multipolygon: MPOLYGON_TOK DIMENSIONALITY_TOK LBRACKET_TOK polygon_list RBRACKET_TOK */
2286#line 303 "lwin_wkt_parse.y"
2287 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOLYGONTYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2288#line 2289 "lwin_wkt_parse.c"
2289 break;
2290
2291 case 45: /* multipolygon: MPOLYGON_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2292#line 305 "lwin_wkt_parse.y"
2293 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOLYGONTYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2294#line 2295 "lwin_wkt_parse.c"
2295 break;
2296
2297 case 46: /* multipolygon: MPOLYGON_TOK EMPTY_TOK */
2298#line 307 "lwin_wkt_parse.y"
2300#line 2301 "lwin_wkt_parse.c"
2301 break;
2302
2303 case 47: /* polygon_list: polygon_list COMMA_TOK polygon_untagged */
2304#line 311 "lwin_wkt_parse.y"
2305 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2306#line 2307 "lwin_wkt_parse.c"
2307 break;
2308
2309 case 48: /* polygon_list: polygon_untagged */
2310#line 313 "lwin_wkt_parse.y"
2311 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2312#line 2313 "lwin_wkt_parse.c"
2313 break;
2314
2315 case 49: /* patch_list: patch_list COMMA_TOK patch */
2316#line 317 "lwin_wkt_parse.y"
2317 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2318#line 2319 "lwin_wkt_parse.c"
2319 break;
2320
2321 case 50: /* patch_list: patch */
2322#line 319 "lwin_wkt_parse.y"
2323 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2324#line 2325 "lwin_wkt_parse.c"
2325 break;
2326
2327 case 51: /* polygon: POLYGON_TOK LBRACKET_TOK ring_list RBRACKET_TOK */
2328#line 323 "lwin_wkt_parse.y"
2329 { (yyval.geometryvalue) = wkt_parser_polygon_finalize((yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2330#line 2331 "lwin_wkt_parse.c"
2331 break;
2332
2333 case 52: /* polygon: POLYGON_TOK DIMENSIONALITY_TOK LBRACKET_TOK ring_list RBRACKET_TOK */
2334#line 325 "lwin_wkt_parse.y"
2335 { (yyval.geometryvalue) = wkt_parser_polygon_finalize((yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2336#line 2337 "lwin_wkt_parse.c"
2337 break;
2338
2339 case 53: /* polygon: POLYGON_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2340#line 327 "lwin_wkt_parse.y"
2341 { (yyval.geometryvalue) = wkt_parser_polygon_finalize(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2342#line 2343 "lwin_wkt_parse.c"
2343 break;
2344
2345 case 54: /* polygon: POLYGON_TOK EMPTY_TOK */
2346#line 329 "lwin_wkt_parse.y"
2347 { (yyval.geometryvalue) = wkt_parser_polygon_finalize(NULL, NULL); WKT_ERROR(); }
2348#line 2349 "lwin_wkt_parse.c"
2349 break;
2350
2351 case 55: /* polygon_untagged: LBRACKET_TOK ring_list RBRACKET_TOK */
2352#line 333 "lwin_wkt_parse.y"
2353 { (yyval.geometryvalue) = (yyvsp[-1].geometryvalue); }
2354#line 2355 "lwin_wkt_parse.c"
2355 break;
2356
2357 case 56: /* polygon_untagged: EMPTY_TOK */
2358#line 335 "lwin_wkt_parse.y"
2359 { (yyval.geometryvalue) = wkt_parser_polygon_finalize(NULL, NULL); WKT_ERROR(); }
2360#line 2361 "lwin_wkt_parse.c"
2361 break;
2362
2363 case 57: /* patch: LBRACKET_TOK patchring_list RBRACKET_TOK */
2364#line 338 "lwin_wkt_parse.y"
2365 { (yyval.geometryvalue) = (yyvsp[-1].geometryvalue); }
2366#line 2367 "lwin_wkt_parse.c"
2367 break;
2368
2369 case 58: /* curvepolygon: CURVEPOLYGON_TOK LBRACKET_TOK curvering_list RBRACKET_TOK */
2370#line 342 "lwin_wkt_parse.y"
2371 { (yyval.geometryvalue) = wkt_parser_curvepolygon_finalize((yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2372#line 2373 "lwin_wkt_parse.c"
2373 break;
2374
2375 case 59: /* curvepolygon: CURVEPOLYGON_TOK DIMENSIONALITY_TOK LBRACKET_TOK curvering_list RBRACKET_TOK */
2376#line 344 "lwin_wkt_parse.y"
2377 { (yyval.geometryvalue) = wkt_parser_curvepolygon_finalize((yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2378#line 2379 "lwin_wkt_parse.c"
2379 break;
2380
2381 case 60: /* curvepolygon: CURVEPOLYGON_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2382#line 346 "lwin_wkt_parse.y"
2383 { (yyval.geometryvalue) = wkt_parser_curvepolygon_finalize(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2384#line 2385 "lwin_wkt_parse.c"
2385 break;
2386
2387 case 61: /* curvepolygon: CURVEPOLYGON_TOK EMPTY_TOK */
2388#line 348 "lwin_wkt_parse.y"
2389 { (yyval.geometryvalue) = wkt_parser_curvepolygon_finalize(NULL, NULL); WKT_ERROR(); }
2390#line 2391 "lwin_wkt_parse.c"
2391 break;
2392
2393 case 62: /* curvering_list: curvering_list COMMA_TOK curvering */
2394#line 352 "lwin_wkt_parse.y"
2395 { (yyval.geometryvalue) = wkt_parser_curvepolygon_add_ring((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2396#line 2397 "lwin_wkt_parse.c"
2397 break;
2398
2399 case 63: /* curvering_list: curvering */
2400#line 354 "lwin_wkt_parse.y"
2401 { (yyval.geometryvalue) = wkt_parser_curvepolygon_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2402#line 2403 "lwin_wkt_parse.c"
2403 break;
2404
2405 case 64: /* curvering: linestring_untagged */
2406#line 357 "lwin_wkt_parse.y"
2407 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2408#line 2409 "lwin_wkt_parse.c"
2409 break;
2410
2411 case 65: /* curvering: linestring */
2412#line 358 "lwin_wkt_parse.y"
2413 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2414#line 2415 "lwin_wkt_parse.c"
2415 break;
2416
2417 case 66: /* curvering: compoundcurve */
2418#line 359 "lwin_wkt_parse.y"
2419 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2420#line 2421 "lwin_wkt_parse.c"
2421 break;
2422
2423 case 67: /* curvering: circularstring */
2424#line 360 "lwin_wkt_parse.y"
2425 { (yyval.geometryvalue) = (yyvsp[0].geometryvalue); }
2426#line 2427 "lwin_wkt_parse.c"
2427 break;
2428
2429 case 68: /* patchring_list: patchring_list COMMA_TOK patchring */
2430#line 364 "lwin_wkt_parse.y"
2431 { (yyval.geometryvalue) = wkt_parser_polygon_add_ring((yyvsp[-2].geometryvalue),(yyvsp[0].ptarrayvalue),'Z'); WKT_ERROR(); }
2432#line 2433 "lwin_wkt_parse.c"
2433 break;
2434
2435 case 69: /* patchring_list: patchring */
2436#line 366 "lwin_wkt_parse.y"
2437 { (yyval.geometryvalue) = wkt_parser_polygon_new((yyvsp[0].ptarrayvalue),'Z'); WKT_ERROR(); }
2438#line 2439 "lwin_wkt_parse.c"
2439 break;
2440
2441 case 70: /* ring_list: ring_list COMMA_TOK ring */
2442#line 370 "lwin_wkt_parse.y"
2443 { (yyval.geometryvalue) = wkt_parser_polygon_add_ring((yyvsp[-2].geometryvalue),(yyvsp[0].ptarrayvalue),'2'); WKT_ERROR(); }
2444#line 2445 "lwin_wkt_parse.c"
2445 break;
2446
2447 case 71: /* ring_list: ring */
2448#line 372 "lwin_wkt_parse.y"
2449 { (yyval.geometryvalue) = wkt_parser_polygon_new((yyvsp[0].ptarrayvalue),'2'); WKT_ERROR(); }
2450#line 2451 "lwin_wkt_parse.c"
2451 break;
2452
2453 case 72: /* patchring: LBRACKET_TOK ptarray RBRACKET_TOK */
2454#line 375 "lwin_wkt_parse.y"
2455 { (yyval.ptarrayvalue) = (yyvsp[-1].ptarrayvalue); }
2456#line 2457 "lwin_wkt_parse.c"
2457 break;
2458
2459 case 73: /* ring: LBRACKET_TOK ptarray RBRACKET_TOK */
2460#line 378 "lwin_wkt_parse.y"
2461 { (yyval.ptarrayvalue) = (yyvsp[-1].ptarrayvalue); }
2462#line 2463 "lwin_wkt_parse.c"
2463 break;
2464
2465 case 74: /* compoundcurve: COMPOUNDCURVE_TOK LBRACKET_TOK compound_list RBRACKET_TOK */
2466#line 382 "lwin_wkt_parse.y"
2467 { (yyval.geometryvalue) = wkt_parser_compound_finalize((yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2468#line 2469 "lwin_wkt_parse.c"
2469 break;
2470
2471 case 75: /* compoundcurve: COMPOUNDCURVE_TOK DIMENSIONALITY_TOK LBRACKET_TOK compound_list RBRACKET_TOK */
2472#line 384 "lwin_wkt_parse.y"
2473 { (yyval.geometryvalue) = wkt_parser_compound_finalize((yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2474#line 2475 "lwin_wkt_parse.c"
2475 break;
2476
2477 case 76: /* compoundcurve: COMPOUNDCURVE_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2478#line 386 "lwin_wkt_parse.y"
2479 { (yyval.geometryvalue) = wkt_parser_compound_finalize(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2480#line 2481 "lwin_wkt_parse.c"
2481 break;
2482
2483 case 77: /* compoundcurve: COMPOUNDCURVE_TOK EMPTY_TOK */
2484#line 388 "lwin_wkt_parse.y"
2485 { (yyval.geometryvalue) = wkt_parser_compound_finalize(NULL, NULL); WKT_ERROR(); }
2486#line 2487 "lwin_wkt_parse.c"
2487 break;
2488
2489 case 78: /* compound_list: compound_list COMMA_TOK circularstring */
2490#line 392 "lwin_wkt_parse.y"
2491 { (yyval.geometryvalue) = wkt_parser_compound_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2492#line 2493 "lwin_wkt_parse.c"
2493 break;
2494
2495 case 79: /* compound_list: compound_list COMMA_TOK linestring */
2496#line 394 "lwin_wkt_parse.y"
2497 { (yyval.geometryvalue) = wkt_parser_compound_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2498#line 2499 "lwin_wkt_parse.c"
2499 break;
2500
2501 case 80: /* compound_list: compound_list COMMA_TOK linestring_untagged */
2502#line 396 "lwin_wkt_parse.y"
2503 { (yyval.geometryvalue) = wkt_parser_compound_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2504#line 2505 "lwin_wkt_parse.c"
2505 break;
2506
2507 case 81: /* compound_list: circularstring */
2508#line 398 "lwin_wkt_parse.y"
2509 { (yyval.geometryvalue) = wkt_parser_compound_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2510#line 2511 "lwin_wkt_parse.c"
2511 break;
2512
2513 case 82: /* compound_list: linestring */
2514#line 400 "lwin_wkt_parse.y"
2515 { (yyval.geometryvalue) = wkt_parser_compound_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2516#line 2517 "lwin_wkt_parse.c"
2517 break;
2518
2519 case 83: /* compound_list: linestring_untagged */
2520#line 402 "lwin_wkt_parse.y"
2521 { (yyval.geometryvalue) = wkt_parser_compound_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2522#line 2523 "lwin_wkt_parse.c"
2523 break;
2524
2525 case 84: /* multicurve: MCURVE_TOK LBRACKET_TOK curve_list RBRACKET_TOK */
2526#line 406 "lwin_wkt_parse.y"
2527 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTICURVETYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2528#line 2529 "lwin_wkt_parse.c"
2529 break;
2530
2531 case 85: /* multicurve: MCURVE_TOK DIMENSIONALITY_TOK LBRACKET_TOK curve_list RBRACKET_TOK */
2532#line 408 "lwin_wkt_parse.y"
2533 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTICURVETYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2534#line 2535 "lwin_wkt_parse.c"
2535 break;
2536
2537 case 86: /* multicurve: MCURVE_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2538#line 410 "lwin_wkt_parse.y"
2539 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTICURVETYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2540#line 2541 "lwin_wkt_parse.c"
2541 break;
2542
2543 case 87: /* multicurve: MCURVE_TOK EMPTY_TOK */
2544#line 412 "lwin_wkt_parse.y"
2546#line 2547 "lwin_wkt_parse.c"
2547 break;
2548
2549 case 88: /* curve_list: curve_list COMMA_TOK circularstring */
2550#line 416 "lwin_wkt_parse.y"
2551 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2552#line 2553 "lwin_wkt_parse.c"
2553 break;
2554
2555 case 89: /* curve_list: curve_list COMMA_TOK compoundcurve */
2556#line 418 "lwin_wkt_parse.y"
2557 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2558#line 2559 "lwin_wkt_parse.c"
2559 break;
2560
2561 case 90: /* curve_list: curve_list COMMA_TOK linestring */
2562#line 420 "lwin_wkt_parse.y"
2563 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2564#line 2565 "lwin_wkt_parse.c"
2565 break;
2566
2567 case 91: /* curve_list: curve_list COMMA_TOK linestring_untagged */
2568#line 422 "lwin_wkt_parse.y"
2569 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2570#line 2571 "lwin_wkt_parse.c"
2571 break;
2572
2573 case 92: /* curve_list: circularstring */
2574#line 424 "lwin_wkt_parse.y"
2575 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2576#line 2577 "lwin_wkt_parse.c"
2577 break;
2578
2579 case 93: /* curve_list: compoundcurve */
2580#line 426 "lwin_wkt_parse.y"
2581 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2582#line 2583 "lwin_wkt_parse.c"
2583 break;
2584
2585 case 94: /* curve_list: linestring */
2586#line 428 "lwin_wkt_parse.y"
2587 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2588#line 2589 "lwin_wkt_parse.c"
2589 break;
2590
2591 case 95: /* curve_list: linestring_untagged */
2592#line 430 "lwin_wkt_parse.y"
2593 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2594#line 2595 "lwin_wkt_parse.c"
2595 break;
2596
2597 case 96: /* multilinestring: MLINESTRING_TOK LBRACKET_TOK linestring_list RBRACKET_TOK */
2598#line 434 "lwin_wkt_parse.y"
2599 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTILINETYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2600#line 2601 "lwin_wkt_parse.c"
2601 break;
2602
2603 case 97: /* multilinestring: MLINESTRING_TOK DIMENSIONALITY_TOK LBRACKET_TOK linestring_list RBRACKET_TOK */
2604#line 436 "lwin_wkt_parse.y"
2605 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTILINETYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2606#line 2607 "lwin_wkt_parse.c"
2607 break;
2608
2609 case 98: /* multilinestring: MLINESTRING_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2610#line 438 "lwin_wkt_parse.y"
2611 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTILINETYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2612#line 2613 "lwin_wkt_parse.c"
2613 break;
2614
2615 case 99: /* multilinestring: MLINESTRING_TOK EMPTY_TOK */
2616#line 440 "lwin_wkt_parse.y"
2618#line 2619 "lwin_wkt_parse.c"
2619 break;
2620
2621 case 100: /* linestring_list: linestring_list COMMA_TOK linestring_untagged */
2622#line 444 "lwin_wkt_parse.y"
2623 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2624#line 2625 "lwin_wkt_parse.c"
2625 break;
2626
2627 case 101: /* linestring_list: linestring_untagged */
2628#line 446 "lwin_wkt_parse.y"
2629 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2630#line 2631 "lwin_wkt_parse.c"
2631 break;
2632
2633 case 102: /* circularstring: CIRCULARSTRING_TOK LBRACKET_TOK ptarray RBRACKET_TOK */
2634#line 450 "lwin_wkt_parse.y"
2635 { (yyval.geometryvalue) = wkt_parser_circularstring_new((yyvsp[-1].ptarrayvalue), NULL); WKT_ERROR(); }
2636#line 2637 "lwin_wkt_parse.c"
2637 break;
2638
2639 case 103: /* circularstring: CIRCULARSTRING_TOK DIMENSIONALITY_TOK LBRACKET_TOK ptarray RBRACKET_TOK */
2640#line 452 "lwin_wkt_parse.y"
2641 { (yyval.geometryvalue) = wkt_parser_circularstring_new((yyvsp[-1].ptarrayvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2642#line 2643 "lwin_wkt_parse.c"
2643 break;
2644
2645 case 104: /* circularstring: CIRCULARSTRING_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2646#line 454 "lwin_wkt_parse.y"
2647 { (yyval.geometryvalue) = wkt_parser_circularstring_new(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2648#line 2649 "lwin_wkt_parse.c"
2649 break;
2650
2651 case 105: /* circularstring: CIRCULARSTRING_TOK EMPTY_TOK */
2652#line 456 "lwin_wkt_parse.y"
2653 { (yyval.geometryvalue) = wkt_parser_circularstring_new(NULL, NULL); WKT_ERROR(); }
2654#line 2655 "lwin_wkt_parse.c"
2655 break;
2656
2657 case 106: /* linestring: LINESTRING_TOK LBRACKET_TOK ptarray RBRACKET_TOK */
2658#line 460 "lwin_wkt_parse.y"
2659 { (yyval.geometryvalue) = wkt_parser_linestring_new((yyvsp[-1].ptarrayvalue), NULL); WKT_ERROR(); }
2660#line 2661 "lwin_wkt_parse.c"
2661 break;
2662
2663 case 107: /* linestring: LINESTRING_TOK DIMENSIONALITY_TOK LBRACKET_TOK ptarray RBRACKET_TOK */
2664#line 462 "lwin_wkt_parse.y"
2665 { (yyval.geometryvalue) = wkt_parser_linestring_new((yyvsp[-1].ptarrayvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2666#line 2667 "lwin_wkt_parse.c"
2667 break;
2668
2669 case 108: /* linestring: LINESTRING_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2670#line 464 "lwin_wkt_parse.y"
2671 { (yyval.geometryvalue) = wkt_parser_linestring_new(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2672#line 2673 "lwin_wkt_parse.c"
2673 break;
2674
2675 case 109: /* linestring: LINESTRING_TOK EMPTY_TOK */
2676#line 466 "lwin_wkt_parse.y"
2677 { (yyval.geometryvalue) = wkt_parser_linestring_new(NULL, NULL); WKT_ERROR(); }
2678#line 2679 "lwin_wkt_parse.c"
2679 break;
2680
2681 case 110: /* linestring_untagged: LBRACKET_TOK ptarray RBRACKET_TOK */
2682#line 470 "lwin_wkt_parse.y"
2683 { (yyval.geometryvalue) = wkt_parser_linestring_new((yyvsp[-1].ptarrayvalue), NULL); WKT_ERROR(); }
2684#line 2685 "lwin_wkt_parse.c"
2685 break;
2686
2687 case 111: /* linestring_untagged: EMPTY_TOK */
2688#line 472 "lwin_wkt_parse.y"
2689 { (yyval.geometryvalue) = wkt_parser_linestring_new(NULL, NULL); WKT_ERROR(); }
2690#line 2691 "lwin_wkt_parse.c"
2691 break;
2692
2693 case 112: /* triangle_list: triangle_list COMMA_TOK triangle_untagged */
2694#line 476 "lwin_wkt_parse.y"
2695 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2696#line 2697 "lwin_wkt_parse.c"
2697 break;
2698
2699 case 113: /* triangle_list: triangle_untagged */
2700#line 478 "lwin_wkt_parse.y"
2701 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2702#line 2703 "lwin_wkt_parse.c"
2703 break;
2704
2705 case 114: /* triangle: TRIANGLE_TOK LBRACKET_TOK LBRACKET_TOK ptarray RBRACKET_TOK RBRACKET_TOK */
2706#line 482 "lwin_wkt_parse.y"
2707 { (yyval.geometryvalue) = wkt_parser_triangle_new((yyvsp[-2].ptarrayvalue), NULL); WKT_ERROR(); }
2708#line 2709 "lwin_wkt_parse.c"
2709 break;
2710
2711 case 115: /* triangle: TRIANGLE_TOK DIMENSIONALITY_TOK LBRACKET_TOK LBRACKET_TOK ptarray RBRACKET_TOK RBRACKET_TOK */
2712#line 484 "lwin_wkt_parse.y"
2713 { (yyval.geometryvalue) = wkt_parser_triangle_new((yyvsp[-2].ptarrayvalue), (yyvsp[-5].stringvalue)); WKT_ERROR(); }
2714#line 2715 "lwin_wkt_parse.c"
2715 break;
2716
2717 case 116: /* triangle: TRIANGLE_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2718#line 486 "lwin_wkt_parse.y"
2719 { (yyval.geometryvalue) = wkt_parser_triangle_new(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2720#line 2721 "lwin_wkt_parse.c"
2721 break;
2722
2723 case 117: /* triangle: TRIANGLE_TOK EMPTY_TOK */
2724#line 488 "lwin_wkt_parse.y"
2725 { (yyval.geometryvalue) = wkt_parser_triangle_new(NULL, NULL); WKT_ERROR(); }
2726#line 2727 "lwin_wkt_parse.c"
2727 break;
2728
2729 case 118: /* triangle_untagged: LBRACKET_TOK LBRACKET_TOK ptarray RBRACKET_TOK RBRACKET_TOK */
2730#line 492 "lwin_wkt_parse.y"
2731 { (yyval.geometryvalue) = wkt_parser_triangle_new((yyvsp[-2].ptarrayvalue), NULL); WKT_ERROR(); }
2732#line 2733 "lwin_wkt_parse.c"
2733 break;
2734
2735 case 119: /* multipoint: MPOINT_TOK LBRACKET_TOK point_list RBRACKET_TOK */
2736#line 496 "lwin_wkt_parse.y"
2737 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOINTTYPE, (yyvsp[-1].geometryvalue), NULL); WKT_ERROR(); }
2738#line 2739 "lwin_wkt_parse.c"
2739 break;
2740
2741 case 120: /* multipoint: MPOINT_TOK DIMENSIONALITY_TOK LBRACKET_TOK point_list RBRACKET_TOK */
2742#line 498 "lwin_wkt_parse.y"
2743 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOINTTYPE, (yyvsp[-1].geometryvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2744#line 2745 "lwin_wkt_parse.c"
2745 break;
2746
2747 case 121: /* multipoint: MPOINT_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2748#line 500 "lwin_wkt_parse.y"
2749 { (yyval.geometryvalue) = wkt_parser_collection_finalize(MULTIPOINTTYPE, NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2750#line 2751 "lwin_wkt_parse.c"
2751 break;
2752
2753 case 122: /* multipoint: MPOINT_TOK EMPTY_TOK */
2754#line 502 "lwin_wkt_parse.y"
2756#line 2757 "lwin_wkt_parse.c"
2757 break;
2758
2759 case 123: /* point_list: point_list COMMA_TOK point_untagged */
2760#line 506 "lwin_wkt_parse.y"
2761 { (yyval.geometryvalue) = wkt_parser_collection_add_geom((yyvsp[-2].geometryvalue),(yyvsp[0].geometryvalue)); WKT_ERROR(); }
2762#line 2763 "lwin_wkt_parse.c"
2763 break;
2764
2765 case 124: /* point_list: point_untagged */
2766#line 508 "lwin_wkt_parse.y"
2767 { (yyval.geometryvalue) = wkt_parser_collection_new((yyvsp[0].geometryvalue)); WKT_ERROR(); }
2768#line 2769 "lwin_wkt_parse.c"
2769 break;
2770
2771 case 125: /* point_untagged: coordinate */
2772#line 512 "lwin_wkt_parse.y"
2773 { (yyval.geometryvalue) = wkt_parser_point_new(wkt_parser_ptarray_new((yyvsp[0].coordinatevalue)),NULL); WKT_ERROR(); }
2774#line 2775 "lwin_wkt_parse.c"
2775 break;
2776
2777 case 126: /* point_untagged: LBRACKET_TOK coordinate RBRACKET_TOK */
2778#line 514 "lwin_wkt_parse.y"
2779 { (yyval.geometryvalue) = wkt_parser_point_new(wkt_parser_ptarray_new((yyvsp[-1].coordinatevalue)),NULL); WKT_ERROR(); }
2780#line 2781 "lwin_wkt_parse.c"
2781 break;
2782
2783 case 127: /* point_untagged: EMPTY_TOK */
2784#line 516 "lwin_wkt_parse.y"
2785 { (yyval.geometryvalue) = wkt_parser_point_new(NULL, NULL); WKT_ERROR(); }
2786#line 2787 "lwin_wkt_parse.c"
2787 break;
2788
2789 case 128: /* point: POINT_TOK LBRACKET_TOK ptarray RBRACKET_TOK */
2790#line 520 "lwin_wkt_parse.y"
2791 { (yyval.geometryvalue) = wkt_parser_point_new((yyvsp[-1].ptarrayvalue), NULL); WKT_ERROR(); }
2792#line 2793 "lwin_wkt_parse.c"
2793 break;
2794
2795 case 129: /* point: POINT_TOK DIMENSIONALITY_TOK LBRACKET_TOK ptarray RBRACKET_TOK */
2796#line 522 "lwin_wkt_parse.y"
2797 { (yyval.geometryvalue) = wkt_parser_point_new((yyvsp[-1].ptarrayvalue), (yyvsp[-3].stringvalue)); WKT_ERROR(); }
2798#line 2799 "lwin_wkt_parse.c"
2799 break;
2800
2801 case 130: /* point: POINT_TOK DIMENSIONALITY_TOK EMPTY_TOK */
2802#line 524 "lwin_wkt_parse.y"
2803 { (yyval.geometryvalue) = wkt_parser_point_new(NULL, (yyvsp[-1].stringvalue)); WKT_ERROR(); }
2804#line 2805 "lwin_wkt_parse.c"
2805 break;
2806
2807 case 131: /* point: POINT_TOK EMPTY_TOK */
2808#line 526 "lwin_wkt_parse.y"
2809 { (yyval.geometryvalue) = wkt_parser_point_new(NULL,NULL); WKT_ERROR(); }
2810#line 2811 "lwin_wkt_parse.c"
2811 break;
2812
2813 case 132: /* ptarray: ptarray COMMA_TOK coordinate */
2814#line 530 "lwin_wkt_parse.y"
2815 { (yyval.ptarrayvalue) = wkt_parser_ptarray_add_coord((yyvsp[-2].ptarrayvalue), (yyvsp[0].coordinatevalue)); WKT_ERROR(); }
2816#line 2817 "lwin_wkt_parse.c"
2817 break;
2818
2819 case 133: /* ptarray: coordinate */
2820#line 532 "lwin_wkt_parse.y"
2821 { (yyval.ptarrayvalue) = wkt_parser_ptarray_new((yyvsp[0].coordinatevalue)); WKT_ERROR(); }
2822#line 2823 "lwin_wkt_parse.c"
2823 break;
2824
2825 case 134: /* coordinate: DOUBLE_TOK DOUBLE_TOK */
2826#line 536 "lwin_wkt_parse.y"
2827 { (yyval.coordinatevalue) = wkt_parser_coord_2((yyvsp[-1].doublevalue), (yyvsp[0].doublevalue)); WKT_ERROR(); }
2828#line 2829 "lwin_wkt_parse.c"
2829 break;
2830
2831 case 135: /* coordinate: DOUBLE_TOK DOUBLE_TOK DOUBLE_TOK */
2832#line 538 "lwin_wkt_parse.y"
2833 { (yyval.coordinatevalue) = wkt_parser_coord_3((yyvsp[-2].doublevalue), (yyvsp[-1].doublevalue), (yyvsp[0].doublevalue)); WKT_ERROR(); }
2834#line 2835 "lwin_wkt_parse.c"
2835 break;
2836
2837 case 136: /* coordinate: DOUBLE_TOK DOUBLE_TOK DOUBLE_TOK DOUBLE_TOK */
2838#line 540 "lwin_wkt_parse.y"
2839 { (yyval.coordinatevalue) = wkt_parser_coord_4((yyvsp[-3].doublevalue), (yyvsp[-2].doublevalue), (yyvsp[-1].doublevalue), (yyvsp[0].doublevalue)); WKT_ERROR(); }
2840#line 2841 "lwin_wkt_parse.c"
2841 break;
2842
2843
2844#line 2845 "lwin_wkt_parse.c"
2845
2846 default: break;
2847 }
2848 /* User semantic actions sometimes alter yychar, and that requires
2849 that yytoken be updated with the new translation. We take the
2850 approach of translating immediately before every use of yytoken.
2851 One alternative is translating here after every semantic action,
2852 but that translation would be missed if the semantic action invokes
2853 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
2854 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
2855 incorrect destructor might then be invoked immediately. In the
2856 case of YYERROR or YYBACKUP, subsequent parser actions might lead
2857 to an incorrect destructor call or verbose syntax error message
2858 before the lookahead is translated. */
2859 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
2860
2861 YYPOPSTACK (yylen);
2862 yylen = 0;
2863
2864 *++yyvsp = yyval;
2865 *++yylsp = yyloc;
2866
2867 /* Now 'shift' the result of the reduction. Determine what state
2868 that goes to, based on the state we popped back to and the rule
2869 number reduced by. */
2870 {
2871 const int yylhs = yyr1[yyn] - YYNTOKENS;
2872 const int yyi = yypgoto[yylhs] + *yyssp;
2873 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
2874 ? yytable[yyi]
2875 : yydefgoto[yylhs]);
2876 }
2877
2878 goto yynewstate;
2879
2880
2881/*--------------------------------------.
2882| yyerrlab -- here on detecting error. |
2883`--------------------------------------*/
2884yyerrlab:
2885 /* Make sure we have latest lookahead translation. See comments at
2886 user semantic actions for why this is necessary. */
2888 /* If not already recovering from an error, report this error. */
2889 if (!yyerrstatus)
2890 {
2891 ++yynerrs;
2892 {
2893 yypcontext_t yyctx
2894 = {yyssp, yytoken, &yylloc};
2895 char const *yymsgp = YY_("syntax error");
2896 int yysyntax_error_status;
2897 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
2898 if (yysyntax_error_status == 0)
2899 yymsgp = yymsg;
2900 else if (yysyntax_error_status == -1)
2901 {
2902 if (yymsg != yymsgbuf)
2903 YYSTACK_FREE (yymsg);
2904 yymsg = YY_CAST (char *,
2905 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
2906 if (yymsg)
2907 {
2908 yysyntax_error_status
2909 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
2910 yymsgp = yymsg;
2911 }
2912 else
2913 {
2914 yymsg = yymsgbuf;
2915 yymsg_alloc = sizeof yymsgbuf;
2916 yysyntax_error_status = YYENOMEM;
2917 }
2918 }
2919 yyerror (yymsgp);
2920 if (yysyntax_error_status == YYENOMEM)
2921 YYNOMEM;
2922 }
2923 }
2924
2925 yyerror_range[1] = yylloc;
2926 if (yyerrstatus == 3)
2927 {
2928 /* If just tried and failed to reuse lookahead token after an
2929 error, discard it. */
2930
2931 if (yychar <= YYEOF)
2932 {
2933 /* Return failure if at end of input. */
2934 if (yychar == YYEOF)
2935 YYABORT;
2936 }
2937 else
2938 {
2939 yydestruct ("Error: discarding",
2940 yytoken, &yylval, &yylloc);
2941 yychar = YYEMPTY;
2942 }
2943 }
2944
2945 /* Else will try to reuse lookahead token after shifting the error
2946 token. */
2947 goto yyerrlab1;
2948
2949
2950/*---------------------------------------------------.
2951| yyerrorlab -- error raised explicitly by YYERROR. |
2952`---------------------------------------------------*/
2953yyerrorlab:
2954 /* Pacify compilers when the user code never invokes YYERROR and the
2955 label yyerrorlab therefore never appears in user code. */
2956 if (0)
2957 YYERROR;
2958 ++yynerrs;
2959
2960 /* Do not reclaim the symbols of the rule whose action triggered
2961 this YYERROR. */
2962 YYPOPSTACK (yylen);
2963 yylen = 0;
2964 YY_STACK_PRINT (yyss, yyssp);
2965 yystate = *yyssp;
2966 goto yyerrlab1;
2967
2968
2969/*-------------------------------------------------------------.
2970| yyerrlab1 -- common code for both syntax error and YYERROR. |
2971`-------------------------------------------------------------*/
2972yyerrlab1:
2973 yyerrstatus = 3; /* Each real token shifted decrements this. */
2974
2975 /* Pop stack until we find a state that shifts the error token. */
2976 for (;;)
2977 {
2978 yyn = yypact[yystate];
2979 if (!yypact_value_is_default (yyn))
2980 {
2981 yyn += YYSYMBOL_YYerror;
2982 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
2983 {
2984 yyn = yytable[yyn];
2985 if (0 < yyn)
2986 break;
2987 }
2988 }
2989
2990 /* Pop the current state because it cannot handle the error token. */
2991 if (yyssp == yyss)
2992 YYABORT;
2993
2994 yyerror_range[1] = *yylsp;
2995 yydestruct ("Error: popping",
2996 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp);
2997 YYPOPSTACK (1);
2998 yystate = *yyssp;
2999 YY_STACK_PRINT (yyss, yyssp);
3000 }
3001
3003 *++yyvsp = yylval;
3005
3006 yyerror_range[2] = yylloc;
3007 ++yylsp;
3008 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
3009
3010 /* Shift the error token. */
3011 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
3012
3013 yystate = yyn;
3014 goto yynewstate;
3015
3016
3017/*-------------------------------------.
3018| yyacceptlab -- YYACCEPT comes here. |
3019`-------------------------------------*/
3020yyacceptlab:
3021 yyresult = 0;
3022 goto yyreturnlab;
3023
3024
3025/*-----------------------------------.
3026| yyabortlab -- YYABORT comes here. |
3027`-----------------------------------*/
3028yyabortlab:
3029 yyresult = 1;
3030 goto yyreturnlab;
3031
3032
3033/*-----------------------------------------------------------.
3034| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
3035`-----------------------------------------------------------*/
3036yyexhaustedlab:
3037 yyerror (YY_("memory exhausted"));
3038 yyresult = 2;
3039 goto yyreturnlab;
3040
3041
3042/*----------------------------------------------------------.
3043| yyreturnlab -- parsing is finished, clean up and return. |
3044`----------------------------------------------------------*/
3045yyreturnlab:
3046 if (yychar != YYEMPTY)
3047 {
3048 /* Make sure we have latest lookahead translation. See comments at
3049 user semantic actions for why this is necessary. */
3050 yytoken = YYTRANSLATE (yychar);
3051 yydestruct ("Cleanup: discarding lookahead",
3052 yytoken, &yylval, &yylloc);
3053 }
3054 /* Do not reclaim the symbols of the rule whose action triggered
3055 this YYABORT or YYACCEPT. */
3056 YYPOPSTACK (yylen);
3057 YY_STACK_PRINT (yyss, yyssp);
3058 while (yyssp != yyss)
3059 {
3060 yydestruct ("Cleanup: popping",
3061 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp);
3062 YYPOPSTACK (1);
3063 }
3064#ifndef yyoverflow
3065 if (yyss != yyssa)
3066 YYSTACK_FREE (yyss);
3067#endif
3068 if (yymsg != yymsgbuf)
3069 YYSTACK_FREE (yymsg);
3070 return yyresult;
3071}
#define COLLECTIONTYPE
Definition liblwgeom.h:108
#define MULTILINETYPE
Definition liblwgeom.h:106
#define MULTISURFACETYPE
Definition liblwgeom.h:113
#define MULTIPOINTTYPE
Definition liblwgeom.h:105
#define TINTYPE
Definition liblwgeom.h:116
#define MULTIPOLYGONTYPE
Definition liblwgeom.h:107
#define POLYHEDRALSURFACETYPE
Definition liblwgeom.h:114
#define MULTICURVETYPE
Definition liblwgeom.h:112
#define SRID_UNKNOWN
Unknown SRID value.
Definition liblwgeom.h:215
LWGEOM * wkt_parser_compound_finalize(LWGEOM *compound, char *dimensionality)
Definition lwin_wkt.c:791
POINTARRAY * wkt_parser_ptarray_add_coord(POINTARRAY *pa, POINT p)
Definition lwin_wkt.c:265
LWGEOM * wkt_parser_polygon_add_ring(LWGEOM *poly, POINTARRAY *pa, char dimcheck)
Definition lwin_wkt.c:485
LWGEOM * wkt_parser_curvepolygon_finalize(LWGEOM *poly, char *dimensionality)
Definition lwin_wkt.c:666
LWGEOM * wkt_parser_collection_finalize(int lwtype, LWGEOM *geom, char *dimensionality)
Definition lwin_wkt.c:840
LWGEOM * wkt_parser_collection_add_geom(LWGEOM *col, LWGEOM *geom)
Definition lwin_wkt.c:826
LWGEOM * wkt_parser_triangle_new(POINTARRAY *pa, char *dimensionality)
Definition lwin_wkt.c:424
POINTARRAY * wkt_parser_ptarray_new(POINT p)
Start a point array from the first coordinate.
Definition lwin_wkt.c:303
POINT wkt_parser_coord_2(double c1, double c2)
Build a 2d coordinate.
Definition lwin_wkt.c:221
POINT wkt_parser_coord_4(double c1, double c2, double c3, double c4)
Definition lwin_wkt.c:252
LWGEOM * wkt_parser_compound_new(LWGEOM *geom)
Definition lwin_wkt.c:724
LWGEOM * wkt_parser_polygon_finalize(LWGEOM *poly, char *dimensionality)
Definition lwin_wkt.c:535
LWGEOM * wkt_parser_compound_add_geom(LWGEOM *col, LWGEOM *geom)
Definition lwin_wkt.c:759
LWGEOM * wkt_parser_circularstring_new(POINTARRAY *pa, char *dimensionality)
Create a new circularstring.
Definition lwin_wkt.c:388
POINT wkt_parser_coord_3(double c1, double c2, double c3)
Note, if this is an XYM coordinate we'll have to fix it later when we build the object itself and hav...
Definition lwin_wkt.c:237
LWGEOM * wkt_parser_curvepolygon_add_ring(LWGEOM *poly, LWGEOM *ring)
Definition lwin_wkt.c:585
LWGEOM * wkt_parser_collection_new(LWGEOM *geom)
Definition lwin_wkt.c:698
LWGEOM * wkt_parser_curvepolygon_new(LWGEOM *ring)
Definition lwin_wkt.c:567
LWGEOM * wkt_parser_linestring_new(POINTARRAY *pa, char *dimensionality)
Create a new linestring.
Definition lwin_wkt.c:354
LWGEOM * wkt_parser_point_new(POINTARRAY *pa, char *dimensionality)
Create a new point.
Definition lwin_wkt.c:320
LWGEOM * wkt_parser_polygon_new(POINTARRAY *pa, char dimcheck)
Definition lwin_wkt.c:460
void wkt_parser_geometry_new(LWGEOM *geom, int32_t srid)
Definition lwin_wkt.c:895
#define yylloc
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
#define YYMAXDEPTH
#define YYSTACK_FREE
yysymbol_kind_t
@ YYSYMBOL_YYerror
@ YYSYMBOL_YYEOF
@ YYSYMBOL_YYEMPTY
#define YY_ASSERT(E)
#define YY_(Msgid)
#define WKT_ERROR()
#define YYNOMEM
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
#define YYNSTATES
#define YY_IGNORE_USELESS_CAST_END
#define yychar
#define YYABORT
#define YYSTACK_BYTES(N)
yytype_int16 yy_state_t
#define YYLLOC_DEFAULT(Current, Rhs, N)
static void yydestruct(const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
#define YY_REDUCE_PRINT(Rule)
#define YY_CAST(Type, Val)
static const yytype_int16 yypact[]
#define yylex
static const yytype_uint8 yydefgoto[]
#define YYFINAL
#define YY_ACCESSING_SYMBOL(State)
Accessing symbol of state STATE.
#define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
static const yytype_int16 yypgoto[]
#define yylval
#define YYNTOKENS
#define YY_STACK_PRINT(Bottom, Top)
#define YYSIZE_T
#define YY_IGNORE_USELESS_CAST_BEGIN
static const yytype_int8 yyr2[]
#define YYPTRDIFF_T
#define yynerrs
static const yytype_int16 yytable[]
#define YYACCEPT
#define yytable_value_is_error(Yyn)
#define YYTRANSLATE(YYX)
static const yytype_int8 yyr1[]
#define YYPOPSTACK(N)
int yy_state_fast_t
@ YYENOMEM
#define YYLAST
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
#define yypact_value_is_default(Yyn)
#define YYINITDEPTH
#define YYERROR
#define YYSIZEOF(X)
#define YYSTACK_ALLOC
#define YYDPRINTF(Args)
static const yytype_uint8 yydefact[]
static const yytype_uint8 yycheck[]
#define yyerror
static int yysyntax_error(YYPTRDIFF_T *yymsg_alloc, char **yymsg, const yypcontext_t *yyctx)
@ YYEOF
@ YYerror
@ YYEMPTY
@ YYUNDEF
POINTARRAY * ptarrayvalue
LWGEOM * geometryvalue
POINT coordinatevalue