Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Comment: | switching to 5.0.0-RC1 |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
43a21bbb45b5e99e8c9ce2d14bd1a21a |
User & Date: | sandro 2020-08-02 14:44:07 |
2020-08-07
| ||
13:22 | supporting views_geometry_columns for Temporary Geometries check-in: aebaaa0d17 user: sandro tags: trunk | |
2020-08-02
| ||
14:44 | switching to 5.0.0-RC1 check-in: 43a21bbb45 user: sandro tags: trunk | |
2020-07-25
| ||
07:53 | removing support for raster codec CharLS check-in: 95c82fa3de user: sandro tags: trunk | |
Changes to configure.
1 2 3 4 5 6 7 8 9 10 ... 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 .... 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 .... 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 .... 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 .... 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 .... 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 ..... 17417 17418 17419 17420 17421 17422 17423 17424 17425 17426 17427 17428 17429 17430 17431 ..... 19587 19588 19589 19590 19591 19592 19593 19594 19595 19596 19597 19598 19599 19600 19601 ..... 19653 19654 19655 19656 19657 19658 19659 19660 19661 19662 19663 19664 19665 19666 19667 ..... 20207 20208 20209 20210 20211 20212 20213 20214 20215 20216 20217 20218 20219 20220 |
#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for libspatialite 5.0.0-beta1. # # Report bugs to <a.furieri@lqt.it>. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # ................................................................................ subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libspatialite' PACKAGE_TARNAME='libspatialite' PACKAGE_VERSION='5.0.0-beta1' PACKAGE_STRING='libspatialite 5.0.0-beta1' PACKAGE_BUGREPORT='a.furieri@lqt.it' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> #ifdef HAVE_SYS_TYPES_H ................................................................................ # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures libspatialite 5.0.0-beta1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. ................................................................................ --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of libspatialite 5.0.0-beta1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ................................................................................ cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF libspatialite configure 5.0.0-beta1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit ................................................................................ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libspatialite $as_me 5.0.0-beta1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { ................................................................................ CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='libspatialite' VERSION='5.0.0-beta1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF ................................................................................ LIBS="-lz $LIBS" else as_fn_error $? "'libz' is required but it doesn't seem to be installed on this system." "$LINENO" 5 fi ac_config_files="$ac_config_files Makefile src/Makefile src/headers/Makefile src/gaiaaux/Makefile src/gaiaexif/Makefile src/gaiageo/Makefile src/gaiageo/flex/Makefile src/gaiageo/lemon/Makefile src/gaiageo/lemon/lemon_src/Makefile src/geopackage/Makefile src/spatialite/Makefile src/shapefiles/Makefile src/dxf/Makefile src/md5/Makefile src/control_points/Makefile src/cutter/Makefile src/topology/Makefile src/srsinit/Makefile src/srsinit/epsg_update/Makefile src/stored_procedures/Makefile src/connection_cache/Makefile src/connection_cache/generator/Makefile src/virtualtext/Makefile src/wfs/Makefile test/Makefile test/sql_stmt_tests/Makefile test/sql_stmt_geos_tests/Makefile test/sql_stmt_geos_380/Makefile test/sql_stmt_geos_non380/Makefile test/sql_stmt_geosadvanced_tests/Makefile test/sql_stmt_geopackage_tests/Makefile test/sql_stmt_gpkg_epsg492_tests/Makefile test/sql_stmt_gpkg_epsg493_tests/Makefile test/sql_stmt_gpkg_epsg600_tests/Makefile test/sql_stmt_proj_tests/Makefile test/sql_stmt_proj492_tests/Makefile test/sql_stmt_proj493_tests/Makefile test/sql_stmt_proj600_tests/Makefile test/sql_stmt_proj600security_tests/Makefile test/sql_stmt_mathsql_tests/Makefile test/sql_stmt_rtgeom_tests/Makefile test/sql_stmt_rttopo_tests/Makefile test/sql_stmt_libxml2_tests/Makefile test/sql_stmt_security_tests/Makefile test/sql_stmt_xmlsec_tests/Makefile test/sql_stmt_freexl_tests/Makefile test/sql_stmt_cache_tests/Makefile test/sql_stmt_gpkgcache_tests/Makefile test/sql_stmt_nocache_tests/Makefile test/sql_stmt_gpkgnocache_tests/Makefile test/sql_stmt_voronoj1_tests/Makefile test/sql_stmt_voronoj2_tests/Makefile test/sql_stmt_sequence_tests/Makefile test/sql_stmt_routing_tests/Makefile test/sql_stmt_logfile_tests/Makefile test/sql_stmt_iconv_tests/Makefile test/sql_stmt_proc_tests/Makefile test/sql_stmt_point_geom/Makefile test/sql_stmt_tiny_point/Makefile test/sql_stmt_postgres_tests/Makefile test/sql_stmt_geos370_tests/Makefile test/sql_stmt_renamenew_tests/Makefile test/sql_stmt_renameold_tests/Makefile test/sql_stmt_bufoptsnew_tests/Makefile test/sql_stmt_bufoptsold_tests/Makefile test/sql_stmt_minizip/Makefile test/sql_stmt_zip_proj6/Makefile examples/Makefile Doxyfile spatialite.pc" # exporting the TARGET_CPU string splite_cpu=`$CC -dumpmachine` cat >>confdefs.h <<_ACEOF #define TARGET_CPU "$splite_cpu" _ACEOF ................................................................................ test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by libspatialite $as_me 5.0.0-beta1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ ................................................................................ Report bugs to <a.furieri@lqt.it>." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ libspatialite config.status 5.0.0-beta1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ................................................................................ "test/sql_stmt_proj493_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_proj493_tests/Makefile" ;; "test/sql_stmt_proj600_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_proj600_tests/Makefile" ;; "test/sql_stmt_proj600security_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_proj600security_tests/Makefile" ;; "test/sql_stmt_mathsql_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_mathsql_tests/Makefile" ;; "test/sql_stmt_rtgeom_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_rtgeom_tests/Makefile" ;; "test/sql_stmt_rttopo_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_rttopo_tests/Makefile" ;; "test/sql_stmt_libxml2_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_libxml2_tests/Makefile" ;; "test/sql_stmt_security_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_security_tests/Makefile" ;; "test/sql_stmt_xmlsec_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_xmlsec_tests/Makefile" ;; "test/sql_stmt_freexl_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_freexl_tests/Makefile" ;; "test/sql_stmt_cache_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_cache_tests/Makefile" ;; "test/sql_stmt_gpkgcache_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_gpkgcache_tests/Makefile" ;; "test/sql_stmt_nocache_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_nocache_tests/Makefile" ;; "test/sql_stmt_gpkgnocache_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_gpkgnocache_tests/Makefile" ;; |
| | | | | | | | | | | > |
1 2 3 4 5 6 7 8 9 10 ... 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 .... 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 .... 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 .... 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 .... 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 .... 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 ..... 17417 17418 17419 17420 17421 17422 17423 17424 17425 17426 17427 17428 17429 17430 17431 ..... 19587 19588 19589 19590 19591 19592 19593 19594 19595 19596 19597 19598 19599 19600 19601 ..... 19653 19654 19655 19656 19657 19658 19659 19660 19661 19662 19663 19664 19665 19666 19667 ..... 20207 20208 20209 20210 20211 20212 20213 20214 20215 20216 20217 20218 20219 20220 20221 |
#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for libspatialite 5.0.0-RC1. # # Report bugs to <a.furieri@lqt.it>. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # ................................................................................ subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='libspatialite' PACKAGE_TARNAME='libspatialite' PACKAGE_VERSION='5.0.0-RC1' PACKAGE_STRING='libspatialite 5.0.0-RC1' PACKAGE_BUGREPORT='a.furieri@lqt.it' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include <stdio.h> #ifdef HAVE_SYS_TYPES_H ................................................................................ # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures libspatialite 5.0.0-RC1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. ................................................................................ --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of libspatialite 5.0.0-RC1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] ................................................................................ cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF libspatialite configure 5.0.0-RC1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit ................................................................................ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by libspatialite $as_me 5.0.0-RC1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { ................................................................................ CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='libspatialite' VERSION='5.0.0-RC1' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF ................................................................................ LIBS="-lz $LIBS" else as_fn_error $? "'libz' is required but it doesn't seem to be installed on this system." "$LINENO" 5 fi ac_config_files="$ac_config_files Makefile src/Makefile src/headers/Makefile src/gaiaaux/Makefile src/gaiaexif/Makefile src/gaiageo/Makefile src/gaiageo/flex/Makefile src/gaiageo/lemon/Makefile src/gaiageo/lemon/lemon_src/Makefile src/geopackage/Makefile src/spatialite/Makefile src/shapefiles/Makefile src/dxf/Makefile src/md5/Makefile src/control_points/Makefile src/cutter/Makefile src/topology/Makefile src/srsinit/Makefile src/srsinit/epsg_update/Makefile src/stored_procedures/Makefile src/connection_cache/Makefile src/connection_cache/generator/Makefile src/virtualtext/Makefile src/wfs/Makefile test/Makefile test/sql_stmt_tests/Makefile test/sql_stmt_geos_tests/Makefile test/sql_stmt_geos_380/Makefile test/sql_stmt_geos_non380/Makefile test/sql_stmt_geosadvanced_tests/Makefile test/sql_stmt_geopackage_tests/Makefile test/sql_stmt_gpkg_epsg492_tests/Makefile test/sql_stmt_gpkg_epsg493_tests/Makefile test/sql_stmt_gpkg_epsg600_tests/Makefile test/sql_stmt_proj_tests/Makefile test/sql_stmt_proj492_tests/Makefile test/sql_stmt_proj493_tests/Makefile test/sql_stmt_proj600_tests/Makefile test/sql_stmt_proj600security_tests/Makefile test/sql_stmt_mathsql_tests/Makefile test/sql_stmt_rtgeom_tests/Makefile test/sql_stmt_rttopo_tests/Makefile test/sql_stmt_libxml2_tests/Makefile test/sql_stmt_libxml2_rttopo_tests/Makefile test/sql_stmt_security_tests/Makefile test/sql_stmt_xmlsec_tests/Makefile test/sql_stmt_freexl_tests/Makefile test/sql_stmt_cache_tests/Makefile test/sql_stmt_gpkgcache_tests/Makefile test/sql_stmt_nocache_tests/Makefile test/sql_stmt_gpkgnocache_tests/Makefile test/sql_stmt_voronoj1_tests/Makefile test/sql_stmt_voronoj2_tests/Makefile test/sql_stmt_sequence_tests/Makefile test/sql_stmt_routing_tests/Makefile test/sql_stmt_logfile_tests/Makefile test/sql_stmt_iconv_tests/Makefile test/sql_stmt_proc_tests/Makefile test/sql_stmt_point_geom/Makefile test/sql_stmt_tiny_point/Makefile test/sql_stmt_postgres_tests/Makefile test/sql_stmt_geos370_tests/Makefile test/sql_stmt_renamenew_tests/Makefile test/sql_stmt_renameold_tests/Makefile test/sql_stmt_bufoptsnew_tests/Makefile test/sql_stmt_bufoptsold_tests/Makefile test/sql_stmt_minizip/Makefile test/sql_stmt_zip_proj6/Makefile examples/Makefile Doxyfile spatialite.pc" # exporting the TARGET_CPU string splite_cpu=`$CC -dumpmachine` cat >>confdefs.h <<_ACEOF #define TARGET_CPU "$splite_cpu" _ACEOF ................................................................................ test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by libspatialite $as_me 5.0.0-RC1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ ................................................................................ Report bugs to <a.furieri@lqt.it>." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ libspatialite config.status 5.0.0-RC1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ................................................................................ "test/sql_stmt_proj493_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_proj493_tests/Makefile" ;; "test/sql_stmt_proj600_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_proj600_tests/Makefile" ;; "test/sql_stmt_proj600security_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_proj600security_tests/Makefile" ;; "test/sql_stmt_mathsql_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_mathsql_tests/Makefile" ;; "test/sql_stmt_rtgeom_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_rtgeom_tests/Makefile" ;; "test/sql_stmt_rttopo_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_rttopo_tests/Makefile" ;; "test/sql_stmt_libxml2_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_libxml2_tests/Makefile" ;; "test/sql_stmt_libxml2_rttopo_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_libxml2_rttopo_tests/Makefile" ;; "test/sql_stmt_security_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_security_tests/Makefile" ;; "test/sql_stmt_xmlsec_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_xmlsec_tests/Makefile" ;; "test/sql_stmt_freexl_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_freexl_tests/Makefile" ;; "test/sql_stmt_cache_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_cache_tests/Makefile" ;; "test/sql_stmt_gpkgcache_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_gpkgcache_tests/Makefile" ;; "test/sql_stmt_nocache_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_nocache_tests/Makefile" ;; "test/sql_stmt_gpkgnocache_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_gpkgnocache_tests/Makefile" ;; |
Changes to configure.ac.
1
2
3
4
5
6
7
8
9
10
11
12
...
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) AC_INIT(libspatialite, 5.0.0-beta1, a.furieri@lqt.it) AC_LANG(C) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([foreign]) AM_MAINTAINER_MODE AM_CONFIG_HEADER(config.h) ................................................................................ test/sql_stmt_proj493_tests/Makefile \ test/sql_stmt_proj600_tests/Makefile \ test/sql_stmt_proj600security_tests/Makefile \ test/sql_stmt_mathsql_tests/Makefile \ test/sql_stmt_rtgeom_tests/Makefile \ test/sql_stmt_rttopo_tests/Makefile \ test/sql_stmt_libxml2_tests/Makefile \ test/sql_stmt_security_tests/Makefile \ test/sql_stmt_xmlsec_tests/Makefile \ test/sql_stmt_freexl_tests/Makefile \ test/sql_stmt_cache_tests/Makefile \ test/sql_stmt_gpkgcache_tests/Makefile \ test/sql_stmt_nocache_tests/Makefile \ test/sql_stmt_gpkgnocache_tests/Makefile \ |
|
>
|
1
2
3
4
5
6
7
8
9
10
11
12
...
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.61) AC_INIT(libspatialite, 5.0.0-RC1, a.furieri@lqt.it) AC_LANG(C) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([foreign]) AM_MAINTAINER_MODE AM_CONFIG_HEADER(config.h) ................................................................................ test/sql_stmt_proj493_tests/Makefile \ test/sql_stmt_proj600_tests/Makefile \ test/sql_stmt_proj600security_tests/Makefile \ test/sql_stmt_mathsql_tests/Makefile \ test/sql_stmt_rtgeom_tests/Makefile \ test/sql_stmt_rttopo_tests/Makefile \ test/sql_stmt_libxml2_tests/Makefile \ test/sql_stmt_libxml2_rttopo_tests/Makefile \ test/sql_stmt_security_tests/Makefile \ test/sql_stmt_xmlsec_tests/Makefile \ test/sql_stmt_freexl_tests/Makefile \ test/sql_stmt_cache_tests/Makefile \ test/sql_stmt_gpkgcache_tests/Makefile \ test/sql_stmt_nocache_tests/Makefile \ test/sql_stmt_gpkgnocache_tests/Makefile \ |
Changes to src/connection_cache/alloc_cache.c.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* alloc_cache.c -- Gaia spatial support for SQLite version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2013-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* alloc_cache.c -- Gaia spatial support for SQLite version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2013-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/connection_cache/cache_aux_1.h.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
#define SPATIALITE_MAX_CONNECTIONS 64 struct splite_connection { /* connections pool */ void *conn_ptr; } splite_connection_pool[SPATIALITE_MAX_CONNECTIONS] = { {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL} }; |
| | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
#define SPATIALITE_MAX_CONNECTIONS 64 struct splite_connection { /* connections pool */ void *conn_ptr; } splite_connection_pool[SPATIALITE_MAX_CONNECTIONS] = { {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL}, {NULL} }; |
Changes to src/connection_cache/cache_aux_2.h.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 |
static void geos_error_0 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (0, fmt, ap); va_end (ap); } static void geos_error_1 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (1, fmt, ap); va_end (ap); } static void geos_error_2 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (2, fmt, ap); va_end (ap); } static void geos_error_3 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (3, fmt, ap); va_end (ap); } static void geos_error_4 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (4, fmt, ap); va_end (ap); } static void geos_error_5 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (5, fmt, ap); va_end (ap); } static void geos_error_6 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (6, fmt, ap); va_end (ap); } static void geos_error_7 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (7, fmt, ap); va_end (ap); } static void geos_error_8 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (8, fmt, ap); va_end (ap); } static void geos_error_9 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (9, fmt, ap); va_end (ap); } static void geos_error_10 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (10, fmt, ap); va_end (ap); } static void geos_error_11 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (11, fmt, ap); va_end (ap); } static void geos_error_12 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (12, fmt, ap); va_end (ap); } static void geos_error_13 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (13, fmt, ap); va_end (ap); } static void geos_error_14 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (14, fmt, ap); va_end (ap); } static void geos_error_15 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (15, fmt, ap); va_end (ap); } static void geos_error_16 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (16, fmt, ap); va_end (ap); } static void geos_error_17 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (17, fmt, ap); va_end (ap); } static void geos_error_18 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (18, fmt, ap); va_end (ap); } static void geos_error_19 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (19, fmt, ap); va_end (ap); } static void geos_error_20 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (20, fmt, ap); va_end (ap); } static void geos_error_21 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (21, fmt, ap); va_end (ap); } static void geos_error_22 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (22, fmt, ap); va_end (ap); } static void geos_error_23 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (23, fmt, ap); va_end (ap); } static void geos_error_24 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (24, fmt, ap); va_end (ap); } static void geos_error_25 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (25, fmt, ap); va_end (ap); } static void geos_error_26 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (26, fmt, ap); va_end (ap); } static void geos_error_27 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (27, fmt, ap); va_end (ap); } static void geos_error_28 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (28, fmt, ap); va_end (ap); } static void geos_error_29 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (29, fmt, ap); va_end (ap); } static void geos_error_30 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (30, fmt, ap); va_end (ap); } static void geos_error_31 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (31, fmt, ap); va_end (ap); } static void geos_error_32 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (32, fmt, ap); va_end (ap); } static void geos_error_33 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (33, fmt, ap); va_end (ap); } static void geos_error_34 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (34, fmt, ap); va_end (ap); } static void geos_error_35 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (35, fmt, ap); va_end (ap); } static void geos_error_36 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (36, fmt, ap); va_end (ap); } static void geos_error_37 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (37, fmt, ap); va_end (ap); } static void geos_error_38 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (38, fmt, ap); va_end (ap); } static void geos_error_39 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (39, fmt, ap); va_end (ap); } static void geos_error_40 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (40, fmt, ap); va_end (ap); } static void geos_error_41 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (41, fmt, ap); va_end (ap); } static void geos_error_42 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (42, fmt, ap); va_end (ap); } static void geos_error_43 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (43, fmt, ap); va_end (ap); } static void geos_error_44 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (44, fmt, ap); va_end (ap); } static void geos_error_45 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (45, fmt, ap); va_end (ap); } static void geos_error_46 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (46, fmt, ap); va_end (ap); } static void geos_error_47 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (47, fmt, ap); va_end (ap); } static void geos_error_48 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (48, fmt, ap); va_end (ap); } static void geos_error_49 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (49, fmt, ap); va_end (ap); } static void geos_error_50 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (50, fmt, ap); va_end (ap); } static void geos_error_51 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (51, fmt, ap); va_end (ap); } static void geos_error_52 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (52, fmt, ap); va_end (ap); } static void geos_error_53 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (53, fmt, ap); va_end (ap); } static void geos_error_54 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (54, fmt, ap); va_end (ap); } static void geos_error_55 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (55, fmt, ap); va_end (ap); } static void geos_error_56 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (56, fmt, ap); va_end (ap); } static void geos_error_57 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (57, fmt, ap); va_end (ap); } static void geos_error_58 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (58, fmt, ap); va_end (ap); } static void geos_error_59 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (59, fmt, ap); va_end (ap); } static void geos_error_60 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (60, fmt, ap); va_end (ap); } static void geos_error_61 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (61, fmt, ap); va_end (ap); } static void geos_error_62 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (62, fmt, ap); va_end (ap); } static void geos_error_63 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (63, fmt, ap); va_end (ap); } static void geos_warning_0 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (0, fmt, ap); va_end (ap); } static void geos_warning_1 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (1, fmt, ap); va_end (ap); } static void geos_warning_2 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (2, fmt, ap); va_end (ap); } static void geos_warning_3 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (3, fmt, ap); va_end (ap); } static void geos_warning_4 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (4, fmt, ap); va_end (ap); } static void geos_warning_5 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (5, fmt, ap); va_end (ap); } static void geos_warning_6 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (6, fmt, ap); va_end (ap); } static void geos_warning_7 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (7, fmt, ap); va_end (ap); } static void geos_warning_8 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (8, fmt, ap); va_end (ap); } static void geos_warning_9 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (9, fmt, ap); va_end (ap); } static void geos_warning_10 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (10, fmt, ap); va_end (ap); } static void geos_warning_11 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (11, fmt, ap); va_end (ap); } static void geos_warning_12 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (12, fmt, ap); va_end (ap); } static void geos_warning_13 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (13, fmt, ap); va_end (ap); } static void geos_warning_14 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (14, fmt, ap); va_end (ap); } static void geos_warning_15 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (15, fmt, ap); va_end (ap); } static void geos_warning_16 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (16, fmt, ap); va_end (ap); } static void geos_warning_17 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (17, fmt, ap); va_end (ap); } static void geos_warning_18 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (18, fmt, ap); va_end (ap); } static void geos_warning_19 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (19, fmt, ap); va_end (ap); } static void geos_warning_20 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (20, fmt, ap); va_end (ap); } static void geos_warning_21 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (21, fmt, ap); va_end (ap); } static void geos_warning_22 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (22, fmt, ap); va_end (ap); } static void geos_warning_23 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (23, fmt, ap); va_end (ap); } static void geos_warning_24 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (24, fmt, ap); va_end (ap); } static void geos_warning_25 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (25, fmt, ap); va_end (ap); } static void geos_warning_26 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (26, fmt, ap); va_end (ap); } static void geos_warning_27 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (27, fmt, ap); va_end (ap); } static void geos_warning_28 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (28, fmt, ap); va_end (ap); } static void geos_warning_29 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (29, fmt, ap); va_end (ap); } static void geos_warning_30 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (30, fmt, ap); va_end (ap); } static void geos_warning_31 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (31, fmt, ap); va_end (ap); } static void geos_warning_32 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (32, fmt, ap); va_end (ap); } static void geos_warning_33 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (33, fmt, ap); va_end (ap); } static void geos_warning_34 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (34, fmt, ap); va_end (ap); } static void geos_warning_35 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (35, fmt, ap); va_end (ap); } static void geos_warning_36 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (36, fmt, ap); va_end (ap); } static void geos_warning_37 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (37, fmt, ap); va_end (ap); } static void geos_warning_38 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (38, fmt, ap); va_end (ap); } static void geos_warning_39 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (39, fmt, ap); va_end (ap); } static void geos_warning_40 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (40, fmt, ap); va_end (ap); } static void geos_warning_41 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (41, fmt, ap); va_end (ap); } static void geos_warning_42 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (42, fmt, ap); va_end (ap); } static void geos_warning_43 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (43, fmt, ap); va_end (ap); } static void geos_warning_44 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (44, fmt, ap); va_end (ap); } static void geos_warning_45 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (45, fmt, ap); va_end (ap); } static void geos_warning_46 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (46, fmt, ap); va_end (ap); } static void geos_warning_47 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (47, fmt, ap); va_end (ap); } static void geos_warning_48 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (48, fmt, ap); va_end (ap); } static void geos_warning_49 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (49, fmt, ap); va_end (ap); } static void geos_warning_50 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (50, fmt, ap); va_end (ap); } static void geos_warning_51 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (51, fmt, ap); va_end (ap); } static void geos_warning_52 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (52, fmt, ap); va_end (ap); } static void geos_warning_53 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (53, fmt, ap); va_end (ap); } static void geos_warning_54 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (54, fmt, ap); va_end (ap); } static void geos_warning_55 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (55, fmt, ap); va_end (ap); } static void geos_warning_56 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (56, fmt, ap); va_end (ap); } static void geos_warning_57 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (57, fmt, ap); va_end (ap); } static void geos_warning_58 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (58, fmt, ap); va_end (ap); } static void geos_warning_59 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (59, fmt, ap); va_end (ap); } static void geos_warning_60 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (60, fmt, ap); va_end (ap); } static void geos_warning_61 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (61, fmt, ap); va_end (ap); } static void geos_warning_62 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (62, fmt, ap); va_end (ap); } static void geos_warning_63 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (63, fmt, ap); va_end (ap); } |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 |
static void geos_error_0 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (0, fmt, ap); va_end (ap); } static void geos_error_1 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (1, fmt, ap); va_end (ap); } static void geos_error_2 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (2, fmt, ap); va_end (ap); } static void geos_error_3 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (3, fmt, ap); va_end (ap); } static void geos_error_4 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (4, fmt, ap); va_end (ap); } static void geos_error_5 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (5, fmt, ap); va_end (ap); } static void geos_error_6 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (6, fmt, ap); va_end (ap); } static void geos_error_7 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (7, fmt, ap); va_end (ap); } static void geos_error_8 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (8, fmt, ap); va_end (ap); } static void geos_error_9 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (9, fmt, ap); va_end (ap); } static void geos_error_10 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (10, fmt, ap); va_end (ap); } static void geos_error_11 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (11, fmt, ap); va_end (ap); } static void geos_error_12 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (12, fmt, ap); va_end (ap); } static void geos_error_13 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (13, fmt, ap); va_end (ap); } static void geos_error_14 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (14, fmt, ap); va_end (ap); } static void geos_error_15 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (15, fmt, ap); va_end (ap); } static void geos_error_16 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (16, fmt, ap); va_end (ap); } static void geos_error_17 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (17, fmt, ap); va_end (ap); } static void geos_error_18 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (18, fmt, ap); va_end (ap); } static void geos_error_19 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (19, fmt, ap); va_end (ap); } static void geos_error_20 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (20, fmt, ap); va_end (ap); } static void geos_error_21 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (21, fmt, ap); va_end (ap); } static void geos_error_22 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (22, fmt, ap); va_end (ap); } static void geos_error_23 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (23, fmt, ap); va_end (ap); } static void geos_error_24 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (24, fmt, ap); va_end (ap); } static void geos_error_25 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (25, fmt, ap); va_end (ap); } static void geos_error_26 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (26, fmt, ap); va_end (ap); } static void geos_error_27 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (27, fmt, ap); va_end (ap); } static void geos_error_28 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (28, fmt, ap); va_end (ap); } static void geos_error_29 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (29, fmt, ap); va_end (ap); } static void geos_error_30 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (30, fmt, ap); va_end (ap); } static void geos_error_31 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (31, fmt, ap); va_end (ap); } static void geos_error_32 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (32, fmt, ap); va_end (ap); } static void geos_error_33 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (33, fmt, ap); va_end (ap); } static void geos_error_34 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (34, fmt, ap); va_end (ap); } static void geos_error_35 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (35, fmt, ap); va_end (ap); } static void geos_error_36 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (36, fmt, ap); va_end (ap); } static void geos_error_37 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (37, fmt, ap); va_end (ap); } static void geos_error_38 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (38, fmt, ap); va_end (ap); } static void geos_error_39 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (39, fmt, ap); va_end (ap); } static void geos_error_40 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (40, fmt, ap); va_end (ap); } static void geos_error_41 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (41, fmt, ap); va_end (ap); } static void geos_error_42 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (42, fmt, ap); va_end (ap); } static void geos_error_43 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (43, fmt, ap); va_end (ap); } static void geos_error_44 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (44, fmt, ap); va_end (ap); } static void geos_error_45 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (45, fmt, ap); va_end (ap); } static void geos_error_46 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (46, fmt, ap); va_end (ap); } static void geos_error_47 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (47, fmt, ap); va_end (ap); } static void geos_error_48 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (48, fmt, ap); va_end (ap); } static void geos_error_49 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (49, fmt, ap); va_end (ap); } static void geos_error_50 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (50, fmt, ap); va_end (ap); } static void geos_error_51 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (51, fmt, ap); va_end (ap); } static void geos_error_52 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (52, fmt, ap); va_end (ap); } static void geos_error_53 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (53, fmt, ap); va_end (ap); } static void geos_error_54 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (54, fmt, ap); va_end (ap); } static void geos_error_55 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (55, fmt, ap); va_end (ap); } static void geos_error_56 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (56, fmt, ap); va_end (ap); } static void geos_error_57 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (57, fmt, ap); va_end (ap); } static void geos_error_58 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (58, fmt, ap); va_end (ap); } static void geos_error_59 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (59, fmt, ap); va_end (ap); } static void geos_error_60 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (60, fmt, ap); va_end (ap); } static void geos_error_61 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (61, fmt, ap); va_end (ap); } static void geos_error_62 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (62, fmt, ap); va_end (ap); } static void geos_error_63 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_error_r (63, fmt, ap); va_end (ap); } static void geos_warning_0 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (0, fmt, ap); va_end (ap); } static void geos_warning_1 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (1, fmt, ap); va_end (ap); } static void geos_warning_2 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (2, fmt, ap); va_end (ap); } static void geos_warning_3 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (3, fmt, ap); va_end (ap); } static void geos_warning_4 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (4, fmt, ap); va_end (ap); } static void geos_warning_5 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (5, fmt, ap); va_end (ap); } static void geos_warning_6 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (6, fmt, ap); va_end (ap); } static void geos_warning_7 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (7, fmt, ap); va_end (ap); } static void geos_warning_8 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (8, fmt, ap); va_end (ap); } static void geos_warning_9 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (9, fmt, ap); va_end (ap); } static void geos_warning_10 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (10, fmt, ap); va_end (ap); } static void geos_warning_11 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (11, fmt, ap); va_end (ap); } static void geos_warning_12 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (12, fmt, ap); va_end (ap); } static void geos_warning_13 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (13, fmt, ap); va_end (ap); } static void geos_warning_14 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (14, fmt, ap); va_end (ap); } static void geos_warning_15 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (15, fmt, ap); va_end (ap); } static void geos_warning_16 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (16, fmt, ap); va_end (ap); } static void geos_warning_17 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (17, fmt, ap); va_end (ap); } static void geos_warning_18 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (18, fmt, ap); va_end (ap); } static void geos_warning_19 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (19, fmt, ap); va_end (ap); } static void geos_warning_20 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (20, fmt, ap); va_end (ap); } static void geos_warning_21 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (21, fmt, ap); va_end (ap); } static void geos_warning_22 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (22, fmt, ap); va_end (ap); } static void geos_warning_23 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (23, fmt, ap); va_end (ap); } static void geos_warning_24 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (24, fmt, ap); va_end (ap); } static void geos_warning_25 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (25, fmt, ap); va_end (ap); } static void geos_warning_26 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (26, fmt, ap); va_end (ap); } static void geos_warning_27 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (27, fmt, ap); va_end (ap); } static void geos_warning_28 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (28, fmt, ap); va_end (ap); } static void geos_warning_29 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (29, fmt, ap); va_end (ap); } static void geos_warning_30 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (30, fmt, ap); va_end (ap); } static void geos_warning_31 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (31, fmt, ap); va_end (ap); } static void geos_warning_32 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (32, fmt, ap); va_end (ap); } static void geos_warning_33 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (33, fmt, ap); va_end (ap); } static void geos_warning_34 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (34, fmt, ap); va_end (ap); } static void geos_warning_35 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (35, fmt, ap); va_end (ap); } static void geos_warning_36 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (36, fmt, ap); va_end (ap); } static void geos_warning_37 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (37, fmt, ap); va_end (ap); } static void geos_warning_38 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (38, fmt, ap); va_end (ap); } static void geos_warning_39 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (39, fmt, ap); va_end (ap); } static void geos_warning_40 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (40, fmt, ap); va_end (ap); } static void geos_warning_41 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (41, fmt, ap); va_end (ap); } static void geos_warning_42 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (42, fmt, ap); va_end (ap); } static void geos_warning_43 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (43, fmt, ap); va_end (ap); } static void geos_warning_44 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (44, fmt, ap); va_end (ap); } static void geos_warning_45 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (45, fmt, ap); va_end (ap); } static void geos_warning_46 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (46, fmt, ap); va_end (ap); } static void geos_warning_47 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (47, fmt, ap); va_end (ap); } static void geos_warning_48 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (48, fmt, ap); va_end (ap); } static void geos_warning_49 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (49, fmt, ap); va_end (ap); } static void geos_warning_50 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (50, fmt, ap); va_end (ap); } static void geos_warning_51 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (51, fmt, ap); va_end (ap); } static void geos_warning_52 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (52, fmt, ap); va_end (ap); } static void geos_warning_53 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (53, fmt, ap); va_end (ap); } static void geos_warning_54 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (54, fmt, ap); va_end (ap); } static void geos_warning_55 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (55, fmt, ap); va_end (ap); } static void geos_warning_56 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (56, fmt, ap); va_end (ap); } static void geos_warning_57 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (57, fmt, ap); va_end (ap); } static void geos_warning_58 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (58, fmt, ap); va_end (ap); } static void geos_warning_59 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (59, fmt, ap); va_end (ap); } static void geos_warning_60 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (60, fmt, ap); va_end (ap); } static void geos_warning_61 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (61, fmt, ap); va_end (ap); } static void geos_warning_62 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (62, fmt, ap); va_end (ap); } static void geos_warning_63 (const char *fmt, ...) { va_list ap; va_start (ap, fmt); geos_warning_r (63, fmt, ap); va_end (ap); } |
Changes to src/connection_cache/cache_aux_3.h.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
/* initializing all function pointers */ switch (cache->pool_index) { case 0: cache->geos_warning = geos_warning_0; cache->geos_error = geos_error_0; break; case 1: cache->geos_warning = geos_warning_1; cache->geos_error = geos_error_1; break; case 2: cache->geos_warning = geos_warning_2; cache->geos_error = geos_error_2; break; case 3: cache->geos_warning = geos_warning_3; cache->geos_error = geos_error_3; break; case 4: cache->geos_warning = geos_warning_4; cache->geos_error = geos_error_4; break; case 5: cache->geos_warning = geos_warning_5; cache->geos_error = geos_error_5; break; case 6: cache->geos_warning = geos_warning_6; cache->geos_error = geos_error_6; break; case 7: cache->geos_warning = geos_warning_7; cache->geos_error = geos_error_7; break; case 8: cache->geos_warning = geos_warning_8; cache->geos_error = geos_error_8; break; case 9: cache->geos_warning = geos_warning_9; cache->geos_error = geos_error_9; break; case 10: cache->geos_warning = geos_warning_10; cache->geos_error = geos_error_10; break; case 11: cache->geos_warning = geos_warning_11; cache->geos_error = geos_error_11; break; case 12: cache->geos_warning = geos_warning_12; cache->geos_error = geos_error_12; break; case 13: cache->geos_warning = geos_warning_13; cache->geos_error = geos_error_13; break; case 14: cache->geos_warning = geos_warning_14; cache->geos_error = geos_error_14; break; case 15: cache->geos_warning = geos_warning_15; cache->geos_error = geos_error_15; break; case 16: cache->geos_warning = geos_warning_16; cache->geos_error = geos_error_16; break; case 17: cache->geos_warning = geos_warning_17; cache->geos_error = geos_error_17; break; case 18: cache->geos_warning = geos_warning_18; cache->geos_error = geos_error_18; break; case 19: cache->geos_warning = geos_warning_19; cache->geos_error = geos_error_19; break; case 20: cache->geos_warning = geos_warning_20; cache->geos_error = geos_error_20; break; case 21: cache->geos_warning = geos_warning_21; cache->geos_error = geos_error_21; break; case 22: cache->geos_warning = geos_warning_22; cache->geos_error = geos_error_22; break; case 23: cache->geos_warning = geos_warning_23; cache->geos_error = geos_error_23; break; case 24: cache->geos_warning = geos_warning_24; cache->geos_error = geos_error_24; break; case 25: cache->geos_warning = geos_warning_25; cache->geos_error = geos_error_25; break; case 26: cache->geos_warning = geos_warning_26; cache->geos_error = geos_error_26; break; case 27: cache->geos_warning = geos_warning_27; cache->geos_error = geos_error_27; break; case 28: cache->geos_warning = geos_warning_28; cache->geos_error = geos_error_28; break; case 29: cache->geos_warning = geos_warning_29; cache->geos_error = geos_error_29; break; case 30: cache->geos_warning = geos_warning_30; cache->geos_error = geos_error_30; break; case 31: cache->geos_warning = geos_warning_31; cache->geos_error = geos_error_31; break; case 32: cache->geos_warning = geos_warning_32; cache->geos_error = geos_error_32; break; case 33: cache->geos_warning = geos_warning_33; cache->geos_error = geos_error_33; break; case 34: cache->geos_warning = geos_warning_34; cache->geos_error = geos_error_34; break; case 35: cache->geos_warning = geos_warning_35; cache->geos_error = geos_error_35; break; case 36: cache->geos_warning = geos_warning_36; cache->geos_error = geos_error_36; break; case 37: cache->geos_warning = geos_warning_37; cache->geos_error = geos_error_37; break; case 38: cache->geos_warning = geos_warning_38; cache->geos_error = geos_error_38; break; case 39: cache->geos_warning = geos_warning_39; cache->geos_error = geos_error_39; break; case 40: cache->geos_warning = geos_warning_40; cache->geos_error = geos_error_40; break; case 41: cache->geos_warning = geos_warning_41; cache->geos_error = geos_error_41; break; case 42: cache->geos_warning = geos_warning_42; cache->geos_error = geos_error_42; break; case 43: cache->geos_warning = geos_warning_43; cache->geos_error = geos_error_43; break; case 44: cache->geos_warning = geos_warning_44; cache->geos_error = geos_error_44; break; case 45: cache->geos_warning = geos_warning_45; cache->geos_error = geos_error_45; break; case 46: cache->geos_warning = geos_warning_46; cache->geos_error = geos_error_46; break; case 47: cache->geos_warning = geos_warning_47; cache->geos_error = geos_error_47; break; case 48: cache->geos_warning = geos_warning_48; cache->geos_error = geos_error_48; break; case 49: cache->geos_warning = geos_warning_49; cache->geos_error = geos_error_49; break; case 50: cache->geos_warning = geos_warning_50; cache->geos_error = geos_error_50; break; case 51: cache->geos_warning = geos_warning_51; cache->geos_error = geos_error_51; break; case 52: cache->geos_warning = geos_warning_52; cache->geos_error = geos_error_52; break; case 53: cache->geos_warning = geos_warning_53; cache->geos_error = geos_error_53; break; case 54: cache->geos_warning = geos_warning_54; cache->geos_error = geos_error_54; break; case 55: cache->geos_warning = geos_warning_55; cache->geos_error = geos_error_55; break; case 56: cache->geos_warning = geos_warning_56; cache->geos_error = geos_error_56; break; case 57: cache->geos_warning = geos_warning_57; cache->geos_error = geos_error_57; break; case 58: cache->geos_warning = geos_warning_58; cache->geos_error = geos_error_58; break; case 59: cache->geos_warning = geos_warning_59; cache->geos_error = geos_error_59; break; case 60: cache->geos_warning = geos_warning_60; cache->geos_error = geos_error_60; break; case 61: cache->geos_warning = geos_warning_61; cache->geos_error = geos_error_61; break; case 62: cache->geos_warning = geos_warning_62; cache->geos_error = geos_error_62; break; case 63: cache->geos_warning = geos_warning_63; cache->geos_error = geos_error_63; break; }; |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 |
/* initializing all function pointers */ switch (cache->pool_index) { case 0: cache->geos_warning = geos_warning_0; cache->geos_error = geos_error_0; break; case 1: cache->geos_warning = geos_warning_1; cache->geos_error = geos_error_1; break; case 2: cache->geos_warning = geos_warning_2; cache->geos_error = geos_error_2; break; case 3: cache->geos_warning = geos_warning_3; cache->geos_error = geos_error_3; break; case 4: cache->geos_warning = geos_warning_4; cache->geos_error = geos_error_4; break; case 5: cache->geos_warning = geos_warning_5; cache->geos_error = geos_error_5; break; case 6: cache->geos_warning = geos_warning_6; cache->geos_error = geos_error_6; break; case 7: cache->geos_warning = geos_warning_7; cache->geos_error = geos_error_7; break; case 8: cache->geos_warning = geos_warning_8; cache->geos_error = geos_error_8; break; case 9: cache->geos_warning = geos_warning_9; cache->geos_error = geos_error_9; break; case 10: cache->geos_warning = geos_warning_10; cache->geos_error = geos_error_10; break; case 11: cache->geos_warning = geos_warning_11; cache->geos_error = geos_error_11; break; case 12: cache->geos_warning = geos_warning_12; cache->geos_error = geos_error_12; break; case 13: cache->geos_warning = geos_warning_13; cache->geos_error = geos_error_13; break; case 14: cache->geos_warning = geos_warning_14; cache->geos_error = geos_error_14; break; case 15: cache->geos_warning = geos_warning_15; cache->geos_error = geos_error_15; break; case 16: cache->geos_warning = geos_warning_16; cache->geos_error = geos_error_16; break; case 17: cache->geos_warning = geos_warning_17; cache->geos_error = geos_error_17; break; case 18: cache->geos_warning = geos_warning_18; cache->geos_error = geos_error_18; break; case 19: cache->geos_warning = geos_warning_19; cache->geos_error = geos_error_19; break; case 20: cache->geos_warning = geos_warning_20; cache->geos_error = geos_error_20; break; case 21: cache->geos_warning = geos_warning_21; cache->geos_error = geos_error_21; break; case 22: cache->geos_warning = geos_warning_22; cache->geos_error = geos_error_22; break; case 23: cache->geos_warning = geos_warning_23; cache->geos_error = geos_error_23; break; case 24: cache->geos_warning = geos_warning_24; cache->geos_error = geos_error_24; break; case 25: cache->geos_warning = geos_warning_25; cache->geos_error = geos_error_25; break; case 26: cache->geos_warning = geos_warning_26; cache->geos_error = geos_error_26; break; case 27: cache->geos_warning = geos_warning_27; cache->geos_error = geos_error_27; break; case 28: cache->geos_warning = geos_warning_28; cache->geos_error = geos_error_28; break; case 29: cache->geos_warning = geos_warning_29; cache->geos_error = geos_error_29; break; case 30: cache->geos_warning = geos_warning_30; cache->geos_error = geos_error_30; break; case 31: cache->geos_warning = geos_warning_31; cache->geos_error = geos_error_31; break; case 32: cache->geos_warning = geos_warning_32; cache->geos_error = geos_error_32; break; case 33: cache->geos_warning = geos_warning_33; cache->geos_error = geos_error_33; break; case 34: cache->geos_warning = geos_warning_34; cache->geos_error = geos_error_34; break; case 35: cache->geos_warning = geos_warning_35; cache->geos_error = geos_error_35; break; case 36: cache->geos_warning = geos_warning_36; cache->geos_error = geos_error_36; break; case 37: cache->geos_warning = geos_warning_37; cache->geos_error = geos_error_37; break; case 38: cache->geos_warning = geos_warning_38; cache->geos_error = geos_error_38; break; case 39: cache->geos_warning = geos_warning_39; cache->geos_error = geos_error_39; break; case 40: cache->geos_warning = geos_warning_40; cache->geos_error = geos_error_40; break; case 41: cache->geos_warning = geos_warning_41; cache->geos_error = geos_error_41; break; case 42: cache->geos_warning = geos_warning_42; cache->geos_error = geos_error_42; break; case 43: cache->geos_warning = geos_warning_43; cache->geos_error = geos_error_43; break; case 44: cache->geos_warning = geos_warning_44; cache->geos_error = geos_error_44; break; case 45: cache->geos_warning = geos_warning_45; cache->geos_error = geos_error_45; break; case 46: cache->geos_warning = geos_warning_46; cache->geos_error = geos_error_46; break; case 47: cache->geos_warning = geos_warning_47; cache->geos_error = geos_error_47; break; case 48: cache->geos_warning = geos_warning_48; cache->geos_error = geos_error_48; break; case 49: cache->geos_warning = geos_warning_49; cache->geos_error = geos_error_49; break; case 50: cache->geos_warning = geos_warning_50; cache->geos_error = geos_error_50; break; case 51: cache->geos_warning = geos_warning_51; cache->geos_error = geos_error_51; break; case 52: cache->geos_warning = geos_warning_52; cache->geos_error = geos_error_52; break; case 53: cache->geos_warning = geos_warning_53; cache->geos_error = geos_error_53; break; case 54: cache->geos_warning = geos_warning_54; cache->geos_error = geos_error_54; break; case 55: cache->geos_warning = geos_warning_55; cache->geos_error = geos_error_55; break; case 56: cache->geos_warning = geos_warning_56; cache->geos_error = geos_error_56; break; case 57: cache->geos_warning = geos_warning_57; cache->geos_error = geos_error_57; break; case 58: cache->geos_warning = geos_warning_58; cache->geos_error = geos_error_58; break; case 59: cache->geos_warning = geos_warning_59; cache->geos_error = geos_error_59; break; case 60: cache->geos_warning = geos_warning_60; cache->geos_error = geos_error_60; break; case 61: cache->geos_warning = geos_warning_61; cache->geos_error = geos_error_61; break; case 62: cache->geos_warning = geos_warning_62; cache->geos_error = geos_error_62; break; case 63: cache->geos_warning = geos_warning_63; cache->geos_error = geos_error_63; break; }; |
Changes to src/connection_cache/gg_sequence.c.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_sequence.c -- Gaia support for Spatialite's own Sequence version 4.4, 2016 August 12 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2013-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_sequence.c -- Gaia support for Spatialite's own Sequence version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2013-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/control_points/gaia_control_points.c.
1 2 3 4 5 6 7 8 9 10 11 12 |
/*
gaia_control_points.c -- Gaia implementation of RMSE and TPS Control Points
version 4.3, 2015 May 5
Author: Sandro Furieri a.furieri@lqt.it
------------------------------------------------------------------------------
DISCLAIMER: this source is simply intemded as an interface supporting the
sources from Grass GIS
NOTE: accordingly to the initial license this file is released
|
| |
1 2 3 4 5 6 7 8 9 10 11 12 |
/*
gaia_control_points.c -- Gaia implementation of RMSE and TPS Control Points
version 5.0, 2020 August 1
Author: Sandro Furieri a.furieri@lqt.it
------------------------------------------------------------------------------
DISCLAIMER: this source is simply intemded as an interface supporting the
sources from Grass GIS
NOTE: accordingly to the initial license this file is released
|
Changes to src/control_points/grass_crs.h.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/*
grass_crs.h -- private header file required by source file derived from
Grass GIS
version 4.3, 2015 May 5
Author: Sandro Furieri a.furieri@lqt.it
------------------------------------------------------------------------------
DISCLAIMER: this source is strictly derived from Grass GIS code and simply
contains very trivial adjustments required in order to compile
smoothly on libspatialite.
|
| |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/*
grass_crs.h -- private header file required by source file derived from
Grass GIS
version 5.0, 2020 August 1
Author: Sandro Furieri a.furieri@lqt.it
------------------------------------------------------------------------------
DISCLAIMER: this source is strictly derived from Grass GIS code and simply
contains very trivial adjustments required in order to compile
smoothly on libspatialite.
|
Changes to src/control_points/grass_crs3d.c.
1 2 3 4 5 6 7 8 9 10 11 12 |
/*
grass_crs3d.c -- strictly derived from Grass GIS code: vector/v.rectify/crs3d.c
version 4.3, 2015 May 5
Author: Sandro Furieri a.furieri@lqt.it
------------------------------------------------------------------------------
DISCLAIMER: this source is strictly derived from Grass GIS code and simply
contains very trivial adjustments required in order to compile
smoothly on libspatialite.
|
| |
1 2 3 4 5 6 7 8 9 10 11 12 |
/*
grass_crs3d.c -- strictly derived from Grass GIS code: vector/v.rectify/crs3d.c
version 5.0, 2020 August 1
Author: Sandro Furieri a.furieri@lqt.it
------------------------------------------------------------------------------
DISCLAIMER: this source is strictly derived from Grass GIS code and simply
contains very trivial adjustments required in order to compile
smoothly on libspatialite.
|
Changes to src/control_points/grass_georef.c.
1 2 3 4 5 6 7 8 9 10 11 12 |
/*
grass_georef.c -- strictly derived from Grass GIS code: lib/imagery/georef.c
version 4.3, 2015 May 5
Author: Sandro Furieri a.furieri@lqt.it
------------------------------------------------------------------------------
DISCLAIMER: this source is strictly derived from Grass GIS code and simply
contains very trivial adjustments required in order to compile
smoothly on libspatialite.
|
| |
1 2 3 4 5 6 7 8 9 10 11 12 |
/*
grass_georef.c -- strictly derived from Grass GIS code: lib/imagery/georef.c
version 5.0, 2020 August 1
Author: Sandro Furieri a.furieri@lqt.it
------------------------------------------------------------------------------
DISCLAIMER: this source is strictly derived from Grass GIS code and simply
contains very trivial adjustments required in order to compile
smoothly on libspatialite.
|
Changes to src/control_points/grass_georef_tps.c.
1 2 3 4 5 6 7 8 9 10 11 12 |
/*
grass_georef_tps.c -- strictly derived from Grass GIS code: lib/imagery/georef_tps.c
version 4.3, 2015 May 5
Author: Sandro Furieri a.furieri@lqt.it
------------------------------------------------------------------------------
DISCLAIMER: this source is strictly derived from Grass GIS code and simply
contains very trivial adjustments required in order to compile
smoothly on libspatialite.
|
| |
1 2 3 4 5 6 7 8 9 10 11 12 |
/*
grass_georef_tps.c -- strictly derived from Grass GIS code: lib/imagery/georef_tps.c
version 5.0, 2020 August 1
Author: Sandro Furieri a.furieri@lqt.it
------------------------------------------------------------------------------
DISCLAIMER: this source is strictly derived from Grass GIS code and simply
contains very trivial adjustments required in order to compile
smoothly on libspatialite.
|
Changes to src/cutter/gaia_cutter.c.
1 2 3 4 5 6 7 8 9 10 11 12 |
/*
gaia_cutter.c -- implementation of the Cutter module
version 4.3, 2015 July 2
Author: Sandro Furieri a.furieri@lqt.it
-----------------------------------------------------------------------------
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
| |
1 2 3 4 5 6 7 8 9 10 11 12 |
/*
gaia_cutter.c -- implementation of the Cutter module
version 5.0, 2020 August 1
Author: Sandro Furieri a.furieri@lqt.it
-----------------------------------------------------------------------------
Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
Changes to src/dxf/dxf_load_distinct.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
..
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/* dxf_load_distinct.c -- implements DXF support [loding features into the DB - by distinct layers] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
..
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/* dxf_load_distinct.c -- implements DXF support [loding features into the DB - by distinct layers] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/dxf/dxf_load_mixed.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
..
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/* dxf_load_mixed.c -- implements DXF support [loding features into the DB - mixed layers by geometry type] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
..
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/* dxf_load_mixed.c -- implements DXF support [loding features into the DB - mixed layers by geometry type] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/dxf/dxf_loader.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
..
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/* dxf_loader.c -- implements DXF support [loding features into the DB - common methods] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
..
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/* dxf_loader.c -- implements DXF support [loding features into the DB - common methods] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/dxf/dxf_parser.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* dxf_parser.c -- implements DXF support [parsing] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* dxf_parser.c -- implements DXF support [parsing] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/dxf/dxf_private.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* dxf_private.h -- DXF Import Private API version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* dxf_private.h -- DXF Import Private API version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/dxf/dxf_writer.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
..
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/* dxf_writer.c -- implements DXF support [exporting a DXF] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
..
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/* dxf_writer.c -- implements DXF support [exporting a DXF] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiaaux/gg_sqlaux.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .... 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 .... 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 |
/* gg_sqlaux.c -- SQL ancillary functions version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ lat_d, lat_m, lat_s, lat_prefix, long_d, long_m, long_s, long_prefix); else { char format[256]; sprintf (format, "%%02d°%%02d′%%0%d.%df″%%c %%03d°%%02d′%%0%d.%df″%%c", decimal_digits + 3, decimal_digits, decimal_digits + 3, decimal_digits); dms0 = sqlite3_mprintf (format, lat_d, lat_m, lat_s_dbl, lat_prefix, long_d, long_m, long_s_dbl, long_prefix); } len = strlen (dms0); dms = malloc (len + 1); strcpy (dms, dms0); sqlite3_free (dms0); return dms; } ................................................................................ return name; } GAIAAUX_DECLARE char * gaiaRemoveExtraSpaces (const char *string) { /* removing all repeated whitespaces from a string */ int len; char *clean; char *p; int i; int space = 0; if (string == NULL) return NULL; len = strlen(string); clean = malloc (len + 1); p = clean; for (i = 0; i < len; i++) { int sp = 0; if (string[i] == ' ' || string[i] == '\t') sp = 1; else sp = 0; if (space && sp) continue; *p++ = string[i]; if (sp) space = 1; else space = 0; } *p = '\0'; return clean; } |
| | | > | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .... 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 .... 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 |
/* gg_sqlaux.c -- SQL ancillary functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ lat_d, lat_m, lat_s, lat_prefix, long_d, long_m, long_s, long_prefix); else { char format[256]; sprintf (format, "%%02d°%%02d′%%0%d.%df″%%c %%03d°%%02d′%%0%d.%df″%%c", decimal_digits + 3, decimal_digits, decimal_digits + 3, decimal_digits); dms0 = sqlite3_mprintf (format, lat_d, lat_m, lat_s_dbl, lat_prefix, long_d, long_m, long_s_dbl, long_prefix); } len = strlen (dms0); dms = malloc (len + 1); strcpy (dms, dms0); sqlite3_free (dms0); return dms; } ................................................................................ return name; } GAIAAUX_DECLARE char * gaiaRemoveExtraSpaces (const char *string) { /* removing all repeated whitespaces from a string */ int len; char *clean; char *p; int i; int space = 0; if (string == NULL) return NULL; len = strlen (string); clean = malloc (len + 1); p = clean; for (i = 0; i < len; i++) { int sp = 0; if (string[i] == ' ' || string[i] == '\t') sp = 1; else sp = 0; if (space && sp) continue; *p++ = string[i]; if (sp) space = 1; else space = 0; } *p = '\0'; return clean; } |
Changes to src/gaiaaux/gg_utf8.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .. 51 52 53 54 55 56 57 58 59 60 61 62 63 64 .. 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 ... 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 ... 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 ... 272 273 274 275 276 277 278 279 |
/* gg_utf8.c -- locale charset handling version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ #if defined(_WIN32) && !defined(__MINGW32__) #include "config-msvc.h" #else #include "config.h" #endif #if OMIT_ICONV == 0 /* ICONV is absolutely required */ #if defined(__MINGW32__) || defined(_WIN32) #define LIBICONV_STATIC #include <iconv.h> #define LIBCHARSET_STATIC #ifdef _MSC_VER ................................................................................ #include <localcharset.h> #else /* neither Mac OsX nor Android */ #include <iconv.h> #include <langinfo.h> #endif #endif #include <spatialite/sqlite.h> #include <spatialite/gaiaaux.h> #include <spatialite_private.h> GAIAAUX_DECLARE const char * gaiaGetLocaleCharset () { /* identifies the locale charset */ #if defined(__MINGW32__) || defined(_WIN32) return locale_charset (); #else /* not MINGW32 - WIN32 */ ................................................................................ size_t utf8len; int maxlen; char *utf8buf; char *pUtf8buf; #if !defined(__MINGW32__) && defined(_WIN32) const char *pBuf = url; #else /* not WIN32 */ char *pBuf = (char *)url; #endif if (url == NULL || in_charset == NULL) return NULL; cvt = iconv_open ("UTF-8", in_charset); if (cvt == (iconv_t) (-1)) goto unsupported; ................................................................................ size_t utf8len; int maxlen; char *utf8buf; char *pUtf8buf; #if !defined(__MINGW32__) && defined(_WIN32) const char *pBuf = url; #else /* not WIN32 */ char *pBuf = (char *)url; #endif if (url == NULL || out_charset == NULL) return NULL; cvt = iconv_open (out_charset, "UTF-8"); if (cvt == (iconv_t) (-1)) goto unsupported; ................................................................................ error: iconv_close (cvt); free (utf8buf); unsupported: return NULL; } #endif /* ICONV enabled/disabled */ |
| | > > > > < < < < | | > > > > > > > > |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .. 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 .. 78 79 80 81 82 83 84 85 86 87 88 89 90 91 ... 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 ... 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 ... 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 |
/* gg_utf8.c -- locale charset handling version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ #if defined(_WIN32) && !defined(__MINGW32__) #include "config-msvc.h" #else #include "config.h" #endif #include <spatialite/sqlite.h> #include <spatialite/gaiaaux.h> #include <spatialite_private.h> #if OMIT_ICONV == 0 /* ICONV is absolutely required */ #if defined(__MINGW32__) || defined(_WIN32) #define LIBICONV_STATIC #include <iconv.h> #define LIBCHARSET_STATIC #ifdef _MSC_VER ................................................................................ #include <localcharset.h> #else /* neither Mac OsX nor Android */ #include <iconv.h> #include <langinfo.h> #endif #endif GAIAAUX_DECLARE const char * gaiaGetLocaleCharset () { /* identifies the locale charset */ #if defined(__MINGW32__) || defined(_WIN32) return locale_charset (); #else /* not MINGW32 - WIN32 */ ................................................................................ size_t utf8len; int maxlen; char *utf8buf; char *pUtf8buf; #if !defined(__MINGW32__) && defined(_WIN32) const char *pBuf = url; #else /* not WIN32 */ char *pBuf = (char *) url; #endif if (url == NULL || in_charset == NULL) return NULL; cvt = iconv_open ("UTF-8", in_charset); if (cvt == (iconv_t) (-1)) goto unsupported; ................................................................................ size_t utf8len; int maxlen; char *utf8buf; char *pUtf8buf; #if !defined(__MINGW32__) && defined(_WIN32) const char *pBuf = url; #else /* not WIN32 */ char *pBuf = (char *) url; #endif if (url == NULL || out_charset == NULL) return NULL; cvt = iconv_open (out_charset, "UTF-8"); if (cvt == (iconv_t) (-1)) goto unsupported; ................................................................................ error: iconv_close (cvt); free (utf8buf); unsupported: return NULL; } #else GAIAAUX_DECLARE char * gaiaConvertToUTF8 (void *cvtCS, const char *buf, int buflen, int *err) { if (cvtCS == NULL || buf == NULL || err == NULL || buflen == 0) return NULL; return NULL; } #endif /* ICONV enabled/disabled */ |
Changes to src/gaiaexif/gaia_exif.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_exif.c -- Gaia EXIF support version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_exif.c -- Gaia EXIF support version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/Ewkt.c.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 ... 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 ... 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 ... 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 ... 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 ... 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 .... 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 .... 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 |
** YY_ERROR_ACTION The yy_action[] code for syntax error ** YY_ACCEPT_ACTION The yy_action[] code for accept ** YY_NO_ACTION The yy_action[] code for no-op ** YY_MIN_REDUCE Minimum value for reduce actions ** YY_MAX_REDUCE Maximum value for reduce actions */ #ifndef INTERFACE # define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char #define YYNOCODE 117 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE void * typedef union { int yyinit; ParseTOKENTYPE yy0; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 1000000 #endif #define ParseARG_SDECL struct ewkt_data *p_data ; #define ParseARG_PDECL , struct ewkt_data *p_data #define ParseARG_FETCH struct ewkt_data *p_data = yypParser->p_data #define ParseARG_STORE yypParser->p_data = p_data #define YYNSTATE 335 #define YYNRULE 199 #define YYNTOKEN 20 #define YY_MAX_SHIFT 334 #define YY_MIN_SHIFTREDUCE 508 #define YY_MAX_SHIFTREDUCE 706 #define YY_ERROR_ACTION 707 ................................................................................ ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production ** code the yytestcase() macro should be turned off. But it is useful ** for testing. */ #ifndef yytestcase # define yytestcase(X) #endif /* Next are the tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement ** functions that take a state number and lookahead value and return an ** action integer. ................................................................................ ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (694) static const YYACTIONTYPE yy_action[] = { /* 0 */ 334, 334, 334, 334, 710, 711, 712, 713, 714, 715, /* 10 */ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, /* 20 */ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, /* 30 */ 736, 737, 148, 110, 87, 133, 109, 86, 132, 108, /* 40 */ 85, 131, 107, 84, 130, 106, 83, 129, 105, 82, /* 50 */ 903, 206, 333, 236, 212, 329, 194, 245, 28, 231, /* 60 */ 27, 216, 25, 187, 24, 170, 22, 153, 20, 79, /* 70 */ 333, 329, 708, 1, 299, 231, 28, 216, 27, 187, /* 80 */ 25, 170, 24, 153, 22, 71, 19, 208, 207, 548, /* 90 */ 206, 205, 248, 329, 200, 194, 262, 231, 330, 216, /* 100 */ 236, 187, 101, 170, 100, 153, 99, 64, 98, 262, /* 110 */ 96, 127, 81, 125, 102, 101, 207, 100, 270, 99, /* 120 */ 240, 98, 200, 96, 124, 88, 123, 270, 122, 323, /* 130 */ 121, 236, 119, 124, 104, 123, 278, 122, 218, 121, /* 140 */ 236, 119, 147, 111, 146, 278, 145, 306, 144, 236, /* 150 */ 142, 147, 128, 146, 249, 145, 331, 144, 208, 142, /* 160 */ 240, 134, 205, 243, 2, 61, 77, 76, 75, 74, /* 170 */ 73, 72, 78, 69, 68, 67, 66, 65, 87, 63, /* 180 */ 94, 86, 110, 93, 85, 109, 92, 84, 108, 91, /* 190 */ 83, 107, 90, 82, 106, 89, 117, 105, 148, 116, /* 200 */ 140, 133, 115, 139, 132, 114, 138, 131, 113, 137, /* 210 */ 130, 112, 136, 129, 26, 135, 210, 318, 313, 548, /* 220 */ 308, 21, 248, 192, 327, 325, 548, 323, 4, 248, /* 230 */ 332, 331, 325, 330, 183, 248, 240, 245, 182, 839, /* 240 */ 222, 841, 842, 165, 240, 161, 157, 823, 311, 825, /* 250 */ 826, 179, 240, 176, 173, 807, 902, 809, 810, 332, /* 260 */ 795, 228, 797, 798, 243, 224, 775, 220, 777, 778, /* 270 */ 767, 198, 769, 770, 548, 203, 186, 13, 548, 548, /* 280 */ 327, 301, 23, 302, 245, 243, 245, 303, 3, 307, /* 290 */ 245, 236, 308, 312, 236, 313, 226, 240, 316, 240, /* 300 */ 317, 243, 318, 243, 12, 243, 229, 243, 230, 245, /* 310 */ 321, 245, 232, 245, 236, 237, 233, 238, 236, 240, /* 320 */ 241, 240, 242, 328, 5, 243, 245, 243, 542, 250, /* 330 */ 548, 540, 251, 548, 6, 252, 253, 7, 70, 155, /* 340 */ 254, 872, 95, 32, 97, 871, 870, 15, 869, 868, /* 350 */ 9, 867, 8, 866, 159, 255, 157, 840, 173, 256, /* 360 */ 887, 102, 770, 778, 118, 33, 120, 257, 16, 10, /* 370 */ 258, 259, 260, 80, 11, 261, 810, 798, 901, 900, /* 380 */ 161, 826, 176, 777, 899, 898, 897, 769, 163, 141, /* 390 */ 896, 263, 125, 34, 264, 825, 797, 809, 179, 143, /* 400 */ 17, 150, 265, 266, 267, 268, 269, 103, 886, 885, /* 410 */ 884, 165, 883, 882, 881, 215, 795, 767, 271, 857, /* 420 */ 127, 272, 273, 274, 807, 126, 275, 276, 277, 823, /* 430 */ 856, 855, 854, 775, 853, 852, 149, 851, 152, 832, /* 440 */ 156, 151, 280, 824, 42, 279, 220, 154, 46, 160, /* 450 */ 158, 164, 829, 838, 281, 224, 835, 50, 282, 228, /* 460 */ 162, 53, 283, 167, 166, 168, 816, 284, 169, 808, /* 470 */ 172, 175, 822, 171, 285, 819, 174, 178, 286, 813, /* 480 */ 177, 181, 754, 287, 186, 180, 288, 51, 289, 290, /* 490 */ 184, 185, 18, 796, 193, 758, 189, 190, 191, 192, /* 500 */ 199, 291, 188, 293, 198, 204, 756, 196, 197, 203, /* 510 */ 201, 195, 292, 295, 752, 202, 294, 54, 56, 58, /* 520 */ 62, 209, 213, 38, 219, 223, 227, 709, 296, 297, /* 530 */ 298, 709, 709, 662, 661, 660, 300, 709, 659, 658, /* 540 */ 657, 656, 709, 691, 305, 690, 689, 29, 310, 788, /* 550 */ 211, 688, 304, 214, 776, 749, 315, 234, 768, 794, /* 560 */ 762, 217, 764, 309, 791, 785, 221, 319, 314, 320, /* 570 */ 225, 687, 760, 766, 322, 324, 235, 326, 686, 692, /* 580 */ 676, 748, 239, 746, 747, 244, 246, 247, 675, 674, /* 590 */ 673, 672, 671, 30, 709, 677, 647, 646, 645, 709, /* 600 */ 644, 643, 642, 641, 31, 709, 628, 634, 631, 625, /* 610 */ 709, 612, 618, 615, 609, 709, 602, 598, 541, 604, /* 620 */ 709, 603, 542, 601, 540, 709, 600, 599, 597, 543, /* 630 */ 709, 584, 709, 709, 709, 35, 36, 37, 709, 39, /* 640 */ 578, 590, 709, 709, 709, 40, 580, 41, 43, 709, /* 650 */ 587, 709, 703, 579, 44, 45, 709, 709, 581, 709, /* 660 */ 709, 709, 47, 48, 709, 709, 49, 577, 570, 709, /* 670 */ 709, 709, 572, 709, 52, 709, 55, 571, 709, 709, /* 680 */ 709, 569, 57, 709, 709, 59, 538, 539, 709, 60, /* 690 */ 709, 537, 536, 14, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, /* 10 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, /* 20 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, /* 30 */ 53, 54, 27, 28, 29, 30, 31, 32, 33, 34, /* 40 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, /* 50 */ 0, 58, 2, 60, 57, 5, 63, 60, 8, 9, /* 60 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, /* 70 */ 2, 5, 21, 22, 60, 9, 8, 11, 10, 13, /* 80 */ 12, 15, 14, 17, 16, 19, 18, 55, 56, 6, /* 90 */ 58, 59, 60, 5, 62, 63, 2, 9, 58, 11, /* 100 */ 60, 13, 8, 15, 10, 17, 12, 19, 14, 2, /* 110 */ 16, 108, 18, 110, 111, 8, 56, 10, 2, 12, /* 120 */ 60, 14, 62, 16, 8, 18, 10, 2, 12, 58, /* 130 */ 14, 60, 16, 8, 18, 10, 2, 12, 58, 14, /* 140 */ 60, 16, 8, 18, 10, 2, 12, 58, 14, 60, /* 150 */ 16, 8, 18, 10, 113, 12, 56, 14, 55, 16, /* 160 */ 60, 18, 59, 60, 3, 60, 48, 49, 50, 51, /* 170 */ 52, 53, 48, 49, 50, 51, 52, 53, 29, 109, /* 180 */ 29, 32, 28, 32, 35, 31, 35, 38, 34, 38, /* 190 */ 41, 37, 41, 44, 40, 44, 28, 43, 27, 31, /* 200 */ 27, 30, 34, 30, 33, 37, 33, 36, 40, 36, /* 210 */ 39, 43, 39, 42, 3, 42, 3, 55, 56, 6, /* 220 */ 58, 3, 60, 3, 55, 56, 6, 58, 7, 60, /* 230 */ 55, 56, 56, 58, 57, 60, 60, 60, 61, 108, /* 240 */ 56, 110, 111, 76, 60, 78, 79, 100, 56, 102, /* 250 */ 103, 72, 60, 74, 75, 92, 115, 94, 95, 55, /* 260 */ 88, 80, 90, 91, 60, 84, 76, 86, 78, 79, /* 270 */ 72, 3, 74, 75, 6, 3, 3, 3, 6, 6, /* 280 */ 55, 57, 3, 57, 60, 60, 60, 57, 3, 58, /* 290 */ 60, 60, 58, 56, 60, 56, 55, 60, 55, 60, /* 300 */ 55, 60, 55, 60, 3, 60, 57, 60, 57, 60, /* 310 */ 57, 60, 58, 60, 60, 56, 58, 56, 60, 60, /* 320 */ 55, 60, 55, 57, 3, 60, 60, 60, 4, 113, /* 330 */ 6, 4, 113, 6, 3, 113, 113, 7, 109, 3, /* 340 */ 113, 113, 3, 3, 3, 113, 113, 3, 113, 113, /* 350 */ 7, 113, 3, 113, 3, 113, 79, 109, 75, 115, /* 360 */ 114, 111, 75, 79, 3, 3, 3, 115, 3, 3, /* 370 */ 115, 115, 115, 111, 7, 115, 95, 91, 115, 115, /* 380 */ 78, 103, 74, 78, 115, 115, 115, 74, 3, 3, /* 390 */ 115, 115, 110, 3, 114, 102, 90, 94, 72, 3, /* 400 */ 3, 7, 114, 114, 114, 114, 114, 110, 114, 114, /* 410 */ 114, 76, 114, 114, 114, 3, 88, 72, 114, 112, /* 420 */ 108, 112, 112, 112, 92, 108, 112, 112, 112, 100, /* 430 */ 112, 112, 112, 76, 112, 112, 77, 112, 3, 105, /* 440 */ 7, 77, 105, 101, 3, 112, 86, 79, 3, 7, /* 450 */ 78, 7, 104, 107, 107, 84, 106, 3, 106, 80, /* 460 */ 76, 3, 104, 7, 73, 73, 97, 97, 3, 93, /* 470 */ 7, 7, 99, 75, 99, 98, 74, 7, 98, 96, /* 480 */ 72, 7, 65, 96, 3, 61, 65, 7, 69, 60, /* 490 */ 60, 60, 3, 89, 7, 67, 60, 60, 60, 3, /* 500 */ 7, 67, 63, 60, 3, 7, 66, 60, 60, 3, /* 510 */ 59, 62, 66, 60, 64, 60, 64, 7, 7, 7, /* 520 */ 60, 60, 7, 3, 7, 7, 7, 116, 71, 70, /* 530 */ 68, 116, 116, 4, 4, 4, 69, 116, 4, 4, /* 540 */ 4, 4, 116, 4, 71, 4, 4, 3, 70, 83, /* 550 */ 82, 4, 83, 82, 77, 60, 68, 60, 73, 87, /* 560 */ 69, 86, 70, 87, 85, 81, 84, 81, 85, 69, /* 570 */ 80, 4, 68, 71, 71, 70, 60, 68, 4, 4, /* 580 */ 4, 60, 60, 60, 60, 60, 60, 60, 4, 4, /* 590 */ 4, 4, 4, 3, 116, 4, 4, 4, 4, 116, /* 600 */ 4, 4, 4, 4, 3, 116, 4, 4, 4, 4, /* 610 */ 116, 4, 4, 4, 4, 116, 4, 4, 4, 4, /* 620 */ 116, 4, 4, 4, 4, 116, 4, 4, 4, 4, /* 630 */ 116, 4, 116, 116, 116, 7, 7, 7, 116, 7, /* 640 */ 4, 4, 116, 116, 116, 7, 4, 7, 7, 116, /* 650 */ 4, 116, 1, 4, 7, 7, 116, 116, 4, 116, /* 660 */ 116, 116, 7, 7, 116, 116, 7, 4, 4, 116, /* 670 */ 116, 116, 4, 116, 7, 116, 7, 4, 116, 116, /* 680 */ 116, 4, 7, 116, 116, 7, 4, 4, 116, 3, /* 690 */ 116, 4, 4, 3, 116, 116, 116, 116, 116, 116, /* 700 */ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, /* 710 */ 116, 116, 116, 116, }; #define YY_SHIFT_COUNT (334) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (690) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 694, 50, 68, 213, 66, 88, 94, 107, 116, 125, /* 10 */ 134, 143, 83, 83, 83, 220, 268, 272, 273, 161, /* 20 */ 161, 211, 218, 274, 279, 285, 301, 211, 274, 83, /* 30 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, /* 40 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, /* 50 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, /* 60 */ 83, 324, 327, 221, 321, 221, 221, 221, 221, 221, /* 70 */ 221, 321, 221, 221, 221, 221, 221, 221, 221, 321, /* 80 */ 330, 331, 330, 330, 330, 330, 330, 330, 331, 330, /* 90 */ 330, 330, 330, 330, 330, 336, 339, 340, 341, 344, /* 100 */ 336, 340, 330, 343, 349, 343, 343, 343, 343, 343, /* 110 */ 343, 349, 343, 343, 343, 343, 343, 343, 351, 361, /* 120 */ 362, 363, 365, 351, 362, 343, 367, 367, 366, 367, /* 130 */ 367, 367, 367, 367, 366, 367, 367, 367, 367, 367, /* 140 */ 367, 385, 386, 390, 396, 397, 385, 390, 367, 394, /* 150 */ 412, 394, 412, 435, 433, 441, 336, 433, 442, 445, /* 160 */ 351, 442, 444, 454, 385, 444, 456, 458, 456, 458, /* 170 */ 465, 463, 340, 463, 464, 362, 464, 470, 390, 470, /* 180 */ 474, 481, 474, 480, 83, 83, 83, 489, 487, 83, /* 190 */ 83, 83, 83, 496, 487, 493, 83, 83, 83, 501, /* 200 */ 493, 498, 83, 83, 506, 498, 510, 511, 512, 83, /* 210 */ 83, 515, 480, 520, 515, 520, 412, 517, 510, 441, /* 220 */ 517, 518, 511, 445, 518, 519, 512, 454, 519, 480, /* 230 */ 480, 458, 510, 510, 83, 83, 83, 511, 511, 83, /* 240 */ 83, 512, 512, 83, 83, 83, 83, 83, 83, 529, /* 250 */ 530, 531, 534, 535, 536, 537, 539, 541, 542, 547, /* 260 */ 567, 574, 544, 575, 576, 584, 585, 586, 587, 588, /* 270 */ 590, 591, 592, 593, 594, 596, 597, 598, 601, 599, /* 280 */ 602, 603, 604, 605, 607, 608, 609, 610, 612, 613, /* 290 */ 614, 615, 617, 618, 619, 620, 622, 623, 624, 625, /* 300 */ 627, 628, 629, 630, 636, 637, 632, 638, 640, 642, /* 310 */ 646, 641, 647, 648, 649, 654, 655, 656, 659, 663, /* 320 */ 664, 667, 668, 669, 673, 675, 677, 678, 682, 686, /* 330 */ 683, 687, 688, 690, 651, }; #define YY_REDUCE_COUNT (248) #define YY_REDUCE_MIN (-23) #define YY_REDUCE_MAX (527) static const short yy_reduce_ofst[] = { /* 0 */ 51, -23, 5, 32, 118, 124, 149, 151, 154, 168, /* 10 */ 171, 173, 162, 169, 175, -7, 60, 103, 177, 3, /* 20 */ 131, 167, 147, 179, 163, 172, 181, 190, 198, 40, /* 30 */ 100, 204, 71, 176, 225, -3, 224, 226, 230, 80, /* 40 */ 89, 231, 234, 184, 192, 237, 239, 241, 243, 245, /* 50 */ 247, 249, 251, 253, 254, 258, 259, 261, 265, 267, /* 60 */ 266, 14, 105, 41, 70, 216, 219, 222, 223, 227, /* 70 */ 228, 229, 232, 233, 235, 236, 238, 240, 242, 248, /* 80 */ 141, 250, 244, 252, 255, 256, 257, 260, 262, 263, /* 90 */ 264, 269, 270, 271, 275, 277, 278, 283, 281, 286, /* 100 */ 284, 287, 276, 246, 282, 280, 288, 289, 290, 291, /* 110 */ 292, 297, 294, 295, 296, 298, 299, 300, 302, 293, /* 120 */ 308, 303, 306, 305, 313, 304, 307, 309, 312, 310, /* 130 */ 311, 314, 315, 316, 317, 318, 319, 320, 322, 323, /* 140 */ 325, 335, 329, 326, 332, 328, 357, 345, 333, 334, /* 150 */ 359, 337, 364, 342, 346, 360, 368, 347, 350, 371, /* 160 */ 372, 352, 348, 379, 384, 358, 369, 391, 370, 392, /* 170 */ 376, 373, 398, 375, 377, 402, 380, 383, 408, 387, /* 180 */ 417, 424, 421, 419, 429, 430, 431, 404, 428, 14, /* 190 */ 436, 437, 438, 439, 434, 440, 443, 447, 448, 449, /* 200 */ 446, 450, 453, 455, 451, 452, 457, 459, 462, 460, /* 210 */ 461, 466, 467, 468, 469, 471, 477, 472, 473, 475, /* 220 */ 476, 479, 478, 482, 483, 484, 488, 490, 486, 491, /* 230 */ 500, 485, 502, 503, 495, 497, 516, 492, 505, 521, /* 240 */ 522, 504, 509, 523, 524, 525, 495, 526, 527, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 904, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 10 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 20 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 30 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 40 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 50 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 60 */ 707, 707, 707, 865, 707, 865, 865, 865, 865, 865, /* 70 */ 865, 707, 865, 865, 865, 865, 865, 865, 865, 707, /* 80 */ 895, 707, 895, 895, 895, 895, 895, 895, 707, 895, /* 90 */ 895, 895, 895, 895, 895, 707, 707, 707, 707, 707, /* 100 */ 707, 707, 895, 880, 707, 880, 880, 880, 880, 880, /* 110 */ 880, 707, 880, 880, 880, 880, 880, 880, 707, 707, /* 120 */ 707, 707, 707, 707, 707, 880, 850, 850, 707, 850, /* 130 */ 850, 850, 850, 850, 707, 850, 850, 850, 850, 850, /* 140 */ 850, 707, 707, 707, 707, 707, 707, 707, 850, 831, /* 150 */ 707, 831, 707, 707, 837, 707, 707, 837, 834, 707, /* 160 */ 707, 834, 828, 707, 707, 828, 815, 707, 815, 707, /* 170 */ 707, 821, 707, 821, 818, 707, 818, 812, 707, 812, /* 180 */ 753, 707, 753, 761, 707, 707, 707, 707, 757, 707, /* 190 */ 707, 707, 707, 707, 757, 755, 707, 707, 707, 707, /* 200 */ 755, 751, 707, 707, 707, 751, 765, 763, 759, 707, /* 210 */ 707, 787, 761, 707, 787, 707, 707, 793, 765, 707, /* 220 */ 793, 790, 763, 707, 790, 784, 759, 707, 784, 761, /* 230 */ 761, 707, 765, 765, 707, 707, 707, 763, 763, 707, /* 240 */ 707, 759, 759, 707, 707, 707, 748, 746, 707, 707, /* 250 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 260 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 270 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 280 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 290 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 300 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 310 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 320 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 330 */ 707, 707, 707, 707, 707, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. ** ................................................................................ ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. ** ** After the "shift" half of a SHIFTREDUCE action, the stateno field ** actually contains the reduce action for the second half of the ** SHIFTREDUCE. */ struct yyStackEntry { YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */ }; typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH int yyhwm; /* High-water mark of the stack */ #endif #ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; #ifndef NDEBUG #include <stdio.h> static FILE *yyTraceFILE = 0; ................................................................................ ** line of trace output. If NULL, then tracing is ** turned off. ** </ul> ** ** Outputs: ** None. */ void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if( yyTraceFILE==0 ) yyTracePrompt = 0; else if( yyTracePrompt==0 ) yyTraceFILE = 0; } #endif /* NDEBUG */ #if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { /* 0 */ "$", /* 1 */ "EWKT_NEWLINE", /* 2 */ "EWKT_POINT", /* 3 */ "EWKT_OPEN_BRACKET", /* 4 */ "EWKT_CLOSE_BRACKET", /* 5 */ "EWKT_POINT_M", /* 6 */ "EWKT_NUM", /* 7 */ "EWKT_COMMA", /* 8 */ "EWKT_LINESTRING", /* 9 */ "EWKT_LINESTRING_M", /* 10 */ "EWKT_POLYGON", /* 11 */ "EWKT_POLYGON_M", /* 12 */ "EWKT_MULTIPOINT", /* 13 */ "EWKT_MULTIPOINT_M", /* 14 */ "EWKT_MULTILINESTRING", /* 15 */ "EWKT_MULTILINESTRING_M", /* 16 */ "EWKT_MULTIPOLYGON", /* 17 */ "EWKT_MULTIPOLYGON_M", /* 18 */ "EWKT_GEOMETRYCOLLECTION", /* 19 */ "EWKT_GEOMETRYCOLLECTION_M", /* 20 */ "error", /* 21 */ "main", /* 22 */ "in", /* 23 */ "state", /* 24 */ "program", /* 25 */ "geo_text", /* 26 */ "geo_textm", /* 27 */ "point", /* 28 */ "pointz", /* 29 */ "pointzm", /* 30 */ "linestring", /* 31 */ "linestringz", /* 32 */ "linestringzm", /* 33 */ "polygon", /* 34 */ "polygonz", /* 35 */ "polygonzm", /* 36 */ "multipoint", /* 37 */ "multipointz", /* 38 */ "multipointzm", /* 39 */ "multilinestring", /* 40 */ "multilinestringz", /* 41 */ "multilinestringzm", /* 42 */ "multipolygon", /* 43 */ "multipolygonz", /* 44 */ "multipolygonzm", /* 45 */ "geocoll", /* 46 */ "geocollz", /* 47 */ "geocollzm", /* 48 */ "pointm", /* 49 */ "linestringm", /* 50 */ "polygonm", /* 51 */ "multipointm", /* 52 */ "multilinestringm", /* 53 */ "multipolygonm", /* 54 */ "geocollm", /* 55 */ "point_coordxy", /* 56 */ "point_coordxyz", /* 57 */ "point_coordxym", /* 58 */ "point_coordxyzm", /* 59 */ "point_brkt_coordxy", /* 60 */ "coord", /* 61 */ "point_brkt_coordxym", /* 62 */ "point_brkt_coordxyz", /* 63 */ "point_brkt_coordxyzm", /* 64 */ "extra_brkt_pointsxy", /* 65 */ "extra_brkt_pointsxym", /* 66 */ "extra_brkt_pointsxyz", /* 67 */ "extra_brkt_pointsxyzm", /* 68 */ "extra_pointsxy", /* 69 */ "extra_pointsxym", /* 70 */ "extra_pointsxyz", /* 71 */ "extra_pointsxyzm", /* 72 */ "linestring_text", /* 73 */ "linestring_textm", /* 74 */ "linestring_textz", /* 75 */ "linestring_textzm", /* 76 */ "polygon_text", /* 77 */ "polygon_textm", /* 78 */ "polygon_textz", /* 79 */ "polygon_textzm", /* 80 */ "ring", /* 81 */ "extra_rings", /* 82 */ "ringm", /* 83 */ "extra_ringsm", /* 84 */ "ringz", /* 85 */ "extra_ringsz", /* 86 */ "ringzm", /* 87 */ "extra_ringszm", /* 88 */ "multipoint_text", /* 89 */ "multipoint_textm", /* 90 */ "multipoint_textz", /* 91 */ "multipoint_textzm", /* 92 */ "multilinestring_text", /* 93 */ "multilinestring_textm", /* 94 */ "multilinestring_textz", /* 95 */ "multilinestring_textzm", /* 96 */ "multilinestring_text2", /* 97 */ "multilinestring_textm2", /* 98 */ "multilinestring_textz2", /* 99 */ "multilinestring_textzm2", /* 100 */ "multipolygon_text", /* 101 */ "multipolygon_textm", /* 102 */ "multipolygon_textz", /* 103 */ "multipolygon_textzm", /* 104 */ "multipolygon_text2", /* 105 */ "multipolygon_textm2", /* 106 */ "multipolygon_textz2", /* 107 */ "multipolygon_textzm2", /* 108 */ "geocoll_text", /* 109 */ "geocoll_textm", /* 110 */ "geocoll_textz", /* 111 */ "geocoll_textzm", /* 112 */ "geocoll_text2", /* 113 */ "geocoll_textm2", /* 114 */ "geocoll_textz2", /* 115 */ "geocoll_textzm2", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "geo_text ::= point", /* 1 */ "geo_text ::= pointz", /* 2 */ "geo_text ::= pointzm", /* 3 */ "geo_text ::= linestring", /* 4 */ "geo_text ::= linestringz", /* 5 */ "geo_text ::= linestringzm", /* 6 */ "geo_text ::= polygon", /* 7 */ "geo_text ::= polygonz", /* 8 */ "geo_text ::= polygonzm", /* 9 */ "geo_text ::= multipoint", /* 10 */ "geo_text ::= multipointz", /* 11 */ "geo_text ::= multipointzm", /* 12 */ "geo_text ::= multilinestring", /* 13 */ "geo_text ::= multilinestringz", /* 14 */ "geo_text ::= multilinestringzm", /* 15 */ "geo_text ::= multipolygon", /* 16 */ "geo_text ::= multipolygonz", /* 17 */ "geo_text ::= multipolygonzm", /* 18 */ "geo_text ::= geocoll", /* 19 */ "geo_text ::= geocollz", /* 20 */ "geo_text ::= geocollzm", /* 21 */ "geo_textm ::= pointm", /* 22 */ "geo_textm ::= linestringm", /* 23 */ "geo_textm ::= polygonm", /* 24 */ "geo_textm ::= multipointm", /* 25 */ "geo_textm ::= multilinestringm", /* 26 */ "geo_textm ::= multipolygonm", /* 27 */ "geo_textm ::= geocollm", /* 28 */ "point ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy EWKT_CLOSE_BRACKET", /* 29 */ "pointz ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz EWKT_CLOSE_BRACKET", /* 30 */ "pointm ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym EWKT_CLOSE_BRACKET", /* 31 */ "pointzm ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm EWKT_CLOSE_BRACKET", /* 32 */ "point_brkt_coordxy ::= EWKT_OPEN_BRACKET coord coord EWKT_CLOSE_BRACKET", /* 33 */ "point_brkt_coordxym ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET", /* 34 */ "point_brkt_coordxyz ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET", /* 35 */ "point_brkt_coordxyzm ::= EWKT_OPEN_BRACKET coord coord coord coord EWKT_CLOSE_BRACKET", /* 36 */ "point_coordxy ::= coord coord", /* 37 */ "point_coordxym ::= coord coord coord", /* 38 */ "point_coordxyz ::= coord coord coord", /* 39 */ "point_coordxyzm ::= coord coord coord coord", /* 40 */ "coord ::= EWKT_NUM", /* 41 */ "extra_brkt_pointsxy ::=", /* 42 */ "extra_brkt_pointsxy ::= EWKT_COMMA point_brkt_coordxy extra_brkt_pointsxy", /* 43 */ "extra_brkt_pointsxym ::=", /* 44 */ "extra_brkt_pointsxym ::= EWKT_COMMA point_brkt_coordxym extra_brkt_pointsxym", /* 45 */ "extra_brkt_pointsxyz ::=", /* 46 */ "extra_brkt_pointsxyz ::= EWKT_COMMA point_brkt_coordxyz extra_brkt_pointsxyz", /* 47 */ "extra_brkt_pointsxyzm ::=", /* 48 */ "extra_brkt_pointsxyzm ::= EWKT_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm", /* 49 */ "extra_pointsxy ::=", /* 50 */ "extra_pointsxy ::= EWKT_COMMA point_coordxy extra_pointsxy", /* 51 */ "extra_pointsxym ::=", /* 52 */ "extra_pointsxym ::= EWKT_COMMA point_coordxym extra_pointsxym", /* 53 */ "extra_pointsxyz ::=", /* 54 */ "extra_pointsxyz ::= EWKT_COMMA point_coordxyz extra_pointsxyz", /* 55 */ "extra_pointsxyzm ::=", /* 56 */ "extra_pointsxyzm ::= EWKT_COMMA point_coordxyzm extra_pointsxyzm", /* 57 */ "linestring ::= EWKT_LINESTRING linestring_text", /* 58 */ "linestringm ::= EWKT_LINESTRING_M linestring_textm", /* 59 */ "linestringz ::= EWKT_LINESTRING linestring_textz", /* 60 */ "linestringzm ::= EWKT_LINESTRING linestring_textzm", /* 61 */ "linestring_text ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", /* 62 */ "linestring_textm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", /* 63 */ "linestring_textz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", /* 64 */ "linestring_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", /* 65 */ "polygon ::= EWKT_POLYGON polygon_text", /* 66 */ "polygonm ::= EWKT_POLYGON_M polygon_textm", /* 67 */ "polygonz ::= EWKT_POLYGON polygon_textz", /* 68 */ "polygonzm ::= EWKT_POLYGON polygon_textzm", /* 69 */ "polygon_text ::= EWKT_OPEN_BRACKET ring extra_rings EWKT_CLOSE_BRACKET", /* 70 */ "polygon_textm ::= EWKT_OPEN_BRACKET ringm extra_ringsm EWKT_CLOSE_BRACKET", /* 71 */ "polygon_textz ::= EWKT_OPEN_BRACKET ringz extra_ringsz EWKT_CLOSE_BRACKET", /* 72 */ "polygon_textzm ::= EWKT_OPEN_BRACKET ringzm extra_ringszm EWKT_CLOSE_BRACKET", /* 73 */ "ring ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", /* 74 */ "extra_rings ::=", /* 75 */ "extra_rings ::= EWKT_COMMA ring extra_rings", /* 76 */ "ringm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", /* 77 */ "extra_ringsm ::=", /* 78 */ "extra_ringsm ::= EWKT_COMMA ringm extra_ringsm", /* 79 */ "ringz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", /* 80 */ "extra_ringsz ::=", /* 81 */ "extra_ringsz ::= EWKT_COMMA ringz extra_ringsz", /* 82 */ "ringzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", /* 83 */ "extra_ringszm ::=", /* 84 */ "extra_ringszm ::= EWKT_COMMA ringzm extra_ringszm", /* 85 */ "multipoint ::= EWKT_MULTIPOINT multipoint_text", /* 86 */ "multipointm ::= EWKT_MULTIPOINT_M multipoint_textm", /* 87 */ "multipointz ::= EWKT_MULTIPOINT multipoint_textz", /* 88 */ "multipointzm ::= EWKT_MULTIPOINT multipoint_textzm", /* 89 */ "multipoint_text ::= EWKT_OPEN_BRACKET point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", /* 90 */ "multipoint_textm ::= EWKT_OPEN_BRACKET point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", /* 91 */ "multipoint_textz ::= EWKT_OPEN_BRACKET point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", /* 92 */ "multipoint_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", /* 93 */ "multipoint_text ::= EWKT_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy EWKT_CLOSE_BRACKET", /* 94 */ "multipoint_textm ::= EWKT_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym EWKT_CLOSE_BRACKET", /* 95 */ "multipoint_textz ::= EWKT_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz EWKT_CLOSE_BRACKET", /* 96 */ "multipoint_textzm ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm EWKT_CLOSE_BRACKET", /* 97 */ "multilinestring ::= EWKT_MULTILINESTRING multilinestring_text", /* 98 */ "multilinestringm ::= EWKT_MULTILINESTRING_M multilinestring_textm", /* 99 */ "multilinestringz ::= EWKT_MULTILINESTRING multilinestring_textz", /* 100 */ "multilinestringzm ::= EWKT_MULTILINESTRING multilinestring_textzm", /* 101 */ "multilinestring_text ::= EWKT_OPEN_BRACKET linestring_text multilinestring_text2 EWKT_CLOSE_BRACKET", /* 102 */ "multilinestring_text2 ::=", /* 103 */ "multilinestring_text2 ::= EWKT_COMMA linestring_text multilinestring_text2", /* 104 */ "multilinestring_textm ::= EWKT_OPEN_BRACKET linestring_textm multilinestring_textm2 EWKT_CLOSE_BRACKET", /* 105 */ "multilinestring_textm2 ::=", /* 106 */ "multilinestring_textm2 ::= EWKT_COMMA linestring_textm multilinestring_textm2", /* 107 */ "multilinestring_textz ::= EWKT_OPEN_BRACKET linestring_textz multilinestring_textz2 EWKT_CLOSE_BRACKET", /* 108 */ "multilinestring_textz2 ::=", /* 109 */ "multilinestring_textz2 ::= EWKT_COMMA linestring_textz multilinestring_textz2", /* 110 */ "multilinestring_textzm ::= EWKT_OPEN_BRACKET linestring_textzm multilinestring_textzm2 EWKT_CLOSE_BRACKET", /* 111 */ "multilinestring_textzm2 ::=", /* 112 */ "multilinestring_textzm2 ::= EWKT_COMMA linestring_textzm multilinestring_textzm2", /* 113 */ "multipolygon ::= EWKT_MULTIPOLYGON multipolygon_text", /* 114 */ "multipolygonm ::= EWKT_MULTIPOLYGON_M multipolygon_textm", /* 115 */ "multipolygonz ::= EWKT_MULTIPOLYGON multipolygon_textz", /* 116 */ "multipolygonzm ::= EWKT_MULTIPOLYGON multipolygon_textzm", /* 117 */ "multipolygon_text ::= EWKT_OPEN_BRACKET polygon_text multipolygon_text2 EWKT_CLOSE_BRACKET", /* 118 */ "multipolygon_text2 ::=", /* 119 */ "multipolygon_text2 ::= EWKT_COMMA polygon_text multipolygon_text2", /* 120 */ "multipolygon_textm ::= EWKT_OPEN_BRACKET polygon_textm multipolygon_textm2 EWKT_CLOSE_BRACKET", /* 121 */ "multipolygon_textm2 ::=", /* 122 */ "multipolygon_textm2 ::= EWKT_COMMA polygon_textm multipolygon_textm2", /* 123 */ "multipolygon_textz ::= EWKT_OPEN_BRACKET polygon_textz multipolygon_textz2 EWKT_CLOSE_BRACKET", /* 124 */ "multipolygon_textz2 ::=", /* 125 */ "multipolygon_textz2 ::= EWKT_COMMA polygon_textz multipolygon_textz2", /* 126 */ "multipolygon_textzm ::= EWKT_OPEN_BRACKET polygon_textzm multipolygon_textzm2 EWKT_CLOSE_BRACKET", /* 127 */ "multipolygon_textzm2 ::=", /* 128 */ "multipolygon_textzm2 ::= EWKT_COMMA polygon_textzm multipolygon_textzm2", /* 129 */ "geocoll ::= EWKT_GEOMETRYCOLLECTION geocoll_text", /* 130 */ "geocollm ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm", /* 131 */ "geocollz ::= EWKT_GEOMETRYCOLLECTION geocoll_textz", /* 132 */ "geocollzm ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm", /* 133 */ "geocoll_text ::= EWKT_OPEN_BRACKET point geocoll_text2 EWKT_CLOSE_BRACKET", /* 134 */ "geocoll_text ::= EWKT_OPEN_BRACKET linestring geocoll_text2 EWKT_CLOSE_BRACKET", /* 135 */ "geocoll_text ::= EWKT_OPEN_BRACKET polygon geocoll_text2 EWKT_CLOSE_BRACKET", /* 136 */ "geocoll_text ::= EWKT_OPEN_BRACKET multipoint geocoll_text2 EWKT_CLOSE_BRACKET", /* 137 */ "geocoll_text ::= EWKT_OPEN_BRACKET multilinestring geocoll_text2 EWKT_CLOSE_BRACKET", /* 138 */ "geocoll_text ::= EWKT_OPEN_BRACKET multipolygon geocoll_text2 EWKT_CLOSE_BRACKET", /* 139 */ "geocoll_text ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 EWKT_CLOSE_BRACKET", /* 140 */ "geocoll_text2 ::=", /* 141 */ "geocoll_text2 ::= EWKT_COMMA point geocoll_text2", /* 142 */ "geocoll_text2 ::= EWKT_COMMA linestring geocoll_text2", /* 143 */ "geocoll_text2 ::= EWKT_COMMA polygon geocoll_text2", /* 144 */ "geocoll_text2 ::= EWKT_COMMA multipoint geocoll_text2", /* 145 */ "geocoll_text2 ::= EWKT_COMMA multilinestring geocoll_text2", /* 146 */ "geocoll_text2 ::= EWKT_COMMA multipolygon geocoll_text2", /* 147 */ "geocoll_text2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2", /* 148 */ "geocoll_textm ::= EWKT_OPEN_BRACKET pointm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 149 */ "geocoll_textm ::= EWKT_OPEN_BRACKET linestringm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 150 */ "geocoll_textm ::= EWKT_OPEN_BRACKET polygonm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 151 */ "geocoll_textm ::= EWKT_OPEN_BRACKET multipointm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 152 */ "geocoll_textm ::= EWKT_OPEN_BRACKET multilinestringm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 153 */ "geocoll_textm ::= EWKT_OPEN_BRACKET multipolygonm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 154 */ "geocoll_textm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 155 */ "geocoll_textm2 ::=", /* 156 */ "geocoll_textm2 ::= EWKT_COMMA pointm geocoll_textm2", /* 157 */ "geocoll_textm2 ::= EWKT_COMMA linestringm geocoll_textm2", /* 158 */ "geocoll_textm2 ::= EWKT_COMMA polygonm geocoll_textm2", /* 159 */ "geocoll_textm2 ::= EWKT_COMMA multipointm geocoll_textm2", /* 160 */ "geocoll_textm2 ::= EWKT_COMMA multilinestringm geocoll_textm2", /* 161 */ "geocoll_textm2 ::= EWKT_COMMA multipolygonm geocoll_textm2", /* 162 */ "geocoll_textm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2", /* 163 */ "geocoll_textz ::= EWKT_OPEN_BRACKET pointz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 164 */ "geocoll_textz ::= EWKT_OPEN_BRACKET linestringz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 165 */ "geocoll_textz ::= EWKT_OPEN_BRACKET polygonz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 166 */ "geocoll_textz ::= EWKT_OPEN_BRACKET multipointz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 167 */ "geocoll_textz ::= EWKT_OPEN_BRACKET multilinestringz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 168 */ "geocoll_textz ::= EWKT_OPEN_BRACKET multipolygonz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 169 */ "geocoll_textz ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 170 */ "geocoll_textz2 ::=", /* 171 */ "geocoll_textz2 ::= EWKT_COMMA pointz geocoll_textz2", /* 172 */ "geocoll_textz2 ::= EWKT_COMMA linestringz geocoll_textz2", /* 173 */ "geocoll_textz2 ::= EWKT_COMMA polygonz geocoll_textz2", /* 174 */ "geocoll_textz2 ::= EWKT_COMMA multipointz geocoll_textz2", /* 175 */ "geocoll_textz2 ::= EWKT_COMMA multilinestringz geocoll_textz2", /* 176 */ "geocoll_textz2 ::= EWKT_COMMA multipolygonz geocoll_textz2", /* 177 */ "geocoll_textz2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2", /* 178 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET pointzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 179 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET linestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 180 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET polygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 181 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET multipointzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 182 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET multilinestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 183 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET multipolygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 184 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 185 */ "geocoll_textzm2 ::=", /* 186 */ "geocoll_textzm2 ::= EWKT_COMMA pointzm geocoll_textzm2", /* 187 */ "geocoll_textzm2 ::= EWKT_COMMA linestringzm geocoll_textzm2", /* 188 */ "geocoll_textzm2 ::= EWKT_COMMA polygonzm geocoll_textzm2", /* 189 */ "geocoll_textzm2 ::= EWKT_COMMA multipointzm geocoll_textzm2", /* 190 */ "geocoll_textzm2 ::= EWKT_COMMA multilinestringzm geocoll_textzm2", /* 191 */ "geocoll_textzm2 ::= EWKT_COMMA multipolygonzm geocoll_textzm2", /* 192 */ "geocoll_textzm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2", /* 193 */ "main ::= in", /* 194 */ "in ::=", /* 195 */ "in ::= in state EWKT_NEWLINE", /* 196 */ "state ::= program", /* 197 */ "program ::= geo_text", /* 198 */ "program ::= geo_textm", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number ** of errors. Return 0 on success. */ static int yyGrowStack(yyParser *p){ int newSize; int idx; yyStackEntry *pNew; newSize = p->yystksz*2 + 100; idx = p->yytos ? (int)(p->yytos - p->yystack) : 0; if( p->yystack==&p->yystk0 ){ pNew = malloc(newSize*sizeof(pNew[0])); if( pNew ) pNew[0] = p->yystk0; }else{ pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); } if( pNew ){ p->yystack = pNew; p->yytos = &p->yystack[idx]; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n", yyTracePrompt, p->yystksz, newSize); } #endif p->yystksz = newSize; } return pNew==0; } #endif /* Datatype of the argument to the memory allocated passed as the ** second argument to ParseAlloc() below. This can be changed by ** putting an appropriate #define in the %include section of the input ** grammar. */ #ifndef YYMALLOCARGTYPE # define YYMALLOCARGTYPE size_t #endif /* Initialize a new parser that has already been allocated. */ static void ParseInit(void *yypParser){ yyParser *pParser = (yyParser*)yypParser; #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 pParser->yytos = NULL; pParser->yystack = NULL; pParser->yystksz = 0; if( yyGrowStack(pParser) ){ pParser->yystack = &pParser->yystk0; pParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY pParser->yyerrcnt = -1; #endif pParser->yytos = pParser->yystack; pParser->yystack[0].stateno = 0; pParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH-1]; #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like ................................................................................ ** Inputs: ** A pointer to the function used to allocate memory. ** ** Outputs: ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)){ yyParser *pParser; pParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) ); if( pParser ) ParseInit(pParser); return pParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ /* The following function deletes the "minor type" or semantic value ** associated with a symbol. The symbol can be either a terminal ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is ** a pointer to the value to be deleted. The code used to do the ** deletions is derived from the %destructor and/or %token_destructor ** directives of the input grammar. */ static void yy_destructor( yyParser *yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE *yypminor /* The object to be destroyed */ ){ ParseARG_FETCH; switch( yymajor ){ /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen ** when the symbol is popped from the stack during a ** reduce or during error processing or when a parser is ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ /********* Begin destructor definitions ***************************************/ /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } /* ** Pop the parser's stack once. ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. */ static void yy_pop_parser_stack(yyParser *pParser){ yyStackEntry *yytos; assert( pParser->yytos!=0 ); assert( pParser->yytos > pParser->yystack ); yytos = pParser->yytos--; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif yy_destructor(pParser, yytos->major, &yytos->minor); } /* ** Clear all secondary memory allocations from the parser */ static void ParseFinalize(void *p){ yyParser *pParser = (yyParser*)p; while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser); #if YYSTACKDEPTH<=0 if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack); #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** ** If the YYPARSEFREENEVERNULL macro exists (for example because it ** is defined in a %include section of the input grammar) then it is ** assumed that the input pointer is never NULL. */ void ParseFree( void *p, /* The parser to be deleted */ void (*freeProc)(void*) /* Function used to reclaim memory */ ){ #ifndef YYPARSEFREENEVERNULL if( p==0 ) return; #endif ParseFinalize(p); (*freeProc)(p); } #endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. */ #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak(void *p){ yyParser *pParser = (yyParser*)p; return pParser->yyhwm; } #endif /* This array of booleans keeps track of the parser statement ** coverage. The element yycoverage[X][Y] is set when the parser ** is in state X and has a lookahead token Y. In a well-tested ** systems, every element of this matrix should end up being set. ................................................................................ ** ** (1) has not been used by the parser, and ** (2) is not a syntax error. ** ** Return the number of missed state/lookahead combinations. */ #if defined(YYCOVERAGE) int ParseCoverage(FILE *out){ int stateno, iLookAhead, i; int nMissed = 0; for(stateno=0; stateno<YYNSTATE; stateno++){ i = yy_shift_ofst[stateno]; for(iLookAhead=0; iLookAhead<YYNTOKEN; iLookAhead++){ if( yy_lookahead[i+iLookAhead]!=iLookAhead ) continue; if( yycoverage[stateno][iLookAhead]==0 ) nMissed++; if( out ){ fprintf(out,"State %d lookahead %s %s\n", stateno, yyTokenName[iLookAhead], yycoverage[stateno][iLookAhead] ? "ok" : "missed"); } } } return nMissed; } #endif /* ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ static unsigned int yy_find_shift_action( yyParser *pParser, /* The parser */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; int stateno = pParser->yytos->stateno; if( stateno>YY_MAX_SHIFT ) return stateno; assert( stateno <= YY_SHIFT_COUNT ); #if defined(YYCOVERAGE) yycoverage[stateno][iLookAhead] = 1; #endif do{ i = yy_shift_ofst[stateno]; assert( i>=0 ); assert( i+YYNTOKEN<=(int)sizeof(yy_lookahead)/sizeof(yy_lookahead[0]) ); assert( iLookAhead!=YYNOCODE ); assert( iLookAhead < YYNTOKEN ); i += iLookAhead; if( yy_lookahead[i]!=iLookAhead ){ #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) && (iFallback = yyFallback[iLookAhead])!=0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); } #endif assert( yyFallback[iFallback]==0 ); /* Fallback loop must terminate */ iLookAhead = iFallback; continue; } #endif #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; if( #if YY_SHIFT_MIN+YYWILDCARD<0 j>=0 && #endif #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT j<YY_ACTTAB_COUNT && #endif yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ return yy_action[i]; } }while(1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ static int yy_find_reduce_action( int stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; #ifdef YYERRORSYMBOL if( stateno>YY_REDUCE_COUNT ){ return yy_default[stateno]; } #else assert( stateno<=YY_REDUCE_COUNT ); #endif i = yy_reduce_ofst[stateno]; assert( iLookAhead!=YYNOCODE ); i += iLookAhead; #ifdef YYERRORSYMBOL if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){ return yy_default[stateno]; } #else assert( i>=0 && i<YY_ACTTAB_COUNT ); assert( yy_lookahead[i]==iLookAhead ); #endif return yy_action[i]; } /* ** The following routine is called if the stack overflows. */ static void yyStackOverflow(yyParser *yypParser){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); } #endif while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ /******** Begin %stack_overflow code ******************************************/ spatialite_e( "Giving up. Parser stack overflow\n"); /******** End %stack_overflow code ********************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ } /* ** Print tracing information for a SHIFT action */ #ifndef NDEBUG static void yyTraceShift(yyParser *yypParser, int yyNewState, const char *zTag){ if( yyTraceFILE ){ if( yyNewState<YYNSTATE ){ fprintf(yyTraceFILE,"%s%s '%s', go to state %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState); }else{ fprintf(yyTraceFILE,"%s%s '%s', pending reduce %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState - YY_MIN_REDUCE); } } } #else # define yyTraceShift(X,Y,Z) #endif /* ** Perform a shift action. */ static void yy_shift( yyParser *yypParser, /* The parser to be shifted */ int yyNewState, /* The new state to shift in */ int yyMajor, /* The major token to shift in */ ParseTOKENTYPE yyMinor /* The minor token to shift in */ ){ yyStackEntry *yytos; yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) ); } #endif #if YYSTACKDEPTH>0 if( yypParser->yytos>yypParser->yystackEnd ){ yypParser->yytos--; yyStackOverflow(yypParser); return; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){ if( yyGrowStack(yypParser) ){ yypParser->yytos--; yyStackOverflow(yypParser); return; } } #endif if( yyNewState > YY_MAX_SHIFT ){ yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } yytos = yypParser->yytos; yytos->stateno = (YYACTIONTYPE)yyNewState; yytos->major = (YYCODETYPE)yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift(yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { { 25, -1 }, /* (0) geo_text ::= point */ { 25, -1 }, /* (1) geo_text ::= pointz */ { 25, -1 }, /* (2) geo_text ::= pointzm */ { 25, -1 }, /* (3) geo_text ::= linestring */ { 25, -1 }, /* (4) geo_text ::= linestringz */ { 25, -1 }, /* (5) geo_text ::= linestringzm */ { 25, -1 }, /* (6) geo_text ::= polygon */ { 25, -1 }, /* (7) geo_text ::= polygonz */ { 25, -1 }, /* (8) geo_text ::= polygonzm */ { 25, -1 }, /* (9) geo_text ::= multipoint */ { 25, -1 }, /* (10) geo_text ::= multipointz */ { 25, -1 }, /* (11) geo_text ::= multipointzm */ { 25, -1 }, /* (12) geo_text ::= multilinestring */ { 25, -1 }, /* (13) geo_text ::= multilinestringz */ { 25, -1 }, /* (14) geo_text ::= multilinestringzm */ { 25, -1 }, /* (15) geo_text ::= multipolygon */ { 25, -1 }, /* (16) geo_text ::= multipolygonz */ { 25, -1 }, /* (17) geo_text ::= multipolygonzm */ { 25, -1 }, /* (18) geo_text ::= geocoll */ { 25, -1 }, /* (19) geo_text ::= geocollz */ { 25, -1 }, /* (20) geo_text ::= geocollzm */ { 26, -1 }, /* (21) geo_textm ::= pointm */ { 26, -1 }, /* (22) geo_textm ::= linestringm */ { 26, -1 }, /* (23) geo_textm ::= polygonm */ { 26, -1 }, /* (24) geo_textm ::= multipointm */ { 26, -1 }, /* (25) geo_textm ::= multilinestringm */ { 26, -1 }, /* (26) geo_textm ::= multipolygonm */ { 26, -1 }, /* (27) geo_textm ::= geocollm */ { 27, -4 }, /* (28) point ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy EWKT_CLOSE_BRACKET */ { 28, -4 }, /* (29) pointz ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz EWKT_CLOSE_BRACKET */ { 48, -4 }, /* (30) pointm ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym EWKT_CLOSE_BRACKET */ { 29, -4 }, /* (31) pointzm ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm EWKT_CLOSE_BRACKET */ { 59, -4 }, /* (32) point_brkt_coordxy ::= EWKT_OPEN_BRACKET coord coord EWKT_CLOSE_BRACKET */ { 61, -5 }, /* (33) point_brkt_coordxym ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ { 62, -5 }, /* (34) point_brkt_coordxyz ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ { 63, -6 }, /* (35) point_brkt_coordxyzm ::= EWKT_OPEN_BRACKET coord coord coord coord EWKT_CLOSE_BRACKET */ { 55, -2 }, /* (36) point_coordxy ::= coord coord */ { 57, -3 }, /* (37) point_coordxym ::= coord coord coord */ { 56, -3 }, /* (38) point_coordxyz ::= coord coord coord */ { 58, -4 }, /* (39) point_coordxyzm ::= coord coord coord coord */ { 60, -1 }, /* (40) coord ::= EWKT_NUM */ { 64, 0 }, /* (41) extra_brkt_pointsxy ::= */ { 64, -3 }, /* (42) extra_brkt_pointsxy ::= EWKT_COMMA point_brkt_coordxy extra_brkt_pointsxy */ { 65, 0 }, /* (43) extra_brkt_pointsxym ::= */ { 65, -3 }, /* (44) extra_brkt_pointsxym ::= EWKT_COMMA point_brkt_coordxym extra_brkt_pointsxym */ { 66, 0 }, /* (45) extra_brkt_pointsxyz ::= */ { 66, -3 }, /* (46) extra_brkt_pointsxyz ::= EWKT_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ { 67, 0 }, /* (47) extra_brkt_pointsxyzm ::= */ { 67, -3 }, /* (48) extra_brkt_pointsxyzm ::= EWKT_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ { 68, 0 }, /* (49) extra_pointsxy ::= */ { 68, -3 }, /* (50) extra_pointsxy ::= EWKT_COMMA point_coordxy extra_pointsxy */ { 69, 0 }, /* (51) extra_pointsxym ::= */ { 69, -3 }, /* (52) extra_pointsxym ::= EWKT_COMMA point_coordxym extra_pointsxym */ { 70, 0 }, /* (53) extra_pointsxyz ::= */ { 70, -3 }, /* (54) extra_pointsxyz ::= EWKT_COMMA point_coordxyz extra_pointsxyz */ { 71, 0 }, /* (55) extra_pointsxyzm ::= */ { 71, -3 }, /* (56) extra_pointsxyzm ::= EWKT_COMMA point_coordxyzm extra_pointsxyzm */ { 30, -2 }, /* (57) linestring ::= EWKT_LINESTRING linestring_text */ { 49, -2 }, /* (58) linestringm ::= EWKT_LINESTRING_M linestring_textm */ { 31, -2 }, /* (59) linestringz ::= EWKT_LINESTRING linestring_textz */ { 32, -2 }, /* (60) linestringzm ::= EWKT_LINESTRING linestring_textzm */ { 72, -6 }, /* (61) linestring_text ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ { 73, -6 }, /* (62) linestring_textm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ { 74, -6 }, /* (63) linestring_textz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ { 75, -6 }, /* (64) linestring_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ { 33, -2 }, /* (65) polygon ::= EWKT_POLYGON polygon_text */ { 50, -2 }, /* (66) polygonm ::= EWKT_POLYGON_M polygon_textm */ { 34, -2 }, /* (67) polygonz ::= EWKT_POLYGON polygon_textz */ { 35, -2 }, /* (68) polygonzm ::= EWKT_POLYGON polygon_textzm */ { 76, -4 }, /* (69) polygon_text ::= EWKT_OPEN_BRACKET ring extra_rings EWKT_CLOSE_BRACKET */ { 77, -4 }, /* (70) polygon_textm ::= EWKT_OPEN_BRACKET ringm extra_ringsm EWKT_CLOSE_BRACKET */ { 78, -4 }, /* (71) polygon_textz ::= EWKT_OPEN_BRACKET ringz extra_ringsz EWKT_CLOSE_BRACKET */ { 79, -4 }, /* (72) polygon_textzm ::= EWKT_OPEN_BRACKET ringzm extra_ringszm EWKT_CLOSE_BRACKET */ { 80, -10 }, /* (73) ring ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ { 81, 0 }, /* (74) extra_rings ::= */ { 81, -3 }, /* (75) extra_rings ::= EWKT_COMMA ring extra_rings */ { 82, -10 }, /* (76) ringm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ { 83, 0 }, /* (77) extra_ringsm ::= */ { 83, -3 }, /* (78) extra_ringsm ::= EWKT_COMMA ringm extra_ringsm */ { 84, -10 }, /* (79) ringz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ { 85, 0 }, /* (80) extra_ringsz ::= */ { 85, -3 }, /* (81) extra_ringsz ::= EWKT_COMMA ringz extra_ringsz */ { 86, -10 }, /* (82) ringzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ { 87, 0 }, /* (83) extra_ringszm ::= */ { 87, -3 }, /* (84) extra_ringszm ::= EWKT_COMMA ringzm extra_ringszm */ { 36, -2 }, /* (85) multipoint ::= EWKT_MULTIPOINT multipoint_text */ { 51, -2 }, /* (86) multipointm ::= EWKT_MULTIPOINT_M multipoint_textm */ { 37, -2 }, /* (87) multipointz ::= EWKT_MULTIPOINT multipoint_textz */ { 38, -2 }, /* (88) multipointzm ::= EWKT_MULTIPOINT multipoint_textzm */ { 88, -4 }, /* (89) multipoint_text ::= EWKT_OPEN_BRACKET point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ { 89, -4 }, /* (90) multipoint_textm ::= EWKT_OPEN_BRACKET point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ { 90, -4 }, /* (91) multipoint_textz ::= EWKT_OPEN_BRACKET point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ { 91, -4 }, /* (92) multipoint_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ { 88, -4 }, /* (93) multipoint_text ::= EWKT_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy EWKT_CLOSE_BRACKET */ { 89, -4 }, /* (94) multipoint_textm ::= EWKT_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym EWKT_CLOSE_BRACKET */ { 90, -4 }, /* (95) multipoint_textz ::= EWKT_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz EWKT_CLOSE_BRACKET */ { 91, -4 }, /* (96) multipoint_textzm ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm EWKT_CLOSE_BRACKET */ { 39, -2 }, /* (97) multilinestring ::= EWKT_MULTILINESTRING multilinestring_text */ { 52, -2 }, /* (98) multilinestringm ::= EWKT_MULTILINESTRING_M multilinestring_textm */ { 40, -2 }, /* (99) multilinestringz ::= EWKT_MULTILINESTRING multilinestring_textz */ { 41, -2 }, /* (100) multilinestringzm ::= EWKT_MULTILINESTRING multilinestring_textzm */ { 92, -4 }, /* (101) multilinestring_text ::= EWKT_OPEN_BRACKET linestring_text multilinestring_text2 EWKT_CLOSE_BRACKET */ { 96, 0 }, /* (102) multilinestring_text2 ::= */ { 96, -3 }, /* (103) multilinestring_text2 ::= EWKT_COMMA linestring_text multilinestring_text2 */ { 93, -4 }, /* (104) multilinestring_textm ::= EWKT_OPEN_BRACKET linestring_textm multilinestring_textm2 EWKT_CLOSE_BRACKET */ { 97, 0 }, /* (105) multilinestring_textm2 ::= */ { 97, -3 }, /* (106) multilinestring_textm2 ::= EWKT_COMMA linestring_textm multilinestring_textm2 */ { 94, -4 }, /* (107) multilinestring_textz ::= EWKT_OPEN_BRACKET linestring_textz multilinestring_textz2 EWKT_CLOSE_BRACKET */ { 98, 0 }, /* (108) multilinestring_textz2 ::= */ { 98, -3 }, /* (109) multilinestring_textz2 ::= EWKT_COMMA linestring_textz multilinestring_textz2 */ { 95, -4 }, /* (110) multilinestring_textzm ::= EWKT_OPEN_BRACKET linestring_textzm multilinestring_textzm2 EWKT_CLOSE_BRACKET */ { 99, 0 }, /* (111) multilinestring_textzm2 ::= */ { 99, -3 }, /* (112) multilinestring_textzm2 ::= EWKT_COMMA linestring_textzm multilinestring_textzm2 */ { 42, -2 }, /* (113) multipolygon ::= EWKT_MULTIPOLYGON multipolygon_text */ { 53, -2 }, /* (114) multipolygonm ::= EWKT_MULTIPOLYGON_M multipolygon_textm */ { 43, -2 }, /* (115) multipolygonz ::= EWKT_MULTIPOLYGON multipolygon_textz */ { 44, -2 }, /* (116) multipolygonzm ::= EWKT_MULTIPOLYGON multipolygon_textzm */ { 100, -4 }, /* (117) multipolygon_text ::= EWKT_OPEN_BRACKET polygon_text multipolygon_text2 EWKT_CLOSE_BRACKET */ { 104, 0 }, /* (118) multipolygon_text2 ::= */ { 104, -3 }, /* (119) multipolygon_text2 ::= EWKT_COMMA polygon_text multipolygon_text2 */ { 101, -4 }, /* (120) multipolygon_textm ::= EWKT_OPEN_BRACKET polygon_textm multipolygon_textm2 EWKT_CLOSE_BRACKET */ { 105, 0 }, /* (121) multipolygon_textm2 ::= */ { 105, -3 }, /* (122) multipolygon_textm2 ::= EWKT_COMMA polygon_textm multipolygon_textm2 */ { 102, -4 }, /* (123) multipolygon_textz ::= EWKT_OPEN_BRACKET polygon_textz multipolygon_textz2 EWKT_CLOSE_BRACKET */ { 106, 0 }, /* (124) multipolygon_textz2 ::= */ { 106, -3 }, /* (125) multipolygon_textz2 ::= EWKT_COMMA polygon_textz multipolygon_textz2 */ { 103, -4 }, /* (126) multipolygon_textzm ::= EWKT_OPEN_BRACKET polygon_textzm multipolygon_textzm2 EWKT_CLOSE_BRACKET */ { 107, 0 }, /* (127) multipolygon_textzm2 ::= */ { 107, -3 }, /* (128) multipolygon_textzm2 ::= EWKT_COMMA polygon_textzm multipolygon_textzm2 */ { 45, -2 }, /* (129) geocoll ::= EWKT_GEOMETRYCOLLECTION geocoll_text */ { 54, -2 }, /* (130) geocollm ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm */ { 46, -2 }, /* (131) geocollz ::= EWKT_GEOMETRYCOLLECTION geocoll_textz */ { 47, -2 }, /* (132) geocollzm ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm */ { 108, -4 }, /* (133) geocoll_text ::= EWKT_OPEN_BRACKET point geocoll_text2 EWKT_CLOSE_BRACKET */ { 108, -4 }, /* (134) geocoll_text ::= EWKT_OPEN_BRACKET linestring geocoll_text2 EWKT_CLOSE_BRACKET */ { 108, -4 }, /* (135) geocoll_text ::= EWKT_OPEN_BRACKET polygon geocoll_text2 EWKT_CLOSE_BRACKET */ { 108, -4 }, /* (136) geocoll_text ::= EWKT_OPEN_BRACKET multipoint geocoll_text2 EWKT_CLOSE_BRACKET */ { 108, -4 }, /* (137) geocoll_text ::= EWKT_OPEN_BRACKET multilinestring geocoll_text2 EWKT_CLOSE_BRACKET */ { 108, -4 }, /* (138) geocoll_text ::= EWKT_OPEN_BRACKET multipolygon geocoll_text2 EWKT_CLOSE_BRACKET */ { 108, -5 }, /* (139) geocoll_text ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 EWKT_CLOSE_BRACKET */ { 112, 0 }, /* (140) geocoll_text2 ::= */ { 112, -3 }, /* (141) geocoll_text2 ::= EWKT_COMMA point geocoll_text2 */ { 112, -3 }, /* (142) geocoll_text2 ::= EWKT_COMMA linestring geocoll_text2 */ { 112, -3 }, /* (143) geocoll_text2 ::= EWKT_COMMA polygon geocoll_text2 */ { 112, -3 }, /* (144) geocoll_text2 ::= EWKT_COMMA multipoint geocoll_text2 */ { 112, -3 }, /* (145) geocoll_text2 ::= EWKT_COMMA multilinestring geocoll_text2 */ { 112, -3 }, /* (146) geocoll_text2 ::= EWKT_COMMA multipolygon geocoll_text2 */ { 112, -4 }, /* (147) geocoll_text2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ { 109, -4 }, /* (148) geocoll_textm ::= EWKT_OPEN_BRACKET pointm geocoll_textm2 EWKT_CLOSE_BRACKET */ { 109, -4 }, /* (149) geocoll_textm ::= EWKT_OPEN_BRACKET linestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ { 109, -4 }, /* (150) geocoll_textm ::= EWKT_OPEN_BRACKET polygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ { 109, -4 }, /* (151) geocoll_textm ::= EWKT_OPEN_BRACKET multipointm geocoll_textm2 EWKT_CLOSE_BRACKET */ { 109, -4 }, /* (152) geocoll_textm ::= EWKT_OPEN_BRACKET multilinestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ { 109, -4 }, /* (153) geocoll_textm ::= EWKT_OPEN_BRACKET multipolygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ { 109, -5 }, /* (154) geocoll_textm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 EWKT_CLOSE_BRACKET */ { 113, 0 }, /* (155) geocoll_textm2 ::= */ { 113, -3 }, /* (156) geocoll_textm2 ::= EWKT_COMMA pointm geocoll_textm2 */ { 113, -3 }, /* (157) geocoll_textm2 ::= EWKT_COMMA linestringm geocoll_textm2 */ { 113, -3 }, /* (158) geocoll_textm2 ::= EWKT_COMMA polygonm geocoll_textm2 */ { 113, -3 }, /* (159) geocoll_textm2 ::= EWKT_COMMA multipointm geocoll_textm2 */ { 113, -3 }, /* (160) geocoll_textm2 ::= EWKT_COMMA multilinestringm geocoll_textm2 */ { 113, -3 }, /* (161) geocoll_textm2 ::= EWKT_COMMA multipolygonm geocoll_textm2 */ { 113, -4 }, /* (162) geocoll_textm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ { 110, -4 }, /* (163) geocoll_textz ::= EWKT_OPEN_BRACKET pointz geocoll_textz2 EWKT_CLOSE_BRACKET */ { 110, -4 }, /* (164) geocoll_textz ::= EWKT_OPEN_BRACKET linestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ { 110, -4 }, /* (165) geocoll_textz ::= EWKT_OPEN_BRACKET polygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ { 110, -4 }, /* (166) geocoll_textz ::= EWKT_OPEN_BRACKET multipointz geocoll_textz2 EWKT_CLOSE_BRACKET */ { 110, -4 }, /* (167) geocoll_textz ::= EWKT_OPEN_BRACKET multilinestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ { 110, -4 }, /* (168) geocoll_textz ::= EWKT_OPEN_BRACKET multipolygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ { 110, -5 }, /* (169) geocoll_textz ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 EWKT_CLOSE_BRACKET */ { 114, 0 }, /* (170) geocoll_textz2 ::= */ { 114, -3 }, /* (171) geocoll_textz2 ::= EWKT_COMMA pointz geocoll_textz2 */ { 114, -3 }, /* (172) geocoll_textz2 ::= EWKT_COMMA linestringz geocoll_textz2 */ { 114, -3 }, /* (173) geocoll_textz2 ::= EWKT_COMMA polygonz geocoll_textz2 */ { 114, -3 }, /* (174) geocoll_textz2 ::= EWKT_COMMA multipointz geocoll_textz2 */ { 114, -3 }, /* (175) geocoll_textz2 ::= EWKT_COMMA multilinestringz geocoll_textz2 */ { 114, -3 }, /* (176) geocoll_textz2 ::= EWKT_COMMA multipolygonz geocoll_textz2 */ { 114, -4 }, /* (177) geocoll_textz2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 */ { 111, -4 }, /* (178) geocoll_textzm ::= EWKT_OPEN_BRACKET pointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ { 111, -4 }, /* (179) geocoll_textzm ::= EWKT_OPEN_BRACKET linestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ { 111, -4 }, /* (180) geocoll_textzm ::= EWKT_OPEN_BRACKET polygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ { 111, -4 }, /* (181) geocoll_textzm ::= EWKT_OPEN_BRACKET multipointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ { 111, -4 }, /* (182) geocoll_textzm ::= EWKT_OPEN_BRACKET multilinestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ { 111, -4 }, /* (183) geocoll_textzm ::= EWKT_OPEN_BRACKET multipolygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ { 111, -5 }, /* (184) geocoll_textzm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ { 115, 0 }, /* (185) geocoll_textzm2 ::= */ { 115, -3 }, /* (186) geocoll_textzm2 ::= EWKT_COMMA pointzm geocoll_textzm2 */ { 115, -3 }, /* (187) geocoll_textzm2 ::= EWKT_COMMA linestringzm geocoll_textzm2 */ { 115, -3 }, /* (188) geocoll_textzm2 ::= EWKT_COMMA polygonzm geocoll_textzm2 */ { 115, -3 }, /* (189) geocoll_textzm2 ::= EWKT_COMMA multipointzm geocoll_textzm2 */ { 115, -3 }, /* (190) geocoll_textzm2 ::= EWKT_COMMA multilinestringzm geocoll_textzm2 */ { 115, -3 }, /* (191) geocoll_textzm2 ::= EWKT_COMMA multipolygonzm geocoll_textzm2 */ { 115, -4 }, /* (192) geocoll_textzm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 */ { 21, -1 }, /* (193) main ::= in */ { 22, 0 }, /* (194) in ::= */ { 22, -3 }, /* (195) in ::= in state EWKT_NEWLINE */ { 23, -1 }, /* (196) state ::= program */ { 24, -1 }, /* (197) program ::= geo_text */ { 24, -1 }, /* (198) program ::= geo_textm */ }; static void yy_accept(yyParser*); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. ** ** The yyLookahead and yyLookaheadToken parameters provide reduce actions ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE ** if the lookahead token has already been consumed. As this procedure is ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ static void yy_reduce( yyParser *yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ ){ int yygoto; /* The next state */ int yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ ParseARG_FETCH; (void)yyLookahead; (void)yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ yysize = yyRuleInfo[yyruleno].nrhs; if( yysize ){ fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); }else{ fprintf(yyTraceFILE, "%sReduce %d [%s].\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno]); } } #endif /* NDEBUG */ /* Check that the stack is large enough to grow by a single entry ** if the RHS of the rule is empty. This ensures that there is room ** enough on the stack to push the LHS value */ if( yyRuleInfo[yyruleno].nrhs==0 ){ #ifdef YYTRACKMAXSTACKDEPTH if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if( yypParser->yytos>=yypParser->yystackEnd ){ yyStackOverflow(yypParser); return; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ if( yyGrowStack(yypParser) ){ yyStackOverflow(yypParser); return; } yymsp = yypParser->yytos; } #endif } switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* geo_text ::= point */ case 1: /* geo_text ::= pointz */ yytestcase(yyruleno==1); case 2: /* geo_text ::= pointzm */ yytestcase(yyruleno==2); case 3: /* geo_text ::= linestring */ yytestcase(yyruleno==3); case 4: /* geo_text ::= linestringz */ yytestcase(yyruleno==4); case 5: /* geo_text ::= linestringzm */ yytestcase(yyruleno==5); case 6: /* geo_text ::= polygon */ yytestcase(yyruleno==6); case 7: /* geo_text ::= polygonz */ yytestcase(yyruleno==7); case 8: /* geo_text ::= polygonzm */ yytestcase(yyruleno==8); case 9: /* geo_text ::= multipoint */ yytestcase(yyruleno==9); case 10: /* geo_text ::= multipointz */ yytestcase(yyruleno==10); case 11: /* geo_text ::= multipointzm */ yytestcase(yyruleno==11); case 12: /* geo_text ::= multilinestring */ yytestcase(yyruleno==12); case 13: /* geo_text ::= multilinestringz */ yytestcase(yyruleno==13); case 14: /* geo_text ::= multilinestringzm */ yytestcase(yyruleno==14); case 15: /* geo_text ::= multipolygon */ yytestcase(yyruleno==15); case 16: /* geo_text ::= multipolygonz */ yytestcase(yyruleno==16); case 17: /* geo_text ::= multipolygonzm */ yytestcase(yyruleno==17); case 18: /* geo_text ::= geocoll */ yytestcase(yyruleno==18); case 19: /* geo_text ::= geocollz */ yytestcase(yyruleno==19); case 20: /* geo_text ::= geocollzm */ yytestcase(yyruleno==20); case 21: /* geo_textm ::= pointm */ yytestcase(yyruleno==21); case 22: /* geo_textm ::= linestringm */ yytestcase(yyruleno==22); case 23: /* geo_textm ::= polygonm */ yytestcase(yyruleno==23); case 24: /* geo_textm ::= multipointm */ yytestcase(yyruleno==24); case 25: /* geo_textm ::= multilinestringm */ yytestcase(yyruleno==25); case 26: /* geo_textm ::= multipolygonm */ yytestcase(yyruleno==26); case 27: /* geo_textm ::= geocollm */ yytestcase(yyruleno==27); { p_data->result = yymsp[0].minor.yy0; } break; case 28: /* point ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy EWKT_CLOSE_BRACKET */ case 29: /* pointz ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==29); case 31: /* pointzm ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==31); { yymsp[-3].minor.yy0 = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } break; case 30: /* pointm ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym EWKT_CLOSE_BRACKET */ { yymsp[-3].minor.yy0 = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } break; case 32: /* point_brkt_coordxy ::= EWKT_OPEN_BRACKET coord coord EWKT_CLOSE_BRACKET */ { yymsp[-3].minor.yy0 = (void *) ewkt_point_xy( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } break; case 33: /* point_brkt_coordxym ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ { yymsp[-4].minor.yy0 = (void *) ewkt_point_xym( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } break; case 34: /* point_brkt_coordxyz ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ { yymsp[-4].minor.yy0 = (void *) ewkt_point_xyz( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } break; case 35: /* point_brkt_coordxyzm ::= EWKT_OPEN_BRACKET coord coord coord coord EWKT_CLOSE_BRACKET */ { yymsp[-5].minor.yy0 = (void *) ewkt_point_xyzm( p_data, (double *)yymsp[-4].minor.yy0, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } break; case 36: /* point_coordxy ::= coord coord */ { yylhsminor.yy0 = (void *) ewkt_point_xy( p_data, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 37: /* point_coordxym ::= coord coord coord */ { yylhsminor.yy0 = (void *) ewkt_point_xym( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 38: /* point_coordxyz ::= coord coord coord */ { yylhsminor.yy0 = (void *) ewkt_point_xyz( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 39: /* point_coordxyzm ::= coord coord coord coord */ { yylhsminor.yy0 = (void *) ewkt_point_xyzm( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 40: /* coord ::= EWKT_NUM */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 41: /* extra_brkt_pointsxy ::= */ case 43: /* extra_brkt_pointsxym ::= */ yytestcase(yyruleno==43); case 45: /* extra_brkt_pointsxyz ::= */ yytestcase(yyruleno==45); case 47: /* extra_brkt_pointsxyzm ::= */ yytestcase(yyruleno==47); case 49: /* extra_pointsxy ::= */ yytestcase(yyruleno==49); case 51: /* extra_pointsxym ::= */ yytestcase(yyruleno==51); case 53: /* extra_pointsxyz ::= */ yytestcase(yyruleno==53); case 55: /* extra_pointsxyzm ::= */ yytestcase(yyruleno==55); case 74: /* extra_rings ::= */ yytestcase(yyruleno==74); case 77: /* extra_ringsm ::= */ yytestcase(yyruleno==77); case 80: /* extra_ringsz ::= */ yytestcase(yyruleno==80); case 83: /* extra_ringszm ::= */ yytestcase(yyruleno==83); case 102: /* multilinestring_text2 ::= */ yytestcase(yyruleno==102); case 105: /* multilinestring_textm2 ::= */ yytestcase(yyruleno==105); case 108: /* multilinestring_textz2 ::= */ yytestcase(yyruleno==108); case 111: /* multilinestring_textzm2 ::= */ yytestcase(yyruleno==111); case 118: /* multipolygon_text2 ::= */ yytestcase(yyruleno==118); case 121: /* multipolygon_textm2 ::= */ yytestcase(yyruleno==121); case 124: /* multipolygon_textz2 ::= */ yytestcase(yyruleno==124); case 127: /* multipolygon_textzm2 ::= */ yytestcase(yyruleno==127); case 140: /* geocoll_text2 ::= */ yytestcase(yyruleno==140); case 155: /* geocoll_textm2 ::= */ yytestcase(yyruleno==155); case 170: /* geocoll_textz2 ::= */ yytestcase(yyruleno==170); case 185: /* geocoll_textzm2 ::= */ yytestcase(yyruleno==185); { yymsp[1].minor.yy0 = NULL; } break; case 42: /* extra_brkt_pointsxy ::= EWKT_COMMA point_brkt_coordxy extra_brkt_pointsxy */ case 44: /* extra_brkt_pointsxym ::= EWKT_COMMA point_brkt_coordxym extra_brkt_pointsxym */ yytestcase(yyruleno==44); case 46: /* extra_brkt_pointsxyz ::= EWKT_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ yytestcase(yyruleno==46); case 48: /* extra_brkt_pointsxyzm ::= EWKT_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ yytestcase(yyruleno==48); case 50: /* extra_pointsxy ::= EWKT_COMMA point_coordxy extra_pointsxy */ yytestcase(yyruleno==50); case 52: /* extra_pointsxym ::= EWKT_COMMA point_coordxym extra_pointsxym */ yytestcase(yyruleno==52); case 54: /* extra_pointsxyz ::= EWKT_COMMA point_coordxyz extra_pointsxyz */ yytestcase(yyruleno==54); case 56: /* extra_pointsxyzm ::= EWKT_COMMA point_coordxyzm extra_pointsxyzm */ yytestcase(yyruleno==56); { ((gaiaPointPtr)yymsp[-1].minor.yy0)->Next = (gaiaPointPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 57: /* linestring ::= EWKT_LINESTRING linestring_text */ case 58: /* linestringm ::= EWKT_LINESTRING_M linestring_textm */ yytestcase(yyruleno==58); case 59: /* linestringz ::= EWKT_LINESTRING linestring_textz */ yytestcase(yyruleno==59); case 60: /* linestringzm ::= EWKT_LINESTRING linestring_textzm */ yytestcase(yyruleno==60); { yymsp[-1].minor.yy0 = ewkt_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)yymsp[0].minor.yy0); } break; case 61: /* linestring_text ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) ewkt_linestring_xy( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); } break; case 62: /* linestring_textm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) ewkt_linestring_xym( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); } break; case 63: /* linestring_textz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) ewkt_linestring_xyz( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); } break; case 64: /* linestring_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) ewkt_linestring_xyzm( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); } break; case 65: /* polygon ::= EWKT_POLYGON polygon_text */ case 66: /* polygonm ::= EWKT_POLYGON_M polygon_textm */ yytestcase(yyruleno==66); case 67: /* polygonz ::= EWKT_POLYGON polygon_textz */ yytestcase(yyruleno==67); case 68: /* polygonzm ::= EWKT_POLYGON polygon_textzm */ yytestcase(yyruleno==68); { yymsp[-1].minor.yy0 = ewkt_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)yymsp[0].minor.yy0); } break; case 69: /* polygon_text ::= EWKT_OPEN_BRACKET ring extra_rings EWKT_CLOSE_BRACKET */ { ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_polygon_xy( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); } break; case 70: /* polygon_textm ::= EWKT_OPEN_BRACKET ringm extra_ringsm EWKT_CLOSE_BRACKET */ { ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_polygon_xym( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); } break; case 71: /* polygon_textz ::= EWKT_OPEN_BRACKET ringz extra_ringsz EWKT_CLOSE_BRACKET */ { ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_polygon_xyz( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); } break; case 72: /* polygon_textzm ::= EWKT_OPEN_BRACKET ringzm extra_ringszm EWKT_CLOSE_BRACKET */ { ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_polygon_xyzm( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); } break; case 73: /* ring ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) ewkt_ring_xy( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); } break; case 75: /* extra_rings ::= EWKT_COMMA ring extra_rings */ case 78: /* extra_ringsm ::= EWKT_COMMA ringm extra_ringsm */ yytestcase(yyruleno==78); case 81: /* extra_ringsz ::= EWKT_COMMA ringz extra_ringsz */ yytestcase(yyruleno==81); case 84: /* extra_ringszm ::= EWKT_COMMA ringzm extra_ringszm */ yytestcase(yyruleno==84); { ((gaiaRingPtr)yymsp[-1].minor.yy0)->Next = (gaiaRingPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 76: /* ringm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) ewkt_ring_xym( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); } break; case 79: /* ringz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) ewkt_ring_xyz( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); } break; case 82: /* ringzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) ewkt_ring_xyzm( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); } break; case 85: /* multipoint ::= EWKT_MULTIPOINT multipoint_text */ case 86: /* multipointm ::= EWKT_MULTIPOINT_M multipoint_textm */ yytestcase(yyruleno==86); case 87: /* multipointz ::= EWKT_MULTIPOINT multipoint_textz */ yytestcase(yyruleno==87); case 88: /* multipointzm ::= EWKT_MULTIPOINT multipoint_textzm */ yytestcase(yyruleno==88); case 97: /* multilinestring ::= EWKT_MULTILINESTRING multilinestring_text */ yytestcase(yyruleno==97); case 98: /* multilinestringm ::= EWKT_MULTILINESTRING_M multilinestring_textm */ yytestcase(yyruleno==98); case 99: /* multilinestringz ::= EWKT_MULTILINESTRING multilinestring_textz */ yytestcase(yyruleno==99); case 100: /* multilinestringzm ::= EWKT_MULTILINESTRING multilinestring_textzm */ yytestcase(yyruleno==100); case 113: /* multipolygon ::= EWKT_MULTIPOLYGON multipolygon_text */ yytestcase(yyruleno==113); case 114: /* multipolygonm ::= EWKT_MULTIPOLYGON_M multipolygon_textm */ yytestcase(yyruleno==114); case 115: /* multipolygonz ::= EWKT_MULTIPOLYGON multipolygon_textz */ yytestcase(yyruleno==115); case 116: /* multipolygonzm ::= EWKT_MULTIPOLYGON multipolygon_textzm */ yytestcase(yyruleno==116); case 129: /* geocoll ::= EWKT_GEOMETRYCOLLECTION geocoll_text */ yytestcase(yyruleno==129); case 130: /* geocollm ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm */ yytestcase(yyruleno==130); case 131: /* geocollz ::= EWKT_GEOMETRYCOLLECTION geocoll_textz */ yytestcase(yyruleno==131); case 132: /* geocollzm ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm */ yytestcase(yyruleno==132); { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 89: /* multipoint_text ::= EWKT_OPEN_BRACKET point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ case 93: /* multipoint_text ::= EWKT_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==93); { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipoint_xy( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); } break; case 90: /* multipoint_textm ::= EWKT_OPEN_BRACKET point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ case 94: /* multipoint_textm ::= EWKT_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==94); { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipoint_xym( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); } break; case 91: /* multipoint_textz ::= EWKT_OPEN_BRACKET point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ case 95: /* multipoint_textz ::= EWKT_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==95); { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipoint_xyz( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); } break; case 92: /* multipoint_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ case 96: /* multipoint_textzm ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==96); { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipoint_xyzm( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); } break; case 101: /* multilinestring_text ::= EWKT_OPEN_BRACKET linestring_text multilinestring_text2 EWKT_CLOSE_BRACKET */ { ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multilinestring_xy( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); } break; case 103: /* multilinestring_text2 ::= EWKT_COMMA linestring_text multilinestring_text2 */ case 106: /* multilinestring_textm2 ::= EWKT_COMMA linestring_textm multilinestring_textm2 */ yytestcase(yyruleno==106); case 109: /* multilinestring_textz2 ::= EWKT_COMMA linestring_textz multilinestring_textz2 */ yytestcase(yyruleno==109); case 112: /* multilinestring_textzm2 ::= EWKT_COMMA linestring_textzm multilinestring_textzm2 */ yytestcase(yyruleno==112); { ((gaiaLinestringPtr)yymsp[-1].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 104: /* multilinestring_textm ::= EWKT_OPEN_BRACKET linestring_textm multilinestring_textm2 EWKT_CLOSE_BRACKET */ { ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multilinestring_xym( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); } break; case 107: /* multilinestring_textz ::= EWKT_OPEN_BRACKET linestring_textz multilinestring_textz2 EWKT_CLOSE_BRACKET */ { ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multilinestring_xyz( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); } break; case 110: /* multilinestring_textzm ::= EWKT_OPEN_BRACKET linestring_textzm multilinestring_textzm2 EWKT_CLOSE_BRACKET */ { ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multilinestring_xyzm( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); } break; case 117: /* multipolygon_text ::= EWKT_OPEN_BRACKET polygon_text multipolygon_text2 EWKT_CLOSE_BRACKET */ { ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipolygon_xy( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); } break; case 119: /* multipolygon_text2 ::= EWKT_COMMA polygon_text multipolygon_text2 */ case 122: /* multipolygon_textm2 ::= EWKT_COMMA polygon_textm multipolygon_textm2 */ yytestcase(yyruleno==122); case 125: /* multipolygon_textz2 ::= EWKT_COMMA polygon_textz multipolygon_textz2 */ yytestcase(yyruleno==125); case 128: /* multipolygon_textzm2 ::= EWKT_COMMA polygon_textzm multipolygon_textzm2 */ yytestcase(yyruleno==128); { ((gaiaPolygonPtr)yymsp[-1].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 120: /* multipolygon_textm ::= EWKT_OPEN_BRACKET polygon_textm multipolygon_textm2 EWKT_CLOSE_BRACKET */ { ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipolygon_xym( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); } break; case 123: /* multipolygon_textz ::= EWKT_OPEN_BRACKET polygon_textz multipolygon_textz2 EWKT_CLOSE_BRACKET */ { ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipolygon_xyz( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); } break; case 126: /* multipolygon_textzm ::= EWKT_OPEN_BRACKET polygon_textzm multipolygon_textzm2 EWKT_CLOSE_BRACKET */ { ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipolygon_xyzm( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); } break; case 133: /* geocoll_text ::= EWKT_OPEN_BRACKET point geocoll_text2 EWKT_CLOSE_BRACKET */ case 134: /* geocoll_text ::= EWKT_OPEN_BRACKET linestring geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==134); case 135: /* geocoll_text ::= EWKT_OPEN_BRACKET polygon geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==135); case 136: /* geocoll_text ::= EWKT_OPEN_BRACKET multipoint geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==136); case 137: /* geocoll_text ::= EWKT_OPEN_BRACKET multilinestring geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==137); case 138: /* geocoll_text ::= EWKT_OPEN_BRACKET multipolygon geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==138); { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 139: /* geocoll_text ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 EWKT_CLOSE_BRACKET */ { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 141: /* geocoll_text2 ::= EWKT_COMMA point geocoll_text2 */ case 142: /* geocoll_text2 ::= EWKT_COMMA linestring geocoll_text2 */ yytestcase(yyruleno==142); case 143: /* geocoll_text2 ::= EWKT_COMMA polygon geocoll_text2 */ yytestcase(yyruleno==143); case 144: /* geocoll_text2 ::= EWKT_COMMA multipoint geocoll_text2 */ yytestcase(yyruleno==144); case 145: /* geocoll_text2 ::= EWKT_COMMA multilinestring geocoll_text2 */ yytestcase(yyruleno==145); case 146: /* geocoll_text2 ::= EWKT_COMMA multipolygon geocoll_text2 */ yytestcase(yyruleno==146); case 156: /* geocoll_textm2 ::= EWKT_COMMA pointm geocoll_textm2 */ yytestcase(yyruleno==156); case 157: /* geocoll_textm2 ::= EWKT_COMMA linestringm geocoll_textm2 */ yytestcase(yyruleno==157); case 158: /* geocoll_textm2 ::= EWKT_COMMA polygonm geocoll_textm2 */ yytestcase(yyruleno==158); case 159: /* geocoll_textm2 ::= EWKT_COMMA multipointm geocoll_textm2 */ yytestcase(yyruleno==159); case 160: /* geocoll_textm2 ::= EWKT_COMMA multilinestringm geocoll_textm2 */ yytestcase(yyruleno==160); case 161: /* geocoll_textm2 ::= EWKT_COMMA multipolygonm geocoll_textm2 */ yytestcase(yyruleno==161); case 171: /* geocoll_textz2 ::= EWKT_COMMA pointz geocoll_textz2 */ yytestcase(yyruleno==171); case 172: /* geocoll_textz2 ::= EWKT_COMMA linestringz geocoll_textz2 */ yytestcase(yyruleno==172); case 173: /* geocoll_textz2 ::= EWKT_COMMA polygonz geocoll_textz2 */ yytestcase(yyruleno==173); case 174: /* geocoll_textz2 ::= EWKT_COMMA multipointz geocoll_textz2 */ yytestcase(yyruleno==174); case 175: /* geocoll_textz2 ::= EWKT_COMMA multilinestringz geocoll_textz2 */ yytestcase(yyruleno==175); case 176: /* geocoll_textz2 ::= EWKT_COMMA multipolygonz geocoll_textz2 */ yytestcase(yyruleno==176); case 186: /* geocoll_textzm2 ::= EWKT_COMMA pointzm geocoll_textzm2 */ yytestcase(yyruleno==186); case 187: /* geocoll_textzm2 ::= EWKT_COMMA linestringzm geocoll_textzm2 */ yytestcase(yyruleno==187); case 188: /* geocoll_textzm2 ::= EWKT_COMMA polygonzm geocoll_textzm2 */ yytestcase(yyruleno==188); case 189: /* geocoll_textzm2 ::= EWKT_COMMA multipointzm geocoll_textzm2 */ yytestcase(yyruleno==189); case 190: /* geocoll_textzm2 ::= EWKT_COMMA multilinestringzm geocoll_textzm2 */ yytestcase(yyruleno==190); case 191: /* geocoll_textzm2 ::= EWKT_COMMA multipolygonzm geocoll_textzm2 */ yytestcase(yyruleno==191); { ((gaiaGeomCollPtr)yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 147: /* geocoll_text2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ case 162: /* geocoll_textm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ yytestcase(yyruleno==162); case 177: /* geocoll_textz2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 */ yytestcase(yyruleno==177); case 192: /* geocoll_textzm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 */ yytestcase(yyruleno==192); { ((gaiaGeomCollPtr)yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[0].minor.yy0; yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; case 148: /* geocoll_textm ::= EWKT_OPEN_BRACKET pointm geocoll_textm2 EWKT_CLOSE_BRACKET */ case 149: /* geocoll_textm ::= EWKT_OPEN_BRACKET linestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==149); case 150: /* geocoll_textm ::= EWKT_OPEN_BRACKET polygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==150); case 151: /* geocoll_textm ::= EWKT_OPEN_BRACKET multipointm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==151); case 152: /* geocoll_textm ::= EWKT_OPEN_BRACKET multilinestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==152); case 153: /* geocoll_textm ::= EWKT_OPEN_BRACKET multipolygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==153); { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 154: /* geocoll_textm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 EWKT_CLOSE_BRACKET */ { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 163: /* geocoll_textz ::= EWKT_OPEN_BRACKET pointz geocoll_textz2 EWKT_CLOSE_BRACKET */ case 164: /* geocoll_textz ::= EWKT_OPEN_BRACKET linestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==164); case 165: /* geocoll_textz ::= EWKT_OPEN_BRACKET polygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==165); case 166: /* geocoll_textz ::= EWKT_OPEN_BRACKET multipointz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==166); case 167: /* geocoll_textz ::= EWKT_OPEN_BRACKET multilinestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==167); case 168: /* geocoll_textz ::= EWKT_OPEN_BRACKET multipolygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==168); { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 169: /* geocoll_textz ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 EWKT_CLOSE_BRACKET */ { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 178: /* geocoll_textzm ::= EWKT_OPEN_BRACKET pointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ case 179: /* geocoll_textzm ::= EWKT_OPEN_BRACKET linestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==179); case 180: /* geocoll_textzm ::= EWKT_OPEN_BRACKET polygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==180); case 181: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multipointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==181); case 182: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multilinestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==182); case 183: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multipolygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==183); { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 184: /* geocoll_textzm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; default: /* (193) main ::= in */ yytestcase(yyruleno==193); /* (194) in ::= */ yytestcase(yyruleno==194); /* (195) in ::= in state EWKT_NEWLINE */ yytestcase(yyruleno==195); /* (196) state ::= program (OPTIMIZED OUT) */ assert(yyruleno!=196); /* (197) program ::= geo_text (OPTIMIZED OUT) */ assert(yyruleno!=197); /* (198) program ::= geo_textm (OPTIMIZED OUT) */ assert(yyruleno!=198); break; /********** End reduce actions ************************************************/ }; assert( yyruleno<sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0]) ); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto); /* There are no SHIFTREDUCE actions on nonterminals because the table ** generator has simplified them to pure REDUCE actions. */ assert( !(yyact>YY_MAX_SHIFT && yyact<=YY_MAX_SHIFTREDUCE) ); /* It is not possible for a REDUCE to be followed by an error */ assert( yyact!=YY_ERROR_ACTION ); yymsp += yysize+1; yypParser->yytos = yymsp; yymsp->stateno = (YYACTIONTYPE)yyact; yymsp->major = (YYCODETYPE)yygoto; yyTraceShift(yypParser, yyact, "... then shift"); } /* ** The following code executes when the parse fails */ #ifndef YYNOERRORRECOVERY static void yy_parse_failed( yyParser *yypParser /* The parser */ ){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); } #endif while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } #endif /* YYNOERRORRECOVERY */ /* ** The following code executes when a syntax error first occurs. */ static void yy_syntax_error( yyParser *yypParser, /* The parser */ int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ){ ParseARG_FETCH; #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ /* ** when the LEMON parser encounters an error ** then this global variable is set */ p_data->ewkt_parse_error = 1; p_data->result = NULL; /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* ** The following is executed when the parser accepts */ static void yy_accept( yyParser *yypParser /* The parser */ ){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); } #endif #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif assert( yypParser->yytos==yypParser->yystack ); /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ /*********** End %parse_accept code *******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* The main parser program. ** The first argument is a pointer to a structure obtained from ** "ParseAlloc" which describes the current state of the parser. ** The second argument is the major token number. The third is ** the minor token. The fourth optional argument is whatever the ................................................................................ ** <li> The minor token number. ** <li> An option argument of a grammar-specified type. ** </ul> ** ** Outputs: ** None. */ void Parse( void *yyp, /* The parser */ int yymajor, /* The major token code number */ ParseTOKENTYPE yyminor /* The value for the token */ ParseARG_PDECL /* Optional %extra_argument parameter */ ){ YYMINORTYPE yyminorunion; unsigned int yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif yyParser *yypParser; /* The parser */ yypParser = (yyParser*)yyp; assert( yypParser->yytos!=0 ); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor==0); #endif ParseARG_STORE; #ifndef NDEBUG if( yyTraceFILE ){ int stateno = yypParser->yytos->stateno; if( stateno < YY_MIN_REDUCE ){ fprintf(yyTraceFILE,"%sInput '%s' in state %d\n", yyTracePrompt,yyTokenName[yymajor],stateno); }else{ fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n", yyTracePrompt,yyTokenName[yymajor],stateno-YY_MIN_REDUCE); } } #endif do{ yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); if( yyact >= YY_MIN_REDUCE ){ yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor,yyminor); }else if( yyact <= YY_MAX_SHIFTREDUCE ){ yy_shift(yypParser,yyact,yymajor,yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif yymajor = YYNOCODE; }else if( yyact==YY_ACCEPT_ACTION ){ yypParser->yytos--; yy_accept(yypParser); return; }else{ assert( yyact == YY_ERROR_ACTION ); yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); } #endif #ifdef YYERRORSYMBOL /* A syntax error has occurred. ** The response to an error depends upon whether or not the ** grammar defines an error token "ERROR". ** ** This is what we do if the grammar does define ERROR: ** ** * Call the %syntax_error function. ** ** * Begin popping the stack until we enter a state where ** it is legal to shift the error symbol, then shift ** the error symbol. ** ** * Set the error count to three. ** ** * Begin accepting and shifting new tokens. No new error ** processing will occur until three tokens have been ** shifted successfully. ** */ if( yypParser->yyerrcnt<0 ){ yy_syntax_error(yypParser,yymajor,yyminor); } yymx = yypParser->yytos->major; if( yymx==YYERRORSYMBOL || yyerrorhit ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sDiscard input token %s\n", yyTracePrompt,yyTokenName[yymajor]); } #endif yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion); yymajor = YYNOCODE; }else{ while( yypParser->yytos >= yypParser->yystack && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action( yypParser->yytos->stateno, YYERRORSYMBOL)) >= YY_MIN_REDUCE ){ yy_pop_parser_stack(yypParser); } if( yypParser->yytos < yypParser->yystack || yymajor==0 ){ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif yymajor = YYNOCODE; }else if( yymx!=YYERRORSYMBOL ){ yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax ** error routine and continue going as if nothing had happened. ** ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ yy_syntax_error(yypParser,yymajor, yyminor); yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yymajor = YYNOCODE; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** ** * Report an error message, and throw away the input token. ** ** * If the input token is $, then fail the parse. ** ** As before, subsequent error messages are suppressed until ** three input tokens have been successfully shifted. */ if( yypParser->yyerrcnt<=0 ){ yy_syntax_error(yypParser,yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); if( yyendofinput ){ yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif } yymajor = YYNOCODE; #endif } }while( yymajor!=YYNOCODE && yypParser->yytos>yypParser->yystack ); #ifndef NDEBUG if( yyTraceFILE ){ yyStackEntry *i; char cDiv = '['; fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt); for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){ fprintf(yyTraceFILE,"%c%s", cDiv, yyTokenName[i->major]); cDiv = ' '; } fprintf(yyTraceFILE,"]\n"); } #endif return; } |
| | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > | > < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > < < < | | | | | | | | | | | | | | | | | | | | | | > > > > < < < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > | > | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | > | > | | | | | | > | | | | | | | | > | > | < > | > | | | | | < > > | | > | | | | | | | | | | > | | > | > | | | | | > | < | | | | > > | > | > | | | | < > > > | | | > | > | | > | > | | | > | | < > > > | < > > > | | | > | | | | | | | < > > | | | > | | | | > | | < < > > > | | | > | < > | > | > | | > | | | | | | | | | | | < > | > | | | | | | | | > | > | | > | | | | < > > | | > | | | | < > | | > | | | | | | > > | | > | | < > > | | | | > | > | > | > | > | < > | > | > | | | | | | | | | | < > > | | | > | > | | | < > > | | | | | > | > | | | | | | > | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | < > > | | < > > | < > > | | | | | | | < > > | | | | | | < > > | | < > > | | < > | | | | | | | | < > > | | | | | | | | | | > | | > | | > | > | | > | | | > | | < > > > | < > > | | > | > | | | > | > | | | | < > > | | | | | | | | | | | | | | | | | | | | | < > > | | | > | > | | | | > | > | > | | > | | | < > > | | | > > | | | | > | < > > | | | | | | | | | | | < < > > | | | | | | | | | | | | | < > > | | < > | > | | | | | > | | > | | < > | > | | | | | | |
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 ... 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 ... 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 ... 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 ... 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 .... 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 .... 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 .... 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 |
** YY_ERROR_ACTION The yy_action[] code for syntax error ** YY_ACCEPT_ACTION The yy_action[] code for accept ** YY_NO_ACTION The yy_action[] code for no-op ** YY_MIN_REDUCE Minimum value for reduce actions ** YY_MAX_REDUCE Maximum value for reduce actions */ #ifndef INTERFACE #define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char #define YYNOCODE 117 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE void * typedef union { int yyinit; ParseTOKENTYPE yy0; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 1000000 #endif #define ParseARG_SDECL struct ewkt_data *p_data ; #define ParseARG_PDECL , struct ewkt_data *p_data #define ParseARG_FETCH struct ewkt_data *p_data = yypParser->p_data #define ParseARG_STORE yypParser->p_data = p_data #define YYNSTATE 335 #define YYNRULE 199 #define YYNTOKEN 20 #define YY_MAX_SHIFT 334 #define YY_MIN_SHIFTREDUCE 508 #define YY_MAX_SHIFTREDUCE 706 #define YY_ERROR_ACTION 707 ................................................................................ ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production ** code the yytestcase() macro should be turned off. But it is useful ** for testing. */ #ifndef yytestcase #define yytestcase(X) #endif /* Next are the tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement ** functions that take a state number and lookahead value and return an ** action integer. ................................................................................ ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (694) static const YYACTIONTYPE yy_action[] = { /* 0 */ 334, 334, 334, 334, 710, 711, 712, 713, 714, 715, /* 10 */ 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, /* 20 */ 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, /* 30 */ 736, 737, 148, 110, 87, 133, 109, 86, 132, 108, /* 40 */ 85, 131, 107, 84, 130, 106, 83, 129, 105, 82, /* 50 */ 903, 206, 333, 236, 212, 329, 194, 245, 28, 231, /* 60 */ 27, 216, 25, 187, 24, 170, 22, 153, 20, 79, /* 70 */ 333, 329, 708, 1, 299, 231, 28, 216, 27, 187, /* 80 */ 25, 170, 24, 153, 22, 71, 19, 208, 207, 548, /* 90 */ 206, 205, 248, 329, 200, 194, 262, 231, 330, 216, /* 100 */ 236, 187, 101, 170, 100, 153, 99, 64, 98, 262, /* 110 */ 96, 127, 81, 125, 102, 101, 207, 100, 270, 99, /* 120 */ 240, 98, 200, 96, 124, 88, 123, 270, 122, 323, /* 130 */ 121, 236, 119, 124, 104, 123, 278, 122, 218, 121, /* 140 */ 236, 119, 147, 111, 146, 278, 145, 306, 144, 236, /* 150 */ 142, 147, 128, 146, 249, 145, 331, 144, 208, 142, /* 160 */ 240, 134, 205, 243, 2, 61, 77, 76, 75, 74, /* 170 */ 73, 72, 78, 69, 68, 67, 66, 65, 87, 63, /* 180 */ 94, 86, 110, 93, 85, 109, 92, 84, 108, 91, /* 190 */ 83, 107, 90, 82, 106, 89, 117, 105, 148, 116, /* 200 */ 140, 133, 115, 139, 132, 114, 138, 131, 113, 137, /* 210 */ 130, 112, 136, 129, 26, 135, 210, 318, 313, 548, /* 220 */ 308, 21, 248, 192, 327, 325, 548, 323, 4, 248, /* 230 */ 332, 331, 325, 330, 183, 248, 240, 245, 182, 839, /* 240 */ 222, 841, 842, 165, 240, 161, 157, 823, 311, 825, /* 250 */ 826, 179, 240, 176, 173, 807, 902, 809, 810, 332, /* 260 */ 795, 228, 797, 798, 243, 224, 775, 220, 777, 778, /* 270 */ 767, 198, 769, 770, 548, 203, 186, 13, 548, 548, /* 280 */ 327, 301, 23, 302, 245, 243, 245, 303, 3, 307, /* 290 */ 245, 236, 308, 312, 236, 313, 226, 240, 316, 240, /* 300 */ 317, 243, 318, 243, 12, 243, 229, 243, 230, 245, /* 310 */ 321, 245, 232, 245, 236, 237, 233, 238, 236, 240, /* 320 */ 241, 240, 242, 328, 5, 243, 245, 243, 542, 250, /* 330 */ 548, 540, 251, 548, 6, 252, 253, 7, 70, 155, /* 340 */ 254, 872, 95, 32, 97, 871, 870, 15, 869, 868, /* 350 */ 9, 867, 8, 866, 159, 255, 157, 840, 173, 256, /* 360 */ 887, 102, 770, 778, 118, 33, 120, 257, 16, 10, /* 370 */ 258, 259, 260, 80, 11, 261, 810, 798, 901, 900, /* 380 */ 161, 826, 176, 777, 899, 898, 897, 769, 163, 141, /* 390 */ 896, 263, 125, 34, 264, 825, 797, 809, 179, 143, /* 400 */ 17, 150, 265, 266, 267, 268, 269, 103, 886, 885, /* 410 */ 884, 165, 883, 882, 881, 215, 795, 767, 271, 857, /* 420 */ 127, 272, 273, 274, 807, 126, 275, 276, 277, 823, /* 430 */ 856, 855, 854, 775, 853, 852, 149, 851, 152, 832, /* 440 */ 156, 151, 280, 824, 42, 279, 220, 154, 46, 160, /* 450 */ 158, 164, 829, 838, 281, 224, 835, 50, 282, 228, /* 460 */ 162, 53, 283, 167, 166, 168, 816, 284, 169, 808, /* 470 */ 172, 175, 822, 171, 285, 819, 174, 178, 286, 813, /* 480 */ 177, 181, 754, 287, 186, 180, 288, 51, 289, 290, /* 490 */ 184, 185, 18, 796, 193, 758, 189, 190, 191, 192, /* 500 */ 199, 291, 188, 293, 198, 204, 756, 196, 197, 203, /* 510 */ 201, 195, 292, 295, 752, 202, 294, 54, 56, 58, /* 520 */ 62, 209, 213, 38, 219, 223, 227, 709, 296, 297, /* 530 */ 298, 709, 709, 662, 661, 660, 300, 709, 659, 658, /* 540 */ 657, 656, 709, 691, 305, 690, 689, 29, 310, 788, /* 550 */ 211, 688, 304, 214, 776, 749, 315, 234, 768, 794, /* 560 */ 762, 217, 764, 309, 791, 785, 221, 319, 314, 320, /* 570 */ 225, 687, 760, 766, 322, 324, 235, 326, 686, 692, /* 580 */ 676, 748, 239, 746, 747, 244, 246, 247, 675, 674, /* 590 */ 673, 672, 671, 30, 709, 677, 647, 646, 645, 709, /* 600 */ 644, 643, 642, 641, 31, 709, 628, 634, 631, 625, /* 610 */ 709, 612, 618, 615, 609, 709, 602, 598, 541, 604, /* 620 */ 709, 603, 542, 601, 540, 709, 600, 599, 597, 543, /* 630 */ 709, 584, 709, 709, 709, 35, 36, 37, 709, 39, /* 640 */ 578, 590, 709, 709, 709, 40, 580, 41, 43, 709, /* 650 */ 587, 709, 703, 579, 44, 45, 709, 709, 581, 709, /* 660 */ 709, 709, 47, 48, 709, 709, 49, 577, 570, 709, /* 670 */ 709, 709, 572, 709, 52, 709, 55, 571, 709, 709, /* 680 */ 709, 569, 57, 709, 709, 59, 538, 539, 709, 60, /* 690 */ 709, 537, 536, 14, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, /* 10 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, /* 20 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, /* 30 */ 53, 54, 27, 28, 29, 30, 31, 32, 33, 34, /* 40 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, /* 50 */ 0, 58, 2, 60, 57, 5, 63, 60, 8, 9, /* 60 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, /* 70 */ 2, 5, 21, 22, 60, 9, 8, 11, 10, 13, /* 80 */ 12, 15, 14, 17, 16, 19, 18, 55, 56, 6, /* 90 */ 58, 59, 60, 5, 62, 63, 2, 9, 58, 11, /* 100 */ 60, 13, 8, 15, 10, 17, 12, 19, 14, 2, /* 110 */ 16, 108, 18, 110, 111, 8, 56, 10, 2, 12, /* 120 */ 60, 14, 62, 16, 8, 18, 10, 2, 12, 58, /* 130 */ 14, 60, 16, 8, 18, 10, 2, 12, 58, 14, /* 140 */ 60, 16, 8, 18, 10, 2, 12, 58, 14, 60, /* 150 */ 16, 8, 18, 10, 113, 12, 56, 14, 55, 16, /* 160 */ 60, 18, 59, 60, 3, 60, 48, 49, 50, 51, /* 170 */ 52, 53, 48, 49, 50, 51, 52, 53, 29, 109, /* 180 */ 29, 32, 28, 32, 35, 31, 35, 38, 34, 38, /* 190 */ 41, 37, 41, 44, 40, 44, 28, 43, 27, 31, /* 200 */ 27, 30, 34, 30, 33, 37, 33, 36, 40, 36, /* 210 */ 39, 43, 39, 42, 3, 42, 3, 55, 56, 6, /* 220 */ 58, 3, 60, 3, 55, 56, 6, 58, 7, 60, /* 230 */ 55, 56, 56, 58, 57, 60, 60, 60, 61, 108, /* 240 */ 56, 110, 111, 76, 60, 78, 79, 100, 56, 102, /* 250 */ 103, 72, 60, 74, 75, 92, 115, 94, 95, 55, /* 260 */ 88, 80, 90, 91, 60, 84, 76, 86, 78, 79, /* 270 */ 72, 3, 74, 75, 6, 3, 3, 3, 6, 6, /* 280 */ 55, 57, 3, 57, 60, 60, 60, 57, 3, 58, /* 290 */ 60, 60, 58, 56, 60, 56, 55, 60, 55, 60, /* 300 */ 55, 60, 55, 60, 3, 60, 57, 60, 57, 60, /* 310 */ 57, 60, 58, 60, 60, 56, 58, 56, 60, 60, /* 320 */ 55, 60, 55, 57, 3, 60, 60, 60, 4, 113, /* 330 */ 6, 4, 113, 6, 3, 113, 113, 7, 109, 3, /* 340 */ 113, 113, 3, 3, 3, 113, 113, 3, 113, 113, /* 350 */ 7, 113, 3, 113, 3, 113, 79, 109, 75, 115, /* 360 */ 114, 111, 75, 79, 3, 3, 3, 115, 3, 3, /* 370 */ 115, 115, 115, 111, 7, 115, 95, 91, 115, 115, /* 380 */ 78, 103, 74, 78, 115, 115, 115, 74, 3, 3, /* 390 */ 115, 115, 110, 3, 114, 102, 90, 94, 72, 3, /* 400 */ 3, 7, 114, 114, 114, 114, 114, 110, 114, 114, /* 410 */ 114, 76, 114, 114, 114, 3, 88, 72, 114, 112, /* 420 */ 108, 112, 112, 112, 92, 108, 112, 112, 112, 100, /* 430 */ 112, 112, 112, 76, 112, 112, 77, 112, 3, 105, /* 440 */ 7, 77, 105, 101, 3, 112, 86, 79, 3, 7, /* 450 */ 78, 7, 104, 107, 107, 84, 106, 3, 106, 80, /* 460 */ 76, 3, 104, 7, 73, 73, 97, 97, 3, 93, /* 470 */ 7, 7, 99, 75, 99, 98, 74, 7, 98, 96, /* 480 */ 72, 7, 65, 96, 3, 61, 65, 7, 69, 60, /* 490 */ 60, 60, 3, 89, 7, 67, 60, 60, 60, 3, /* 500 */ 7, 67, 63, 60, 3, 7, 66, 60, 60, 3, /* 510 */ 59, 62, 66, 60, 64, 60, 64, 7, 7, 7, /* 520 */ 60, 60, 7, 3, 7, 7, 7, 116, 71, 70, /* 530 */ 68, 116, 116, 4, 4, 4, 69, 116, 4, 4, /* 540 */ 4, 4, 116, 4, 71, 4, 4, 3, 70, 83, /* 550 */ 82, 4, 83, 82, 77, 60, 68, 60, 73, 87, /* 560 */ 69, 86, 70, 87, 85, 81, 84, 81, 85, 69, /* 570 */ 80, 4, 68, 71, 71, 70, 60, 68, 4, 4, /* 580 */ 4, 60, 60, 60, 60, 60, 60, 60, 4, 4, /* 590 */ 4, 4, 4, 3, 116, 4, 4, 4, 4, 116, /* 600 */ 4, 4, 4, 4, 3, 116, 4, 4, 4, 4, /* 610 */ 116, 4, 4, 4, 4, 116, 4, 4, 4, 4, /* 620 */ 116, 4, 4, 4, 4, 116, 4, 4, 4, 4, /* 630 */ 116, 4, 116, 116, 116, 7, 7, 7, 116, 7, /* 640 */ 4, 4, 116, 116, 116, 7, 4, 7, 7, 116, /* 650 */ 4, 116, 1, 4, 7, 7, 116, 116, 4, 116, /* 660 */ 116, 116, 7, 7, 116, 116, 7, 4, 4, 116, /* 670 */ 116, 116, 4, 116, 7, 116, 7, 4, 116, 116, /* 680 */ 116, 4, 7, 116, 116, 7, 4, 4, 116, 3, /* 690 */ 116, 4, 4, 3, 116, 116, 116, 116, 116, 116, /* 700 */ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, /* 710 */ 116, 116, 116, 116, }; #define YY_SHIFT_COUNT (334) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (690) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 694, 50, 68, 213, 66, 88, 94, 107, 116, 125, /* 10 */ 134, 143, 83, 83, 83, 220, 268, 272, 273, 161, /* 20 */ 161, 211, 218, 274, 279, 285, 301, 211, 274, 83, /* 30 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, /* 40 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, /* 50 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, /* 60 */ 83, 324, 327, 221, 321, 221, 221, 221, 221, 221, /* 70 */ 221, 321, 221, 221, 221, 221, 221, 221, 221, 321, /* 80 */ 330, 331, 330, 330, 330, 330, 330, 330, 331, 330, /* 90 */ 330, 330, 330, 330, 330, 336, 339, 340, 341, 344, /* 100 */ 336, 340, 330, 343, 349, 343, 343, 343, 343, 343, /* 110 */ 343, 349, 343, 343, 343, 343, 343, 343, 351, 361, /* 120 */ 362, 363, 365, 351, 362, 343, 367, 367, 366, 367, /* 130 */ 367, 367, 367, 367, 366, 367, 367, 367, 367, 367, /* 140 */ 367, 385, 386, 390, 396, 397, 385, 390, 367, 394, /* 150 */ 412, 394, 412, 435, 433, 441, 336, 433, 442, 445, /* 160 */ 351, 442, 444, 454, 385, 444, 456, 458, 456, 458, /* 170 */ 465, 463, 340, 463, 464, 362, 464, 470, 390, 470, /* 180 */ 474, 481, 474, 480, 83, 83, 83, 489, 487, 83, /* 190 */ 83, 83, 83, 496, 487, 493, 83, 83, 83, 501, /* 200 */ 493, 498, 83, 83, 506, 498, 510, 511, 512, 83, /* 210 */ 83, 515, 480, 520, 515, 520, 412, 517, 510, 441, /* 220 */ 517, 518, 511, 445, 518, 519, 512, 454, 519, 480, /* 230 */ 480, 458, 510, 510, 83, 83, 83, 511, 511, 83, /* 240 */ 83, 512, 512, 83, 83, 83, 83, 83, 83, 529, /* 250 */ 530, 531, 534, 535, 536, 537, 539, 541, 542, 547, /* 260 */ 567, 574, 544, 575, 576, 584, 585, 586, 587, 588, /* 270 */ 590, 591, 592, 593, 594, 596, 597, 598, 601, 599, /* 280 */ 602, 603, 604, 605, 607, 608, 609, 610, 612, 613, /* 290 */ 614, 615, 617, 618, 619, 620, 622, 623, 624, 625, /* 300 */ 627, 628, 629, 630, 636, 637, 632, 638, 640, 642, /* 310 */ 646, 641, 647, 648, 649, 654, 655, 656, 659, 663, /* 320 */ 664, 667, 668, 669, 673, 675, 677, 678, 682, 686, /* 330 */ 683, 687, 688, 690, 651, }; #define YY_REDUCE_COUNT (248) #define YY_REDUCE_MIN (-23) #define YY_REDUCE_MAX (527) static const short yy_reduce_ofst[] = { /* 0 */ 51, -23, 5, 32, 118, 124, 149, 151, 154, 168, /* 10 */ 171, 173, 162, 169, 175, -7, 60, 103, 177, 3, /* 20 */ 131, 167, 147, 179, 163, 172, 181, 190, 198, 40, /* 30 */ 100, 204, 71, 176, 225, -3, 224, 226, 230, 80, /* 40 */ 89, 231, 234, 184, 192, 237, 239, 241, 243, 245, /* 50 */ 247, 249, 251, 253, 254, 258, 259, 261, 265, 267, /* 60 */ 266, 14, 105, 41, 70, 216, 219, 222, 223, 227, /* 70 */ 228, 229, 232, 233, 235, 236, 238, 240, 242, 248, /* 80 */ 141, 250, 244, 252, 255, 256, 257, 260, 262, 263, /* 90 */ 264, 269, 270, 271, 275, 277, 278, 283, 281, 286, /* 100 */ 284, 287, 276, 246, 282, 280, 288, 289, 290, 291, /* 110 */ 292, 297, 294, 295, 296, 298, 299, 300, 302, 293, /* 120 */ 308, 303, 306, 305, 313, 304, 307, 309, 312, 310, /* 130 */ 311, 314, 315, 316, 317, 318, 319, 320, 322, 323, /* 140 */ 325, 335, 329, 326, 332, 328, 357, 345, 333, 334, /* 150 */ 359, 337, 364, 342, 346, 360, 368, 347, 350, 371, /* 160 */ 372, 352, 348, 379, 384, 358, 369, 391, 370, 392, /* 170 */ 376, 373, 398, 375, 377, 402, 380, 383, 408, 387, /* 180 */ 417, 424, 421, 419, 429, 430, 431, 404, 428, 14, /* 190 */ 436, 437, 438, 439, 434, 440, 443, 447, 448, 449, /* 200 */ 446, 450, 453, 455, 451, 452, 457, 459, 462, 460, /* 210 */ 461, 466, 467, 468, 469, 471, 477, 472, 473, 475, /* 220 */ 476, 479, 478, 482, 483, 484, 488, 490, 486, 491, /* 230 */ 500, 485, 502, 503, 495, 497, 516, 492, 505, 521, /* 240 */ 522, 504, 509, 523, 524, 525, 495, 526, 527, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 904, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 10 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 20 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 30 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 40 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 50 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 60 */ 707, 707, 707, 865, 707, 865, 865, 865, 865, 865, /* 70 */ 865, 707, 865, 865, 865, 865, 865, 865, 865, 707, /* 80 */ 895, 707, 895, 895, 895, 895, 895, 895, 707, 895, /* 90 */ 895, 895, 895, 895, 895, 707, 707, 707, 707, 707, /* 100 */ 707, 707, 895, 880, 707, 880, 880, 880, 880, 880, /* 110 */ 880, 707, 880, 880, 880, 880, 880, 880, 707, 707, /* 120 */ 707, 707, 707, 707, 707, 880, 850, 850, 707, 850, /* 130 */ 850, 850, 850, 850, 707, 850, 850, 850, 850, 850, /* 140 */ 850, 707, 707, 707, 707, 707, 707, 707, 850, 831, /* 150 */ 707, 831, 707, 707, 837, 707, 707, 837, 834, 707, /* 160 */ 707, 834, 828, 707, 707, 828, 815, 707, 815, 707, /* 170 */ 707, 821, 707, 821, 818, 707, 818, 812, 707, 812, /* 180 */ 753, 707, 753, 761, 707, 707, 707, 707, 757, 707, /* 190 */ 707, 707, 707, 707, 757, 755, 707, 707, 707, 707, /* 200 */ 755, 751, 707, 707, 707, 751, 765, 763, 759, 707, /* 210 */ 707, 787, 761, 707, 787, 707, 707, 793, 765, 707, /* 220 */ 793, 790, 763, 707, 790, 784, 759, 707, 784, 761, /* 230 */ 761, 707, 765, 765, 707, 707, 707, 763, 763, 707, /* 240 */ 707, 759, 759, 707, 707, 707, 748, 746, 707, 707, /* 250 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 260 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 270 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 280 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 290 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 300 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 310 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 320 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, /* 330 */ 707, 707, 707, 707, 707, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. ** ................................................................................ ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. ** ** After the "shift" half of a SHIFTREDUCE action, the stateno field ** actually contains the reduce action for the second half of the ** SHIFTREDUCE. */ struct yyStackEntry { YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */ }; typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH int yyhwm; /* High-water mark of the stack */ #endif #ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; #ifndef NDEBUG #include <stdio.h> static FILE *yyTraceFILE = 0; ................................................................................ ** line of trace output. If NULL, then tracing is ** turned off. ** </ul> ** ** Outputs: ** None. */ void ParseTrace (FILE * TraceFILE, char *zTracePrompt) { yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if (yyTraceFILE == 0) yyTracePrompt = 0; else if (yyTracePrompt == 0) yyTraceFILE = 0; } #endif /* NDEBUG */ #if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { /* 0 */ "$", /* 1 */ "EWKT_NEWLINE", /* 2 */ "EWKT_POINT", /* 3 */ "EWKT_OPEN_BRACKET", /* 4 */ "EWKT_CLOSE_BRACKET", /* 5 */ "EWKT_POINT_M", /* 6 */ "EWKT_NUM", /* 7 */ "EWKT_COMMA", /* 8 */ "EWKT_LINESTRING", /* 9 */ "EWKT_LINESTRING_M", /* 10 */ "EWKT_POLYGON", /* 11 */ "EWKT_POLYGON_M", /* 12 */ "EWKT_MULTIPOINT", /* 13 */ "EWKT_MULTIPOINT_M", /* 14 */ "EWKT_MULTILINESTRING", /* 15 */ "EWKT_MULTILINESTRING_M", /* 16 */ "EWKT_MULTIPOLYGON", /* 17 */ "EWKT_MULTIPOLYGON_M", /* 18 */ "EWKT_GEOMETRYCOLLECTION", /* 19 */ "EWKT_GEOMETRYCOLLECTION_M", /* 20 */ "error", /* 21 */ "main", /* 22 */ "in", /* 23 */ "state", /* 24 */ "program", /* 25 */ "geo_text", /* 26 */ "geo_textm", /* 27 */ "point", /* 28 */ "pointz", /* 29 */ "pointzm", /* 30 */ "linestring", /* 31 */ "linestringz", /* 32 */ "linestringzm", /* 33 */ "polygon", /* 34 */ "polygonz", /* 35 */ "polygonzm", /* 36 */ "multipoint", /* 37 */ "multipointz", /* 38 */ "multipointzm", /* 39 */ "multilinestring", /* 40 */ "multilinestringz", /* 41 */ "multilinestringzm", /* 42 */ "multipolygon", /* 43 */ "multipolygonz", /* 44 */ "multipolygonzm", /* 45 */ "geocoll", /* 46 */ "geocollz", /* 47 */ "geocollzm", /* 48 */ "pointm", /* 49 */ "linestringm", /* 50 */ "polygonm", /* 51 */ "multipointm", /* 52 */ "multilinestringm", /* 53 */ "multipolygonm", /* 54 */ "geocollm", /* 55 */ "point_coordxy", /* 56 */ "point_coordxyz", /* 57 */ "point_coordxym", /* 58 */ "point_coordxyzm", /* 59 */ "point_brkt_coordxy", /* 60 */ "coord", /* 61 */ "point_brkt_coordxym", /* 62 */ "point_brkt_coordxyz", /* 63 */ "point_brkt_coordxyzm", /* 64 */ "extra_brkt_pointsxy", /* 65 */ "extra_brkt_pointsxym", /* 66 */ "extra_brkt_pointsxyz", /* 67 */ "extra_brkt_pointsxyzm", /* 68 */ "extra_pointsxy", /* 69 */ "extra_pointsxym", /* 70 */ "extra_pointsxyz", /* 71 */ "extra_pointsxyzm", /* 72 */ "linestring_text", /* 73 */ "linestring_textm", /* 74 */ "linestring_textz", /* 75 */ "linestring_textzm", /* 76 */ "polygon_text", /* 77 */ "polygon_textm", /* 78 */ "polygon_textz", /* 79 */ "polygon_textzm", /* 80 */ "ring", /* 81 */ "extra_rings", /* 82 */ "ringm", /* 83 */ "extra_ringsm", /* 84 */ "ringz", /* 85 */ "extra_ringsz", /* 86 */ "ringzm", /* 87 */ "extra_ringszm", /* 88 */ "multipoint_text", /* 89 */ "multipoint_textm", /* 90 */ "multipoint_textz", /* 91 */ "multipoint_textzm", /* 92 */ "multilinestring_text", /* 93 */ "multilinestring_textm", /* 94 */ "multilinestring_textz", /* 95 */ "multilinestring_textzm", /* 96 */ "multilinestring_text2", /* 97 */ "multilinestring_textm2", /* 98 */ "multilinestring_textz2", /* 99 */ "multilinestring_textzm2", /* 100 */ "multipolygon_text", /* 101 */ "multipolygon_textm", /* 102 */ "multipolygon_textz", /* 103 */ "multipolygon_textzm", /* 104 */ "multipolygon_text2", /* 105 */ "multipolygon_textm2", /* 106 */ "multipolygon_textz2", /* 107 */ "multipolygon_textzm2", /* 108 */ "geocoll_text", /* 109 */ "geocoll_textm", /* 110 */ "geocoll_textz", /* 111 */ "geocoll_textzm", /* 112 */ "geocoll_text2", /* 113 */ "geocoll_textm2", /* 114 */ "geocoll_textz2", /* 115 */ "geocoll_textzm2", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "geo_text ::= point", /* 1 */ "geo_text ::= pointz", /* 2 */ "geo_text ::= pointzm", /* 3 */ "geo_text ::= linestring", /* 4 */ "geo_text ::= linestringz", /* 5 */ "geo_text ::= linestringzm", /* 6 */ "geo_text ::= polygon", /* 7 */ "geo_text ::= polygonz", /* 8 */ "geo_text ::= polygonzm", /* 9 */ "geo_text ::= multipoint", /* 10 */ "geo_text ::= multipointz", /* 11 */ "geo_text ::= multipointzm", /* 12 */ "geo_text ::= multilinestring", /* 13 */ "geo_text ::= multilinestringz", /* 14 */ "geo_text ::= multilinestringzm", /* 15 */ "geo_text ::= multipolygon", /* 16 */ "geo_text ::= multipolygonz", /* 17 */ "geo_text ::= multipolygonzm", /* 18 */ "geo_text ::= geocoll", /* 19 */ "geo_text ::= geocollz", /* 20 */ "geo_text ::= geocollzm", /* 21 */ "geo_textm ::= pointm", /* 22 */ "geo_textm ::= linestringm", /* 23 */ "geo_textm ::= polygonm", /* 24 */ "geo_textm ::= multipointm", /* 25 */ "geo_textm ::= multilinestringm", /* 26 */ "geo_textm ::= multipolygonm", /* 27 */ "geo_textm ::= geocollm", /* 28 */ "point ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy EWKT_CLOSE_BRACKET", /* 29 */ "pointz ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz EWKT_CLOSE_BRACKET", /* 30 */ "pointm ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym EWKT_CLOSE_BRACKET", /* 31 */ "pointzm ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm EWKT_CLOSE_BRACKET", /* 32 */ "point_brkt_coordxy ::= EWKT_OPEN_BRACKET coord coord EWKT_CLOSE_BRACKET", /* 33 */ "point_brkt_coordxym ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET", /* 34 */ "point_brkt_coordxyz ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET", /* 35 */ "point_brkt_coordxyzm ::= EWKT_OPEN_BRACKET coord coord coord coord EWKT_CLOSE_BRACKET", /* 36 */ "point_coordxy ::= coord coord", /* 37 */ "point_coordxym ::= coord coord coord", /* 38 */ "point_coordxyz ::= coord coord coord", /* 39 */ "point_coordxyzm ::= coord coord coord coord", /* 40 */ "coord ::= EWKT_NUM", /* 41 */ "extra_brkt_pointsxy ::=", /* 42 */ "extra_brkt_pointsxy ::= EWKT_COMMA point_brkt_coordxy extra_brkt_pointsxy", /* 43 */ "extra_brkt_pointsxym ::=", /* 44 */ "extra_brkt_pointsxym ::= EWKT_COMMA point_brkt_coordxym extra_brkt_pointsxym", /* 45 */ "extra_brkt_pointsxyz ::=", /* 46 */ "extra_brkt_pointsxyz ::= EWKT_COMMA point_brkt_coordxyz extra_brkt_pointsxyz", /* 47 */ "extra_brkt_pointsxyzm ::=", /* 48 */ "extra_brkt_pointsxyzm ::= EWKT_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm", /* 49 */ "extra_pointsxy ::=", /* 50 */ "extra_pointsxy ::= EWKT_COMMA point_coordxy extra_pointsxy", /* 51 */ "extra_pointsxym ::=", /* 52 */ "extra_pointsxym ::= EWKT_COMMA point_coordxym extra_pointsxym", /* 53 */ "extra_pointsxyz ::=", /* 54 */ "extra_pointsxyz ::= EWKT_COMMA point_coordxyz extra_pointsxyz", /* 55 */ "extra_pointsxyzm ::=", /* 56 */ "extra_pointsxyzm ::= EWKT_COMMA point_coordxyzm extra_pointsxyzm", /* 57 */ "linestring ::= EWKT_LINESTRING linestring_text", /* 58 */ "linestringm ::= EWKT_LINESTRING_M linestring_textm", /* 59 */ "linestringz ::= EWKT_LINESTRING linestring_textz", /* 60 */ "linestringzm ::= EWKT_LINESTRING linestring_textzm", /* 61 */ "linestring_text ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", /* 62 */ "linestring_textm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", /* 63 */ "linestring_textz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", /* 64 */ "linestring_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", /* 65 */ "polygon ::= EWKT_POLYGON polygon_text", /* 66 */ "polygonm ::= EWKT_POLYGON_M polygon_textm", /* 67 */ "polygonz ::= EWKT_POLYGON polygon_textz", /* 68 */ "polygonzm ::= EWKT_POLYGON polygon_textzm", /* 69 */ "polygon_text ::= EWKT_OPEN_BRACKET ring extra_rings EWKT_CLOSE_BRACKET", /* 70 */ "polygon_textm ::= EWKT_OPEN_BRACKET ringm extra_ringsm EWKT_CLOSE_BRACKET", /* 71 */ "polygon_textz ::= EWKT_OPEN_BRACKET ringz extra_ringsz EWKT_CLOSE_BRACKET", /* 72 */ "polygon_textzm ::= EWKT_OPEN_BRACKET ringzm extra_ringszm EWKT_CLOSE_BRACKET", /* 73 */ "ring ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", /* 74 */ "extra_rings ::=", /* 75 */ "extra_rings ::= EWKT_COMMA ring extra_rings", /* 76 */ "ringm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", /* 77 */ "extra_ringsm ::=", /* 78 */ "extra_ringsm ::= EWKT_COMMA ringm extra_ringsm", /* 79 */ "ringz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", /* 80 */ "extra_ringsz ::=", /* 81 */ "extra_ringsz ::= EWKT_COMMA ringz extra_ringsz", /* 82 */ "ringzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", /* 83 */ "extra_ringszm ::=", /* 84 */ "extra_ringszm ::= EWKT_COMMA ringzm extra_ringszm", /* 85 */ "multipoint ::= EWKT_MULTIPOINT multipoint_text", /* 86 */ "multipointm ::= EWKT_MULTIPOINT_M multipoint_textm", /* 87 */ "multipointz ::= EWKT_MULTIPOINT multipoint_textz", /* 88 */ "multipointzm ::= EWKT_MULTIPOINT multipoint_textzm", /* 89 */ "multipoint_text ::= EWKT_OPEN_BRACKET point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", /* 90 */ "multipoint_textm ::= EWKT_OPEN_BRACKET point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", /* 91 */ "multipoint_textz ::= EWKT_OPEN_BRACKET point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", /* 92 */ "multipoint_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", /* 93 */ "multipoint_text ::= EWKT_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy EWKT_CLOSE_BRACKET", /* 94 */ "multipoint_textm ::= EWKT_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym EWKT_CLOSE_BRACKET", /* 95 */ "multipoint_textz ::= EWKT_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz EWKT_CLOSE_BRACKET", /* 96 */ "multipoint_textzm ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm EWKT_CLOSE_BRACKET", /* 97 */ "multilinestring ::= EWKT_MULTILINESTRING multilinestring_text", /* 98 */ "multilinestringm ::= EWKT_MULTILINESTRING_M multilinestring_textm", /* 99 */ "multilinestringz ::= EWKT_MULTILINESTRING multilinestring_textz", /* 100 */ "multilinestringzm ::= EWKT_MULTILINESTRING multilinestring_textzm", /* 101 */ "multilinestring_text ::= EWKT_OPEN_BRACKET linestring_text multilinestring_text2 EWKT_CLOSE_BRACKET", /* 102 */ "multilinestring_text2 ::=", /* 103 */ "multilinestring_text2 ::= EWKT_COMMA linestring_text multilinestring_text2", /* 104 */ "multilinestring_textm ::= EWKT_OPEN_BRACKET linestring_textm multilinestring_textm2 EWKT_CLOSE_BRACKET", /* 105 */ "multilinestring_textm2 ::=", /* 106 */ "multilinestring_textm2 ::= EWKT_COMMA linestring_textm multilinestring_textm2", /* 107 */ "multilinestring_textz ::= EWKT_OPEN_BRACKET linestring_textz multilinestring_textz2 EWKT_CLOSE_BRACKET", /* 108 */ "multilinestring_textz2 ::=", /* 109 */ "multilinestring_textz2 ::= EWKT_COMMA linestring_textz multilinestring_textz2", /* 110 */ "multilinestring_textzm ::= EWKT_OPEN_BRACKET linestring_textzm multilinestring_textzm2 EWKT_CLOSE_BRACKET", /* 111 */ "multilinestring_textzm2 ::=", /* 112 */ "multilinestring_textzm2 ::= EWKT_COMMA linestring_textzm multilinestring_textzm2", /* 113 */ "multipolygon ::= EWKT_MULTIPOLYGON multipolygon_text", /* 114 */ "multipolygonm ::= EWKT_MULTIPOLYGON_M multipolygon_textm", /* 115 */ "multipolygonz ::= EWKT_MULTIPOLYGON multipolygon_textz", /* 116 */ "multipolygonzm ::= EWKT_MULTIPOLYGON multipolygon_textzm", /* 117 */ "multipolygon_text ::= EWKT_OPEN_BRACKET polygon_text multipolygon_text2 EWKT_CLOSE_BRACKET", /* 118 */ "multipolygon_text2 ::=", /* 119 */ "multipolygon_text2 ::= EWKT_COMMA polygon_text multipolygon_text2", /* 120 */ "multipolygon_textm ::= EWKT_OPEN_BRACKET polygon_textm multipolygon_textm2 EWKT_CLOSE_BRACKET", /* 121 */ "multipolygon_textm2 ::=", /* 122 */ "multipolygon_textm2 ::= EWKT_COMMA polygon_textm multipolygon_textm2", /* 123 */ "multipolygon_textz ::= EWKT_OPEN_BRACKET polygon_textz multipolygon_textz2 EWKT_CLOSE_BRACKET", /* 124 */ "multipolygon_textz2 ::=", /* 125 */ "multipolygon_textz2 ::= EWKT_COMMA polygon_textz multipolygon_textz2", /* 126 */ "multipolygon_textzm ::= EWKT_OPEN_BRACKET polygon_textzm multipolygon_textzm2 EWKT_CLOSE_BRACKET", /* 127 */ "multipolygon_textzm2 ::=", /* 128 */ "multipolygon_textzm2 ::= EWKT_COMMA polygon_textzm multipolygon_textzm2", /* 129 */ "geocoll ::= EWKT_GEOMETRYCOLLECTION geocoll_text", /* 130 */ "geocollm ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm", /* 131 */ "geocollz ::= EWKT_GEOMETRYCOLLECTION geocoll_textz", /* 132 */ "geocollzm ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm", /* 133 */ "geocoll_text ::= EWKT_OPEN_BRACKET point geocoll_text2 EWKT_CLOSE_BRACKET", /* 134 */ "geocoll_text ::= EWKT_OPEN_BRACKET linestring geocoll_text2 EWKT_CLOSE_BRACKET", /* 135 */ "geocoll_text ::= EWKT_OPEN_BRACKET polygon geocoll_text2 EWKT_CLOSE_BRACKET", /* 136 */ "geocoll_text ::= EWKT_OPEN_BRACKET multipoint geocoll_text2 EWKT_CLOSE_BRACKET", /* 137 */ "geocoll_text ::= EWKT_OPEN_BRACKET multilinestring geocoll_text2 EWKT_CLOSE_BRACKET", /* 138 */ "geocoll_text ::= EWKT_OPEN_BRACKET multipolygon geocoll_text2 EWKT_CLOSE_BRACKET", /* 139 */ "geocoll_text ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 EWKT_CLOSE_BRACKET", /* 140 */ "geocoll_text2 ::=", /* 141 */ "geocoll_text2 ::= EWKT_COMMA point geocoll_text2", /* 142 */ "geocoll_text2 ::= EWKT_COMMA linestring geocoll_text2", /* 143 */ "geocoll_text2 ::= EWKT_COMMA polygon geocoll_text2", /* 144 */ "geocoll_text2 ::= EWKT_COMMA multipoint geocoll_text2", /* 145 */ "geocoll_text2 ::= EWKT_COMMA multilinestring geocoll_text2", /* 146 */ "geocoll_text2 ::= EWKT_COMMA multipolygon geocoll_text2", /* 147 */ "geocoll_text2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2", /* 148 */ "geocoll_textm ::= EWKT_OPEN_BRACKET pointm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 149 */ "geocoll_textm ::= EWKT_OPEN_BRACKET linestringm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 150 */ "geocoll_textm ::= EWKT_OPEN_BRACKET polygonm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 151 */ "geocoll_textm ::= EWKT_OPEN_BRACKET multipointm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 152 */ "geocoll_textm ::= EWKT_OPEN_BRACKET multilinestringm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 153 */ "geocoll_textm ::= EWKT_OPEN_BRACKET multipolygonm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 154 */ "geocoll_textm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 EWKT_CLOSE_BRACKET", /* 155 */ "geocoll_textm2 ::=", /* 156 */ "geocoll_textm2 ::= EWKT_COMMA pointm geocoll_textm2", /* 157 */ "geocoll_textm2 ::= EWKT_COMMA linestringm geocoll_textm2", /* 158 */ "geocoll_textm2 ::= EWKT_COMMA polygonm geocoll_textm2", /* 159 */ "geocoll_textm2 ::= EWKT_COMMA multipointm geocoll_textm2", /* 160 */ "geocoll_textm2 ::= EWKT_COMMA multilinestringm geocoll_textm2", /* 161 */ "geocoll_textm2 ::= EWKT_COMMA multipolygonm geocoll_textm2", /* 162 */ "geocoll_textm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2", /* 163 */ "geocoll_textz ::= EWKT_OPEN_BRACKET pointz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 164 */ "geocoll_textz ::= EWKT_OPEN_BRACKET linestringz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 165 */ "geocoll_textz ::= EWKT_OPEN_BRACKET polygonz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 166 */ "geocoll_textz ::= EWKT_OPEN_BRACKET multipointz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 167 */ "geocoll_textz ::= EWKT_OPEN_BRACKET multilinestringz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 168 */ "geocoll_textz ::= EWKT_OPEN_BRACKET multipolygonz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 169 */ "geocoll_textz ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 EWKT_CLOSE_BRACKET", /* 170 */ "geocoll_textz2 ::=", /* 171 */ "geocoll_textz2 ::= EWKT_COMMA pointz geocoll_textz2", /* 172 */ "geocoll_textz2 ::= EWKT_COMMA linestringz geocoll_textz2", /* 173 */ "geocoll_textz2 ::= EWKT_COMMA polygonz geocoll_textz2", /* 174 */ "geocoll_textz2 ::= EWKT_COMMA multipointz geocoll_textz2", /* 175 */ "geocoll_textz2 ::= EWKT_COMMA multilinestringz geocoll_textz2", /* 176 */ "geocoll_textz2 ::= EWKT_COMMA multipolygonz geocoll_textz2", /* 177 */ "geocoll_textz2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2", /* 178 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET pointzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 179 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET linestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 180 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET polygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 181 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET multipointzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 182 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET multilinestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 183 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET multipolygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 184 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 EWKT_CLOSE_BRACKET", /* 185 */ "geocoll_textzm2 ::=", /* 186 */ "geocoll_textzm2 ::= EWKT_COMMA pointzm geocoll_textzm2", /* 187 */ "geocoll_textzm2 ::= EWKT_COMMA linestringzm geocoll_textzm2", /* 188 */ "geocoll_textzm2 ::= EWKT_COMMA polygonzm geocoll_textzm2", /* 189 */ "geocoll_textzm2 ::= EWKT_COMMA multipointzm geocoll_textzm2", /* 190 */ "geocoll_textzm2 ::= EWKT_COMMA multilinestringzm geocoll_textzm2", /* 191 */ "geocoll_textzm2 ::= EWKT_COMMA multipolygonzm geocoll_textzm2", /* 192 */ "geocoll_textzm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2", /* 193 */ "main ::= in", /* 194 */ "in ::=", /* 195 */ "in ::= in state EWKT_NEWLINE", /* 196 */ "state ::= program", /* 197 */ "program ::= geo_text", /* 198 */ "program ::= geo_textm", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number ** of errors. Return 0 on success. */ static int yyGrowStack (yyParser * p) { int newSize; int idx; yyStackEntry *pNew; newSize = p->yystksz * 2 + 100; idx = p->yytos ? (int) (p->yytos - p->yystack) : 0; if (p->yystack == &p->yystk0) { pNew = malloc (newSize * sizeof (pNew[0])); if (pNew) pNew[0] = p->yystk0; } else { pNew = realloc (p->yystack, newSize * sizeof (pNew[0])); } if (pNew) { p->yystack = pNew; p->yytos = &p->yystack[idx]; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sStack grows from %d to %d entries.\n", yyTracePrompt, p->yystksz, newSize); } #endif p->yystksz = newSize; } return pNew == 0; } #endif /* Datatype of the argument to the memory allocated passed as the ** second argument to ParseAlloc() below. This can be changed by ** putting an appropriate #define in the %include section of the input ** grammar. */ #ifndef YYMALLOCARGTYPE #define YYMALLOCARGTYPE size_t #endif /* Initialize a new parser that has already been allocated. */ static void ParseInit (void *yypParser) { yyParser *pParser = (yyParser *) yypParser; #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 pParser->yytos = NULL; pParser->yystack = NULL; pParser->yystksz = 0; if (yyGrowStack (pParser)) { pParser->yystack = &pParser->yystk0; pParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY pParser->yyerrcnt = -1; #endif pParser->yytos = pParser->yystack; pParser->yystack[0].stateno = 0; pParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH - 1]; #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like ................................................................................ ** Inputs: ** A pointer to the function used to allocate memory. ** ** Outputs: ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ void * ParseAlloc (void *(*mallocProc) (YYMALLOCARGTYPE)) { yyParser *pParser; pParser = (yyParser *) (*mallocProc) ((YYMALLOCARGTYPE) sizeof (yyParser)); if (pParser) ParseInit (pParser); return pParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ /* The following function deletes the "minor type" or semantic value ** associated with a symbol. The symbol can be either a terminal ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is ** a pointer to the value to be deleted. The code used to do the ** deletions is derived from the %destructor and/or %token_destructor ** directives of the input grammar. */ static void yy_destructor (yyParser * yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE * yypminor /* The object to be destroyed */ ) { ParseARG_FETCH; switch (yymajor) { /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen ** when the symbol is popped from the stack during a ** reduce or during error processing or when a parser is ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ /********* Begin destructor definitions ***************************************/ /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } /* ** Pop the parser's stack once. ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. */ static void yy_pop_parser_stack (yyParser * pParser) { yyStackEntry *yytos; assert (pParser->yytos != 0); assert (pParser->yytos > pParser->yystack); yytos = pParser->yytos--; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif yy_destructor (pParser, yytos->major, &yytos->minor); } /* ** Clear all secondary memory allocations from the parser */ static void ParseFinalize (void *p) { yyParser *pParser = (yyParser *) p; while (pParser->yytos > pParser->yystack) yy_pop_parser_stack (pParser); #if YYSTACKDEPTH<=0 if (pParser->yystack != &pParser->yystk0) free (pParser->yystack); #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** ** If the YYPARSEFREENEVERNULL macro exists (for example because it ** is defined in a %include section of the input grammar) then it is ** assumed that the input pointer is never NULL. */ void ParseFree (void *p, /* The parser to be deleted */ void (*freeProc) (void *) /* Function used to reclaim memory */ ) { #ifndef YYPARSEFREENEVERNULL if (p == 0) return; #endif ParseFinalize (p); (*freeProc) (p); } #endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. */ #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak (void *p) { yyParser *pParser = (yyParser *) p; return pParser->yyhwm; } #endif /* This array of booleans keeps track of the parser statement ** coverage. The element yycoverage[X][Y] is set when the parser ** is in state X and has a lookahead token Y. In a well-tested ** systems, every element of this matrix should end up being set. ................................................................................ ** ** (1) has not been used by the parser, and ** (2) is not a syntax error. ** ** Return the number of missed state/lookahead combinations. */ #if defined(YYCOVERAGE) int ParseCoverage (FILE * out) { int stateno, iLookAhead, i; int nMissed = 0; for (stateno = 0; stateno < YYNSTATE; stateno++) { i = yy_shift_ofst[stateno]; for (iLookAhead = 0; iLookAhead < YYNTOKEN; iLookAhead++) { if (yy_lookahead[i + iLookAhead] != iLookAhead) continue; if (yycoverage[stateno][iLookAhead] == 0) nMissed++; if (out) { fprintf (out, "State %d lookahead %s %s\n", stateno, yyTokenName[iLookAhead], yycoverage[stateno][iLookAhead] ? "ok" : "missed"); } } } return nMissed; } #endif /* ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ static unsigned int yy_find_shift_action (yyParser * pParser, /* The parser */ YYCODETYPE iLookAhead /* The look-ahead token */ ) { int i; int stateno = pParser->yytos->stateno; if (stateno > YY_MAX_SHIFT) return stateno; assert (stateno <= YY_SHIFT_COUNT); #if defined(YYCOVERAGE) yycoverage[stateno][iLookAhead] = 1; #endif do { i = yy_shift_ofst[stateno]; assert (i >= 0); assert (i + YYNTOKEN <= (int) sizeof (yy_lookahead) / sizeof (yy_lookahead[0])); assert (iLookAhead != YYNOCODE); assert (iLookAhead < YYNTOKEN); i += iLookAhead; if (yy_lookahead[i] != iLookAhead) { #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0]) && (iFallback = yyFallback[iLookAhead]) != 0) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); } #endif assert (yyFallback[iFallback] == 0); /* Fallback loop must terminate */ iLookAhead = iFallback; continue; } #endif #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; if ( #if YY_SHIFT_MIN+YYWILDCARD<0 j >= 0 && #endif #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT j < YY_ACTTAB_COUNT && #endif yy_lookahead[j] == YYWILDCARD && iLookAhead > 0) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ return yy_default[stateno]; } else { return yy_action[i]; } } while (1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ static int yy_find_reduce_action (int stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ) { int i; #ifdef YYERRORSYMBOL if (stateno > YY_REDUCE_COUNT) { return yy_default[stateno]; } #else assert (stateno <= YY_REDUCE_COUNT); #endif i = yy_reduce_ofst[stateno]; assert (iLookAhead != YYNOCODE); i += iLookAhead; #ifdef YYERRORSYMBOL if (i < 0 || i >= YY_ACTTAB_COUNT || yy_lookahead[i] != iLookAhead) { return yy_default[stateno]; } #else assert (i >= 0 && i < YY_ACTTAB_COUNT); assert (yy_lookahead[i] == iLookAhead); #endif return yy_action[i]; } /* ** The following routine is called if the stack overflows. */ static void yyStackOverflow (yyParser * yypParser) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt); } #endif while (yypParser->yytos > yypParser->yystack) yy_pop_parser_stack (yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ /******** Begin %stack_overflow code ******************************************/ spatialite_e ("Giving up. Parser stack overflow\n"); /******** End %stack_overflow code ********************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ } /* ** Print tracing information for a SHIFT action */ #ifndef NDEBUG static void yyTraceShift (yyParser * yypParser, int yyNewState, const char *zTag) { if (yyTraceFILE) { if (yyNewState < YYNSTATE) { fprintf (yyTraceFILE, "%s%s '%s', go to state %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState); } else { fprintf (yyTraceFILE, "%s%s '%s', pending reduce %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState - YY_MIN_REDUCE); } } } #else #define yyTraceShift(X,Y,Z) #endif /* ** Perform a shift action. */ static void yy_shift (yyParser * yypParser, /* The parser to be shifted */ int yyNewState, /* The new state to shift in */ int yyMajor, /* The major token to shift in */ ParseTOKENTYPE yyMinor /* The minor token to shift in */ ) { yyStackEntry *yytos; yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH if ((int) (yypParser->yytos - yypParser->yystack) > yypParser->yyhwm) { yypParser->yyhwm++; assert (yypParser->yyhwm == (int) (yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if (yypParser->yytos > yypParser->yystackEnd) { yypParser->yytos--; yyStackOverflow (yypParser); return; } #else if (yypParser->yytos >= &yypParser->yystack[yypParser->yystksz]) { if (yyGrowStack (yypParser)) { yypParser->yytos--; yyStackOverflow (yypParser); return; } } #endif if (yyNewState > YY_MAX_SHIFT) { yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } yytos = yypParser->yytos; yytos->stateno = (YYACTIONTYPE) yyNewState; yytos->major = (YYCODETYPE) yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift (yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { {25, -1}, /* (0) geo_text ::= point */ {25, -1}, /* (1) geo_text ::= pointz */ {25, -1}, /* (2) geo_text ::= pointzm */ {25, -1}, /* (3) geo_text ::= linestring */ {25, -1}, /* (4) geo_text ::= linestringz */ {25, -1}, /* (5) geo_text ::= linestringzm */ {25, -1}, /* (6) geo_text ::= polygon */ {25, -1}, /* (7) geo_text ::= polygonz */ {25, -1}, /* (8) geo_text ::= polygonzm */ {25, -1}, /* (9) geo_text ::= multipoint */ {25, -1}, /* (10) geo_text ::= multipointz */ {25, -1}, /* (11) geo_text ::= multipointzm */ {25, -1}, /* (12) geo_text ::= multilinestring */ {25, -1}, /* (13) geo_text ::= multilinestringz */ {25, -1}, /* (14) geo_text ::= multilinestringzm */ {25, -1}, /* (15) geo_text ::= multipolygon */ {25, -1}, /* (16) geo_text ::= multipolygonz */ {25, -1}, /* (17) geo_text ::= multipolygonzm */ {25, -1}, /* (18) geo_text ::= geocoll */ {25, -1}, /* (19) geo_text ::= geocollz */ {25, -1}, /* (20) geo_text ::= geocollzm */ {26, -1}, /* (21) geo_textm ::= pointm */ {26, -1}, /* (22) geo_textm ::= linestringm */ {26, -1}, /* (23) geo_textm ::= polygonm */ {26, -1}, /* (24) geo_textm ::= multipointm */ {26, -1}, /* (25) geo_textm ::= multilinestringm */ {26, -1}, /* (26) geo_textm ::= multipolygonm */ {26, -1}, /* (27) geo_textm ::= geocollm */ {27, -4}, /* (28) point ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy EWKT_CLOSE_BRACKET */ {28, -4}, /* (29) pointz ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz EWKT_CLOSE_BRACKET */ {48, -4}, /* (30) pointm ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym EWKT_CLOSE_BRACKET */ {29, -4}, /* (31) pointzm ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm EWKT_CLOSE_BRACKET */ {59, -4}, /* (32) point_brkt_coordxy ::= EWKT_OPEN_BRACKET coord coord EWKT_CLOSE_BRACKET */ {61, -5}, /* (33) point_brkt_coordxym ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ {62, -5}, /* (34) point_brkt_coordxyz ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ {63, -6}, /* (35) point_brkt_coordxyzm ::= EWKT_OPEN_BRACKET coord coord coord coord EWKT_CLOSE_BRACKET */ {55, -2}, /* (36) point_coordxy ::= coord coord */ {57, -3}, /* (37) point_coordxym ::= coord coord coord */ {56, -3}, /* (38) point_coordxyz ::= coord coord coord */ {58, -4}, /* (39) point_coordxyzm ::= coord coord coord coord */ {60, -1}, /* (40) coord ::= EWKT_NUM */ {64, 0}, /* (41) extra_brkt_pointsxy ::= */ {64, -3}, /* (42) extra_brkt_pointsxy ::= EWKT_COMMA point_brkt_coordxy extra_brkt_pointsxy */ {65, 0}, /* (43) extra_brkt_pointsxym ::= */ {65, -3}, /* (44) extra_brkt_pointsxym ::= EWKT_COMMA point_brkt_coordxym extra_brkt_pointsxym */ {66, 0}, /* (45) extra_brkt_pointsxyz ::= */ {66, -3}, /* (46) extra_brkt_pointsxyz ::= EWKT_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ {67, 0}, /* (47) extra_brkt_pointsxyzm ::= */ {67, -3}, /* (48) extra_brkt_pointsxyzm ::= EWKT_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ {68, 0}, /* (49) extra_pointsxy ::= */ {68, -3}, /* (50) extra_pointsxy ::= EWKT_COMMA point_coordxy extra_pointsxy */ {69, 0}, /* (51) extra_pointsxym ::= */ {69, -3}, /* (52) extra_pointsxym ::= EWKT_COMMA point_coordxym extra_pointsxym */ {70, 0}, /* (53) extra_pointsxyz ::= */ {70, -3}, /* (54) extra_pointsxyz ::= EWKT_COMMA point_coordxyz extra_pointsxyz */ {71, 0}, /* (55) extra_pointsxyzm ::= */ {71, -3}, /* (56) extra_pointsxyzm ::= EWKT_COMMA point_coordxyzm extra_pointsxyzm */ {30, -2}, /* (57) linestring ::= EWKT_LINESTRING linestring_text */ {49, -2}, /* (58) linestringm ::= EWKT_LINESTRING_M linestring_textm */ {31, -2}, /* (59) linestringz ::= EWKT_LINESTRING linestring_textz */ {32, -2}, /* (60) linestringzm ::= EWKT_LINESTRING linestring_textzm */ {72, -6}, /* (61) linestring_text ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ {73, -6}, /* (62) linestring_textm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ {74, -6}, /* (63) linestring_textz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ {75, -6}, /* (64) linestring_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ {33, -2}, /* (65) polygon ::= EWKT_POLYGON polygon_text */ {50, -2}, /* (66) polygonm ::= EWKT_POLYGON_M polygon_textm */ {34, -2}, /* (67) polygonz ::= EWKT_POLYGON polygon_textz */ {35, -2}, /* (68) polygonzm ::= EWKT_POLYGON polygon_textzm */ {76, -4}, /* (69) polygon_text ::= EWKT_OPEN_BRACKET ring extra_rings EWKT_CLOSE_BRACKET */ {77, -4}, /* (70) polygon_textm ::= EWKT_OPEN_BRACKET ringm extra_ringsm EWKT_CLOSE_BRACKET */ {78, -4}, /* (71) polygon_textz ::= EWKT_OPEN_BRACKET ringz extra_ringsz EWKT_CLOSE_BRACKET */ {79, -4}, /* (72) polygon_textzm ::= EWKT_OPEN_BRACKET ringzm extra_ringszm EWKT_CLOSE_BRACKET */ {80, -10}, /* (73) ring ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ {81, 0}, /* (74) extra_rings ::= */ {81, -3}, /* (75) extra_rings ::= EWKT_COMMA ring extra_rings */ {82, -10}, /* (76) ringm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ {83, 0}, /* (77) extra_ringsm ::= */ {83, -3}, /* (78) extra_ringsm ::= EWKT_COMMA ringm extra_ringsm */ {84, -10}, /* (79) ringz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ {85, 0}, /* (80) extra_ringsz ::= */ {85, -3}, /* (81) extra_ringsz ::= EWKT_COMMA ringz extra_ringsz */ {86, -10}, /* (82) ringzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ {87, 0}, /* (83) extra_ringszm ::= */ {87, -3}, /* (84) extra_ringszm ::= EWKT_COMMA ringzm extra_ringszm */ {36, -2}, /* (85) multipoint ::= EWKT_MULTIPOINT multipoint_text */ {51, -2}, /* (86) multipointm ::= EWKT_MULTIPOINT_M multipoint_textm */ {37, -2}, /* (87) multipointz ::= EWKT_MULTIPOINT multipoint_textz */ {38, -2}, /* (88) multipointzm ::= EWKT_MULTIPOINT multipoint_textzm */ {88, -4}, /* (89) multipoint_text ::= EWKT_OPEN_BRACKET point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ {89, -4}, /* (90) multipoint_textm ::= EWKT_OPEN_BRACKET point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ {90, -4}, /* (91) multipoint_textz ::= EWKT_OPEN_BRACKET point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ {91, -4}, /* (92) multipoint_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ {88, -4}, /* (93) multipoint_text ::= EWKT_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy EWKT_CLOSE_BRACKET */ {89, -4}, /* (94) multipoint_textm ::= EWKT_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym EWKT_CLOSE_BRACKET */ {90, -4}, /* (95) multipoint_textz ::= EWKT_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz EWKT_CLOSE_BRACKET */ {91, -4}, /* (96) multipoint_textzm ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm EWKT_CLOSE_BRACKET */ {39, -2}, /* (97) multilinestring ::= EWKT_MULTILINESTRING multilinestring_text */ {52, -2}, /* (98) multilinestringm ::= EWKT_MULTILINESTRING_M multilinestring_textm */ {40, -2}, /* (99) multilinestringz ::= EWKT_MULTILINESTRING multilinestring_textz */ {41, -2}, /* (100) multilinestringzm ::= EWKT_MULTILINESTRING multilinestring_textzm */ {92, -4}, /* (101) multilinestring_text ::= EWKT_OPEN_BRACKET linestring_text multilinestring_text2 EWKT_CLOSE_BRACKET */ {96, 0}, /* (102) multilinestring_text2 ::= */ {96, -3}, /* (103) multilinestring_text2 ::= EWKT_COMMA linestring_text multilinestring_text2 */ {93, -4}, /* (104) multilinestring_textm ::= EWKT_OPEN_BRACKET linestring_textm multilinestring_textm2 EWKT_CLOSE_BRACKET */ {97, 0}, /* (105) multilinestring_textm2 ::= */ {97, -3}, /* (106) multilinestring_textm2 ::= EWKT_COMMA linestring_textm multilinestring_textm2 */ {94, -4}, /* (107) multilinestring_textz ::= EWKT_OPEN_BRACKET linestring_textz multilinestring_textz2 EWKT_CLOSE_BRACKET */ {98, 0}, /* (108) multilinestring_textz2 ::= */ {98, -3}, /* (109) multilinestring_textz2 ::= EWKT_COMMA linestring_textz multilinestring_textz2 */ {95, -4}, /* (110) multilinestring_textzm ::= EWKT_OPEN_BRACKET linestring_textzm multilinestring_textzm2 EWKT_CLOSE_BRACKET */ {99, 0}, /* (111) multilinestring_textzm2 ::= */ {99, -3}, /* (112) multilinestring_textzm2 ::= EWKT_COMMA linestring_textzm multilinestring_textzm2 */ {42, -2}, /* (113) multipolygon ::= EWKT_MULTIPOLYGON multipolygon_text */ {53, -2}, /* (114) multipolygonm ::= EWKT_MULTIPOLYGON_M multipolygon_textm */ {43, -2}, /* (115) multipolygonz ::= EWKT_MULTIPOLYGON multipolygon_textz */ {44, -2}, /* (116) multipolygonzm ::= EWKT_MULTIPOLYGON multipolygon_textzm */ {100, -4}, /* (117) multipolygon_text ::= EWKT_OPEN_BRACKET polygon_text multipolygon_text2 EWKT_CLOSE_BRACKET */ {104, 0}, /* (118) multipolygon_text2 ::= */ {104, -3}, /* (119) multipolygon_text2 ::= EWKT_COMMA polygon_text multipolygon_text2 */ {101, -4}, /* (120) multipolygon_textm ::= EWKT_OPEN_BRACKET polygon_textm multipolygon_textm2 EWKT_CLOSE_BRACKET */ {105, 0}, /* (121) multipolygon_textm2 ::= */ {105, -3}, /* (122) multipolygon_textm2 ::= EWKT_COMMA polygon_textm multipolygon_textm2 */ {102, -4}, /* (123) multipolygon_textz ::= EWKT_OPEN_BRACKET polygon_textz multipolygon_textz2 EWKT_CLOSE_BRACKET */ {106, 0}, /* (124) multipolygon_textz2 ::= */ {106, -3}, /* (125) multipolygon_textz2 ::= EWKT_COMMA polygon_textz multipolygon_textz2 */ {103, -4}, /* (126) multipolygon_textzm ::= EWKT_OPEN_BRACKET polygon_textzm multipolygon_textzm2 EWKT_CLOSE_BRACKET */ {107, 0}, /* (127) multipolygon_textzm2 ::= */ {107, -3}, /* (128) multipolygon_textzm2 ::= EWKT_COMMA polygon_textzm multipolygon_textzm2 */ {45, -2}, /* (129) geocoll ::= EWKT_GEOMETRYCOLLECTION geocoll_text */ {54, -2}, /* (130) geocollm ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm */ {46, -2}, /* (131) geocollz ::= EWKT_GEOMETRYCOLLECTION geocoll_textz */ {47, -2}, /* (132) geocollzm ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm */ {108, -4}, /* (133) geocoll_text ::= EWKT_OPEN_BRACKET point geocoll_text2 EWKT_CLOSE_BRACKET */ {108, -4}, /* (134) geocoll_text ::= EWKT_OPEN_BRACKET linestring geocoll_text2 EWKT_CLOSE_BRACKET */ {108, -4}, /* (135) geocoll_text ::= EWKT_OPEN_BRACKET polygon geocoll_text2 EWKT_CLOSE_BRACKET */ {108, -4}, /* (136) geocoll_text ::= EWKT_OPEN_BRACKET multipoint geocoll_text2 EWKT_CLOSE_BRACKET */ {108, -4}, /* (137) geocoll_text ::= EWKT_OPEN_BRACKET multilinestring geocoll_text2 EWKT_CLOSE_BRACKET */ {108, -4}, /* (138) geocoll_text ::= EWKT_OPEN_BRACKET multipolygon geocoll_text2 EWKT_CLOSE_BRACKET */ {108, -5}, /* (139) geocoll_text ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 EWKT_CLOSE_BRACKET */ {112, 0}, /* (140) geocoll_text2 ::= */ {112, -3}, /* (141) geocoll_text2 ::= EWKT_COMMA point geocoll_text2 */ {112, -3}, /* (142) geocoll_text2 ::= EWKT_COMMA linestring geocoll_text2 */ {112, -3}, /* (143) geocoll_text2 ::= EWKT_COMMA polygon geocoll_text2 */ {112, -3}, /* (144) geocoll_text2 ::= EWKT_COMMA multipoint geocoll_text2 */ {112, -3}, /* (145) geocoll_text2 ::= EWKT_COMMA multilinestring geocoll_text2 */ {112, -3}, /* (146) geocoll_text2 ::= EWKT_COMMA multipolygon geocoll_text2 */ {112, -4}, /* (147) geocoll_text2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ {109, -4}, /* (148) geocoll_textm ::= EWKT_OPEN_BRACKET pointm geocoll_textm2 EWKT_CLOSE_BRACKET */ {109, -4}, /* (149) geocoll_textm ::= EWKT_OPEN_BRACKET linestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ {109, -4}, /* (150) geocoll_textm ::= EWKT_OPEN_BRACKET polygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ {109, -4}, /* (151) geocoll_textm ::= EWKT_OPEN_BRACKET multipointm geocoll_textm2 EWKT_CLOSE_BRACKET */ {109, -4}, /* (152) geocoll_textm ::= EWKT_OPEN_BRACKET multilinestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ {109, -4}, /* (153) geocoll_textm ::= EWKT_OPEN_BRACKET multipolygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ {109, -5}, /* (154) geocoll_textm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 EWKT_CLOSE_BRACKET */ {113, 0}, /* (155) geocoll_textm2 ::= */ {113, -3}, /* (156) geocoll_textm2 ::= EWKT_COMMA pointm geocoll_textm2 */ {113, -3}, /* (157) geocoll_textm2 ::= EWKT_COMMA linestringm geocoll_textm2 */ {113, -3}, /* (158) geocoll_textm2 ::= EWKT_COMMA polygonm geocoll_textm2 */ {113, -3}, /* (159) geocoll_textm2 ::= EWKT_COMMA multipointm geocoll_textm2 */ {113, -3}, /* (160) geocoll_textm2 ::= EWKT_COMMA multilinestringm geocoll_textm2 */ {113, -3}, /* (161) geocoll_textm2 ::= EWKT_COMMA multipolygonm geocoll_textm2 */ {113, -4}, /* (162) geocoll_textm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ {110, -4}, /* (163) geocoll_textz ::= EWKT_OPEN_BRACKET pointz geocoll_textz2 EWKT_CLOSE_BRACKET */ {110, -4}, /* (164) geocoll_textz ::= EWKT_OPEN_BRACKET linestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ {110, -4}, /* (165) geocoll_textz ::= EWKT_OPEN_BRACKET polygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ {110, -4}, /* (166) geocoll_textz ::= EWKT_OPEN_BRACKET multipointz geocoll_textz2 EWKT_CLOSE_BRACKET */ {110, -4}, /* (167) geocoll_textz ::= EWKT_OPEN_BRACKET multilinestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ {110, -4}, /* (168) geocoll_textz ::= EWKT_OPEN_BRACKET multipolygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ {110, -5}, /* (169) geocoll_textz ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 EWKT_CLOSE_BRACKET */ {114, 0}, /* (170) geocoll_textz2 ::= */ {114, -3}, /* (171) geocoll_textz2 ::= EWKT_COMMA pointz geocoll_textz2 */ {114, -3}, /* (172) geocoll_textz2 ::= EWKT_COMMA linestringz geocoll_textz2 */ {114, -3}, /* (173) geocoll_textz2 ::= EWKT_COMMA polygonz geocoll_textz2 */ {114, -3}, /* (174) geocoll_textz2 ::= EWKT_COMMA multipointz geocoll_textz2 */ {114, -3}, /* (175) geocoll_textz2 ::= EWKT_COMMA multilinestringz geocoll_textz2 */ {114, -3}, /* (176) geocoll_textz2 ::= EWKT_COMMA multipolygonz geocoll_textz2 */ {114, -4}, /* (177) geocoll_textz2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 */ {111, -4}, /* (178) geocoll_textzm ::= EWKT_OPEN_BRACKET pointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ {111, -4}, /* (179) geocoll_textzm ::= EWKT_OPEN_BRACKET linestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ {111, -4}, /* (180) geocoll_textzm ::= EWKT_OPEN_BRACKET polygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ {111, -4}, /* (181) geocoll_textzm ::= EWKT_OPEN_BRACKET multipointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ {111, -4}, /* (182) geocoll_textzm ::= EWKT_OPEN_BRACKET multilinestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ {111, -4}, /* (183) geocoll_textzm ::= EWKT_OPEN_BRACKET multipolygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ {111, -5}, /* (184) geocoll_textzm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ {115, 0}, /* (185) geocoll_textzm2 ::= */ {115, -3}, /* (186) geocoll_textzm2 ::= EWKT_COMMA pointzm geocoll_textzm2 */ {115, -3}, /* (187) geocoll_textzm2 ::= EWKT_COMMA linestringzm geocoll_textzm2 */ {115, -3}, /* (188) geocoll_textzm2 ::= EWKT_COMMA polygonzm geocoll_textzm2 */ {115, -3}, /* (189) geocoll_textzm2 ::= EWKT_COMMA multipointzm geocoll_textzm2 */ {115, -3}, /* (190) geocoll_textzm2 ::= EWKT_COMMA multilinestringzm geocoll_textzm2 */ {115, -3}, /* (191) geocoll_textzm2 ::= EWKT_COMMA multipolygonzm geocoll_textzm2 */ {115, -4}, /* (192) geocoll_textzm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 */ {21, -1}, /* (193) main ::= in */ {22, 0}, /* (194) in ::= */ {22, -3}, /* (195) in ::= in state EWKT_NEWLINE */ {23, -1}, /* (196) state ::= program */ {24, -1}, /* (197) program ::= geo_text */ {24, -1}, /* (198) program ::= geo_textm */ }; static void yy_accept (yyParser *); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. ** ** The yyLookahead and yyLookaheadToken parameters provide reduce actions ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE ** if the lookahead token has already been consumed. As this procedure is ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ static void yy_reduce (yyParser * yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ ) { int yygoto; /* The next state */ int yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ ParseARG_FETCH; (void) yyLookahead; (void) yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if (yyTraceFILE && yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0]))) { yysize = yyRuleInfo[yyruleno].nrhs; if (yysize) { fprintf (yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); } else { fprintf (yyTraceFILE, "%sReduce %d [%s].\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno]); } } #endif /* NDEBUG */ /* Check that the stack is large enough to grow by a single entry ** if the RHS of the rule is empty. This ensures that there is room ** enough on the stack to push the LHS value */ if (yyRuleInfo[yyruleno].nrhs == 0) { #ifdef YYTRACKMAXSTACKDEPTH if ((int) (yypParser->yytos - yypParser->yystack) > yypParser->yyhwm) { yypParser->yyhwm++; assert (yypParser->yyhwm == (int) (yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if (yypParser->yytos >= yypParser->yystackEnd) { yyStackOverflow (yypParser); return; } #else if (yypParser->yytos >= &yypParser->yystack[yypParser->yystksz - 1]) { if (yyGrowStack (yypParser)) { yyStackOverflow (yypParser); return; } yymsp = yypParser->yytos; } #endif } switch (yyruleno) { /* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* geo_text ::= point */ case 1: /* geo_text ::= pointz */ yytestcase (yyruleno == 1); case 2: /* geo_text ::= pointzm */ yytestcase (yyruleno == 2); case 3: /* geo_text ::= linestring */ yytestcase (yyruleno == 3); case 4: /* geo_text ::= linestringz */ yytestcase (yyruleno == 4); case 5: /* geo_text ::= linestringzm */ yytestcase (yyruleno == 5); case 6: /* geo_text ::= polygon */ yytestcase (yyruleno == 6); case 7: /* geo_text ::= polygonz */ yytestcase (yyruleno == 7); case 8: /* geo_text ::= polygonzm */ yytestcase (yyruleno == 8); case 9: /* geo_text ::= multipoint */ yytestcase (yyruleno == 9); case 10: /* geo_text ::= multipointz */ yytestcase (yyruleno == 10); case 11: /* geo_text ::= multipointzm */ yytestcase (yyruleno == 11); case 12: /* geo_text ::= multilinestring */ yytestcase (yyruleno == 12); case 13: /* geo_text ::= multilinestringz */ yytestcase (yyruleno == 13); case 14: /* geo_text ::= multilinestringzm */ yytestcase (yyruleno == 14); case 15: /* geo_text ::= multipolygon */ yytestcase (yyruleno == 15); case 16: /* geo_text ::= multipolygonz */ yytestcase (yyruleno == 16); case 17: /* geo_text ::= multipolygonzm */ yytestcase (yyruleno == 17); case 18: /* geo_text ::= geocoll */ yytestcase (yyruleno == 18); case 19: /* geo_text ::= geocollz */ yytestcase (yyruleno == 19); case 20: /* geo_text ::= geocollzm */ yytestcase (yyruleno == 20); case 21: /* geo_textm ::= pointm */ yytestcase (yyruleno == 21); case 22: /* geo_textm ::= linestringm */ yytestcase (yyruleno == 22); case 23: /* geo_textm ::= polygonm */ yytestcase (yyruleno == 23); case 24: /* geo_textm ::= multipointm */ yytestcase (yyruleno == 24); case 25: /* geo_textm ::= multilinestringm */ yytestcase (yyruleno == 25); case 26: /* geo_textm ::= multipolygonm */ yytestcase (yyruleno == 26); case 27: /* geo_textm ::= geocollm */ yytestcase (yyruleno == 27); { p_data->result = yymsp[0].minor.yy0; } break; case 28: /* point ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy EWKT_CLOSE_BRACKET */ case 29: /* pointz ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 29); case 31: /* pointzm ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 31); { yymsp[-3].minor.yy0 = ewkt_buildGeomFromPoint (p_data, (gaiaPointPtr) yymsp[-1].minor.yy0); } break; case 30: /* pointm ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym EWKT_CLOSE_BRACKET */ { yymsp[-3].minor.yy0 = ewkt_buildGeomFromPoint (p_data, (gaiaPointPtr) yymsp[-1].minor.yy0); } break; case 32: /* point_brkt_coordxy ::= EWKT_OPEN_BRACKET coord coord EWKT_CLOSE_BRACKET */ { yymsp[-3].minor.yy0 = (void *) ewkt_point_xy (p_data, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0); } break; case 33: /* point_brkt_coordxym ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ { yymsp[-4].minor.yy0 = (void *) ewkt_point_xym (p_data, (double *) yymsp[-3].minor.yy0, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0); } break; case 34: /* point_brkt_coordxyz ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ { yymsp[-4].minor.yy0 = (void *) ewkt_point_xyz (p_data, (double *) yymsp[-3].minor.yy0, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0); } break; case 35: /* point_brkt_coordxyzm ::= EWKT_OPEN_BRACKET coord coord coord coord EWKT_CLOSE_BRACKET */ { yymsp[-5].minor.yy0 = (void *) ewkt_point_xyzm (p_data, (double *) yymsp[-4].minor.yy0, (double *) yymsp[-3].minor.yy0, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0); } break; case 36: /* point_coordxy ::= coord coord */ { yylhsminor.yy0 = (void *) ewkt_point_xy (p_data, (double *) yymsp[-1].minor.yy0, (double *) yymsp[0].minor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 37: /* point_coordxym ::= coord coord coord */ { yylhsminor.yy0 = (void *) ewkt_point_xym (p_data, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0, (double *) yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 38: /* point_coordxyz ::= coord coord coord */ { yylhsminor.yy0 = (void *) ewkt_point_xyz (p_data, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0, (double *) yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 39: /* point_coordxyzm ::= coord coord coord coord */ { yylhsminor.yy0 = (void *) ewkt_point_xyzm (p_data, (double *) yymsp[-3].minor.yy0, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0, (double *) yymsp[0].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 40: /* coord ::= EWKT_NUM */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 41: /* extra_brkt_pointsxy ::= */ case 43: /* extra_brkt_pointsxym ::= */ yytestcase (yyruleno == 43); case 45: /* extra_brkt_pointsxyz ::= */ yytestcase (yyruleno == 45); case 47: /* extra_brkt_pointsxyzm ::= */ yytestcase (yyruleno == 47); case 49: /* extra_pointsxy ::= */ yytestcase (yyruleno == 49); case 51: /* extra_pointsxym ::= */ yytestcase (yyruleno == 51); case 53: /* extra_pointsxyz ::= */ yytestcase (yyruleno == 53); case 55: /* extra_pointsxyzm ::= */ yytestcase (yyruleno == 55); case 74: /* extra_rings ::= */ yytestcase (yyruleno == 74); case 77: /* extra_ringsm ::= */ yytestcase (yyruleno == 77); case 80: /* extra_ringsz ::= */ yytestcase (yyruleno == 80); case 83: /* extra_ringszm ::= */ yytestcase (yyruleno == 83); case 102: /* multilinestring_text2 ::= */ yytestcase (yyruleno == 102); case 105: /* multilinestring_textm2 ::= */ yytestcase (yyruleno == 105); case 108: /* multilinestring_textz2 ::= */ yytestcase (yyruleno == 108); case 111: /* multilinestring_textzm2 ::= */ yytestcase (yyruleno == 111); case 118: /* multipolygon_text2 ::= */ yytestcase (yyruleno == 118); case 121: /* multipolygon_textm2 ::= */ yytestcase (yyruleno == 121); case 124: /* multipolygon_textz2 ::= */ yytestcase (yyruleno == 124); case 127: /* multipolygon_textzm2 ::= */ yytestcase (yyruleno == 127); case 140: /* geocoll_text2 ::= */ yytestcase (yyruleno == 140); case 155: /* geocoll_textm2 ::= */ yytestcase (yyruleno == 155); case 170: /* geocoll_textz2 ::= */ yytestcase (yyruleno == 170); case 185: /* geocoll_textzm2 ::= */ yytestcase (yyruleno == 185); { yymsp[1].minor.yy0 = NULL; } break; case 42: /* extra_brkt_pointsxy ::= EWKT_COMMA point_brkt_coordxy extra_brkt_pointsxy */ case 44: /* extra_brkt_pointsxym ::= EWKT_COMMA point_brkt_coordxym extra_brkt_pointsxym */ yytestcase (yyruleno == 44); case 46: /* extra_brkt_pointsxyz ::= EWKT_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ yytestcase (yyruleno == 46); case 48: /* extra_brkt_pointsxyzm ::= EWKT_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ yytestcase (yyruleno == 48); case 50: /* extra_pointsxy ::= EWKT_COMMA point_coordxy extra_pointsxy */ yytestcase (yyruleno == 50); case 52: /* extra_pointsxym ::= EWKT_COMMA point_coordxym extra_pointsxym */ yytestcase (yyruleno == 52); case 54: /* extra_pointsxyz ::= EWKT_COMMA point_coordxyz extra_pointsxyz */ yytestcase (yyruleno == 54); case 56: /* extra_pointsxyzm ::= EWKT_COMMA point_coordxyzm extra_pointsxyzm */ yytestcase (yyruleno == 56); { ((gaiaPointPtr) yymsp[-1].minor.yy0)->Next = (gaiaPointPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 57: /* linestring ::= EWKT_LINESTRING linestring_text */ case 58: /* linestringm ::= EWKT_LINESTRING_M linestring_textm */ yytestcase (yyruleno == 58); case 59: /* linestringz ::= EWKT_LINESTRING linestring_textz */ yytestcase (yyruleno == 59); case 60: /* linestringzm ::= EWKT_LINESTRING linestring_textzm */ yytestcase (yyruleno == 60); { yymsp[-1].minor.yy0 = ewkt_buildGeomFromLinestring (p_data, (gaiaLinestringPtr) yymsp[0].minor.yy0); } break; case 61: /* linestring_text ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) ewkt_linestring_xy (p_data, (gaiaPointPtr) yymsp[-4]. minor.yy0); } break; case 62: /* linestring_textm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) ewkt_linestring_xym (p_data, (gaiaPointPtr) yymsp[-4]. minor.yy0); } break; case 63: /* linestring_textz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) ewkt_linestring_xyz (p_data, (gaiaPointPtr) yymsp[-4]. minor.yy0); } break; case 64: /* linestring_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) ewkt_linestring_xyzm (p_data, (gaiaPointPtr) yymsp[-4]. minor.yy0); } break; case 65: /* polygon ::= EWKT_POLYGON polygon_text */ case 66: /* polygonm ::= EWKT_POLYGON_M polygon_textm */ yytestcase (yyruleno == 66); case 67: /* polygonz ::= EWKT_POLYGON polygon_textz */ yytestcase (yyruleno == 67); case 68: /* polygonzm ::= EWKT_POLYGON polygon_textzm */ yytestcase (yyruleno == 68); { yymsp[-1].minor.yy0 = ewkt_buildGeomFromPolygon (p_data, (gaiaPolygonPtr) yymsp[0]. minor.yy0); } break; case 69: /* polygon_text ::= EWKT_OPEN_BRACKET ring extra_rings EWKT_CLOSE_BRACKET */ { ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = (gaiaRingPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_polygon_xy (p_data, (gaiaRingPtr) yymsp[-2].minor.yy0); } break; case 70: /* polygon_textm ::= EWKT_OPEN_BRACKET ringm extra_ringsm EWKT_CLOSE_BRACKET */ { ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = (gaiaRingPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_polygon_xym (p_data, (gaiaRingPtr) yymsp[-2].minor.yy0); } break; case 71: /* polygon_textz ::= EWKT_OPEN_BRACKET ringz extra_ringsz EWKT_CLOSE_BRACKET */ { ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = (gaiaRingPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_polygon_xyz (p_data, (gaiaRingPtr) yymsp[-2].minor.yy0); } break; case 72: /* polygon_textzm ::= EWKT_OPEN_BRACKET ringzm extra_ringszm EWKT_CLOSE_BRACKET */ { ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = (gaiaRingPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_polygon_xyzm (p_data, (gaiaRingPtr) yymsp[-2]. minor.yy0); } break; case 73: /* ring ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = (gaiaPointPtr) yymsp[-6].minor.yy0; ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = (gaiaPointPtr) yymsp[-4].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) ewkt_ring_xy (p_data, (gaiaPointPtr) yymsp[-8].minor.yy0); } break; case 75: /* extra_rings ::= EWKT_COMMA ring extra_rings */ case 78: /* extra_ringsm ::= EWKT_COMMA ringm extra_ringsm */ yytestcase (yyruleno == 78); case 81: /* extra_ringsz ::= EWKT_COMMA ringz extra_ringsz */ yytestcase (yyruleno == 81); case 84: /* extra_ringszm ::= EWKT_COMMA ringzm extra_ringszm */ yytestcase (yyruleno == 84); { ((gaiaRingPtr) yymsp[-1].minor.yy0)->Next = (gaiaRingPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 76: /* ringm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = (gaiaPointPtr) yymsp[-6].minor.yy0; ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = (gaiaPointPtr) yymsp[-4].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) ewkt_ring_xym (p_data, (gaiaPointPtr) yymsp[-8].minor.yy0); } break; case 79: /* ringz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = (gaiaPointPtr) yymsp[-6].minor.yy0; ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = (gaiaPointPtr) yymsp[-4].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) ewkt_ring_xyz (p_data, (gaiaPointPtr) yymsp[-8].minor.yy0); } break; case 82: /* ringzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = (gaiaPointPtr) yymsp[-6].minor.yy0; ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = (gaiaPointPtr) yymsp[-4].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) ewkt_ring_xyzm (p_data, (gaiaPointPtr) yymsp[-8].minor.yy0); } break; case 85: /* multipoint ::= EWKT_MULTIPOINT multipoint_text */ case 86: /* multipointm ::= EWKT_MULTIPOINT_M multipoint_textm */ yytestcase (yyruleno == 86); case 87: /* multipointz ::= EWKT_MULTIPOINT multipoint_textz */ yytestcase (yyruleno == 87); case 88: /* multipointzm ::= EWKT_MULTIPOINT multipoint_textzm */ yytestcase (yyruleno == 88); case 97: /* multilinestring ::= EWKT_MULTILINESTRING multilinestring_text */ yytestcase (yyruleno == 97); case 98: /* multilinestringm ::= EWKT_MULTILINESTRING_M multilinestring_textm */ yytestcase (yyruleno == 98); case 99: /* multilinestringz ::= EWKT_MULTILINESTRING multilinestring_textz */ yytestcase (yyruleno == 99); case 100: /* multilinestringzm ::= EWKT_MULTILINESTRING multilinestring_textzm */ yytestcase (yyruleno == 100); case 113: /* multipolygon ::= EWKT_MULTIPOLYGON multipolygon_text */ yytestcase (yyruleno == 113); case 114: /* multipolygonm ::= EWKT_MULTIPOLYGON_M multipolygon_textm */ yytestcase (yyruleno == 114); case 115: /* multipolygonz ::= EWKT_MULTIPOLYGON multipolygon_textz */ yytestcase (yyruleno == 115); case 116: /* multipolygonzm ::= EWKT_MULTIPOLYGON multipolygon_textzm */ yytestcase (yyruleno == 116); case 129: /* geocoll ::= EWKT_GEOMETRYCOLLECTION geocoll_text */ yytestcase (yyruleno == 129); case 130: /* geocollm ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm */ yytestcase (yyruleno == 130); case 131: /* geocollz ::= EWKT_GEOMETRYCOLLECTION geocoll_textz */ yytestcase (yyruleno == 131); case 132: /* geocollzm ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm */ yytestcase (yyruleno == 132); { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 89: /* multipoint_text ::= EWKT_OPEN_BRACKET point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ case 93: /* multipoint_text ::= EWKT_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 93); { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipoint_xy (p_data, (gaiaPointPtr) yymsp[-2]. minor.yy0); } break; case 90: /* multipoint_textm ::= EWKT_OPEN_BRACKET point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ case 94: /* multipoint_textm ::= EWKT_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 94); { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipoint_xym (p_data, (gaiaPointPtr) yymsp[-2]. minor.yy0); } break; case 91: /* multipoint_textz ::= EWKT_OPEN_BRACKET point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ case 95: /* multipoint_textz ::= EWKT_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 95); { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipoint_xyz (p_data, (gaiaPointPtr) yymsp[-2]. minor.yy0); } break; case 92: /* multipoint_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ case 96: /* multipoint_textzm ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 96); { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipoint_xyzm (p_data, (gaiaPointPtr) yymsp[-2]. minor.yy0); } break; case 101: /* multilinestring_text ::= EWKT_OPEN_BRACKET linestring_text multilinestring_text2 EWKT_CLOSE_BRACKET */ { ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multilinestring_xy (p_data, (gaiaLinestringPtr) yymsp[-2].minor.yy0); } break; case 103: /* multilinestring_text2 ::= EWKT_COMMA linestring_text multilinestring_text2 */ case 106: /* multilinestring_textm2 ::= EWKT_COMMA linestring_textm multilinestring_textm2 */ yytestcase (yyruleno == 106); case 109: /* multilinestring_textz2 ::= EWKT_COMMA linestring_textz multilinestring_textz2 */ yytestcase (yyruleno == 109); case 112: /* multilinestring_textzm2 ::= EWKT_COMMA linestring_textzm multilinestring_textzm2 */ yytestcase (yyruleno == 112); { ((gaiaLinestringPtr) yymsp[-1].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 104: /* multilinestring_textm ::= EWKT_OPEN_BRACKET linestring_textm multilinestring_textm2 EWKT_CLOSE_BRACKET */ { ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multilinestring_xym (p_data, (gaiaLinestringPtr) yymsp[-2].minor.yy0); } break; case 107: /* multilinestring_textz ::= EWKT_OPEN_BRACKET linestring_textz multilinestring_textz2 EWKT_CLOSE_BRACKET */ { ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multilinestring_xyz (p_data, (gaiaLinestringPtr) yymsp[-2].minor.yy0); } break; case 110: /* multilinestring_textzm ::= EWKT_OPEN_BRACKET linestring_textzm multilinestring_textzm2 EWKT_CLOSE_BRACKET */ { ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multilinestring_xyzm (p_data, (gaiaLinestringPtr) yymsp[-2].minor.yy0); } break; case 117: /* multipolygon_text ::= EWKT_OPEN_BRACKET polygon_text multipolygon_text2 EWKT_CLOSE_BRACKET */ { ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipolygon_xy (p_data, (gaiaPolygonPtr) yymsp[-2].minor.yy0); } break; case 119: /* multipolygon_text2 ::= EWKT_COMMA polygon_text multipolygon_text2 */ case 122: /* multipolygon_textm2 ::= EWKT_COMMA polygon_textm multipolygon_textm2 */ yytestcase (yyruleno == 122); case 125: /* multipolygon_textz2 ::= EWKT_COMMA polygon_textz multipolygon_textz2 */ yytestcase (yyruleno == 125); case 128: /* multipolygon_textzm2 ::= EWKT_COMMA polygon_textzm multipolygon_textzm2 */ yytestcase (yyruleno == 128); { ((gaiaPolygonPtr) yymsp[-1].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 120: /* multipolygon_textm ::= EWKT_OPEN_BRACKET polygon_textm multipolygon_textm2 EWKT_CLOSE_BRACKET */ { ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipolygon_xym (p_data, (gaiaPolygonPtr) yymsp[-2].minor.yy0); } break; case 123: /* multipolygon_textz ::= EWKT_OPEN_BRACKET polygon_textz multipolygon_textz2 EWKT_CLOSE_BRACKET */ { ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipolygon_xyz (p_data, (gaiaPolygonPtr) yymsp[-2].minor.yy0); } break; case 126: /* multipolygon_textzm ::= EWKT_OPEN_BRACKET polygon_textzm multipolygon_textzm2 EWKT_CLOSE_BRACKET */ { ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_multipolygon_xyzm (p_data, (gaiaPolygonPtr) yymsp[-2].minor.yy0); } break; case 133: /* geocoll_text ::= EWKT_OPEN_BRACKET point geocoll_text2 EWKT_CLOSE_BRACKET */ case 134: /* geocoll_text ::= EWKT_OPEN_BRACKET linestring geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 134); case 135: /* geocoll_text ::= EWKT_OPEN_BRACKET polygon geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 135); case 136: /* geocoll_text ::= EWKT_OPEN_BRACKET multipoint geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 136); case 137: /* geocoll_text ::= EWKT_OPEN_BRACKET multilinestring geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 137); case 138: /* geocoll_text ::= EWKT_OPEN_BRACKET multipolygon geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 138); { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_geomColl_xy (p_data, (gaiaGeomCollPtr) yymsp[-2]. minor.yy0); } break; case 139: /* geocoll_text ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 EWKT_CLOSE_BRACKET */ { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) ewkt_geomColl_xy (p_data, (gaiaGeomCollPtr) yymsp[-2]. minor.yy0); } break; case 141: /* geocoll_text2 ::= EWKT_COMMA point geocoll_text2 */ case 142: /* geocoll_text2 ::= EWKT_COMMA linestring geocoll_text2 */ yytestcase (yyruleno == 142); case 143: /* geocoll_text2 ::= EWKT_COMMA polygon geocoll_text2 */ yytestcase (yyruleno == 143); case 144: /* geocoll_text2 ::= EWKT_COMMA multipoint geocoll_text2 */ yytestcase (yyruleno == 144); case 145: /* geocoll_text2 ::= EWKT_COMMA multilinestring geocoll_text2 */ yytestcase (yyruleno == 145); case 146: /* geocoll_text2 ::= EWKT_COMMA multipolygon geocoll_text2 */ yytestcase (yyruleno == 146); case 156: /* geocoll_textm2 ::= EWKT_COMMA pointm geocoll_textm2 */ yytestcase (yyruleno == 156); case 157: /* geocoll_textm2 ::= EWKT_COMMA linestringm geocoll_textm2 */ yytestcase (yyruleno == 157); case 158: /* geocoll_textm2 ::= EWKT_COMMA polygonm geocoll_textm2 */ yytestcase (yyruleno == 158); case 159: /* geocoll_textm2 ::= EWKT_COMMA multipointm geocoll_textm2 */ yytestcase (yyruleno == 159); case 160: /* geocoll_textm2 ::= EWKT_COMMA multilinestringm geocoll_textm2 */ yytestcase (yyruleno == 160); case 161: /* geocoll_textm2 ::= EWKT_COMMA multipolygonm geocoll_textm2 */ yytestcase (yyruleno == 161); case 171: /* geocoll_textz2 ::= EWKT_COMMA pointz geocoll_textz2 */ yytestcase (yyruleno == 171); case 172: /* geocoll_textz2 ::= EWKT_COMMA linestringz geocoll_textz2 */ yytestcase (yyruleno == 172); case 173: /* geocoll_textz2 ::= EWKT_COMMA polygonz geocoll_textz2 */ yytestcase (yyruleno == 173); case 174: /* geocoll_textz2 ::= EWKT_COMMA multipointz geocoll_textz2 */ yytestcase (yyruleno == 174); case 175: /* geocoll_textz2 ::= EWKT_COMMA multilinestringz geocoll_textz2 */ yytestcase (yyruleno == 175); case 176: /* geocoll_textz2 ::= EWKT_COMMA multipolygonz geocoll_textz2 */ yytestcase (yyruleno == 176); case 186: /* geocoll_textzm2 ::= EWKT_COMMA pointzm geocoll_textzm2 */ yytestcase (yyruleno == 186); case 187: /* geocoll_textzm2 ::= EWKT_COMMA linestringzm geocoll_textzm2 */ yytestcase (yyruleno == 187); case 188: /* geocoll_textzm2 ::= EWKT_COMMA polygonzm geocoll_textzm2 */ yytestcase (yyruleno == 188); case 189: /* geocoll_textzm2 ::= EWKT_COMMA multipointzm geocoll_textzm2 */ yytestcase (yyruleno == 189); case 190: /* geocoll_textzm2 ::= EWKT_COMMA multilinestringzm geocoll_textzm2 */ yytestcase (yyruleno == 190); case 191: /* geocoll_textzm2 ::= EWKT_COMMA multipolygonzm geocoll_textzm2 */ yytestcase (yyruleno == 191); { ((gaiaGeomCollPtr) yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 147: /* geocoll_text2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ case 162: /* geocoll_textm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ yytestcase (yyruleno == 162); case 177: /* geocoll_textz2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 */ yytestcase (yyruleno == 177); case 192: /* geocoll_textzm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 */ yytestcase (yyruleno == 192); { ((gaiaGeomCollPtr) yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[0].minor.yy0; yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; case 148: /* geocoll_textm ::= EWKT_OPEN_BRACKET pointm geocoll_textm2 EWKT_CLOSE_BRACKET */ case 149: /* geocoll_textm ::= EWKT_OPEN_BRACKET linestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 149); case 150: /* geocoll_textm ::= EWKT_OPEN_BRACKET polygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 150); case 151: /* geocoll_textm ::= EWKT_OPEN_BRACKET multipointm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 151); case 152: /* geocoll_textm ::= EWKT_OPEN_BRACKET multilinestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 152); case 153: /* geocoll_textm ::= EWKT_OPEN_BRACKET multipolygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 153); { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_geomColl_xym (p_data, (gaiaGeomCollPtr) yymsp[-2]. minor.yy0); } break; case 154: /* geocoll_textm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 EWKT_CLOSE_BRACKET */ { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) ewkt_geomColl_xym (p_data, (gaiaGeomCollPtr) yymsp[-2]. minor.yy0); } break; case 163: /* geocoll_textz ::= EWKT_OPEN_BRACKET pointz geocoll_textz2 EWKT_CLOSE_BRACKET */ case 164: /* geocoll_textz ::= EWKT_OPEN_BRACKET linestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 164); case 165: /* geocoll_textz ::= EWKT_OPEN_BRACKET polygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 165); case 166: /* geocoll_textz ::= EWKT_OPEN_BRACKET multipointz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 166); case 167: /* geocoll_textz ::= EWKT_OPEN_BRACKET multilinestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 167); case 168: /* geocoll_textz ::= EWKT_OPEN_BRACKET multipolygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 168); { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_geomColl_xyz (p_data, (gaiaGeomCollPtr) yymsp[-2]. minor.yy0); } break; case 169: /* geocoll_textz ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 EWKT_CLOSE_BRACKET */ { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) ewkt_geomColl_xyz (p_data, (gaiaGeomCollPtr) yymsp[-2]. minor.yy0); } break; case 178: /* geocoll_textzm ::= EWKT_OPEN_BRACKET pointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ case 179: /* geocoll_textzm ::= EWKT_OPEN_BRACKET linestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 179); case 180: /* geocoll_textzm ::= EWKT_OPEN_BRACKET polygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 180); case 181: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multipointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 181); case 182: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multilinestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 182); case 183: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multipolygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase (yyruleno == 183); { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) ewkt_geomColl_xyzm (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; case 184: /* geocoll_textzm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) ewkt_geomColl_xyzm (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; default: /* (193) main ::= in */ yytestcase (yyruleno == 193); /* (194) in ::= */ yytestcase (yyruleno == 194); /* (195) in ::= in state EWKT_NEWLINE */ yytestcase (yyruleno == 195); /* (196) state ::= program (OPTIMIZED OUT) */ assert (yyruleno != 196); /* (197) program ::= geo_text (OPTIMIZED OUT) */ assert (yyruleno != 197); /* (198) program ::= geo_textm (OPTIMIZED OUT) */ assert (yyruleno != 198); break; /********** End reduce actions ************************************************/ }; assert (yyruleno < sizeof (yyRuleInfo) / sizeof (yyRuleInfo[0])); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action (yymsp[yysize].stateno, (YYCODETYPE) yygoto); /* There are no SHIFTREDUCE actions on nonterminals because the table ** generator has simplified them to pure REDUCE actions. */ assert (!(yyact > YY_MAX_SHIFT && yyact <= YY_MAX_SHIFTREDUCE)); /* It is not possible for a REDUCE to be followed by an error */ assert (yyact != YY_ERROR_ACTION); yymsp += yysize + 1; yypParser->yytos = yymsp; yymsp->stateno = (YYACTIONTYPE) yyact; yymsp->major = (YYCODETYPE) yygoto; yyTraceShift (yypParser, yyact, "... then shift"); } /* ** The following code executes when the parse fails */ #ifndef YYNOERRORRECOVERY static void yy_parse_failed (yyParser * yypParser /* The parser */ ) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt); } #endif while (yypParser->yytos > yypParser->yystack) yy_pop_parser_stack (yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } #endif /* YYNOERRORRECOVERY */ /* ** The following code executes when a syntax error first occurs. */ static void yy_syntax_error (yyParser * yypParser, /* The parser */ int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ) { ParseARG_FETCH; #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ /* ** when the LEMON parser encounters an error ** then this global variable is set */ p_data->ewkt_parse_error = 1; p_data->result = NULL; /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* ** The following is executed when the parser accepts */ static void yy_accept (yyParser * yypParser /* The parser */ ) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt); } #endif #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif assert (yypParser->yytos == yypParser->yystack); /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ /*********** End %parse_accept code *******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* The main parser program. ** The first argument is a pointer to a structure obtained from ** "ParseAlloc" which describes the current state of the parser. ** The second argument is the major token number. The third is ** the minor token. The fourth optional argument is whatever the ................................................................................ ** <li> The minor token number. ** <li> An option argument of a grammar-specified type. ** </ul> ** ** Outputs: ** None. */ void Parse (void *yyp, /* The parser */ int yymajor, /* The major token code number */ ParseTOKENTYPE yyminor /* The value for the token */ ParseARG_PDECL /* Optional %extra_argument parameter */ ) { YYMINORTYPE yyminorunion; unsigned int yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif yyParser *yypParser; /* The parser */ yypParser = (yyParser *) yyp; assert (yypParser->yytos != 0); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor == 0); #endif ParseARG_STORE; #ifndef NDEBUG if (yyTraceFILE) { int stateno = yypParser->yytos->stateno; if (stateno < YY_MIN_REDUCE) { fprintf (yyTraceFILE, "%sInput '%s' in state %d\n", yyTracePrompt, yyTokenName[yymajor], stateno); } else { fprintf (yyTraceFILE, "%sInput '%s' with pending reduce %d\n", yyTracePrompt, yyTokenName[yymajor], stateno - YY_MIN_REDUCE); } } #endif do { yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor); if (yyact >= YY_MIN_REDUCE) { yy_reduce (yypParser, yyact - YY_MIN_REDUCE, yymajor, yyminor); } else if (yyact <= YY_MAX_SHIFTREDUCE) { yy_shift (yypParser, yyact, yymajor, yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif yymajor = YYNOCODE; } else if (yyact == YY_ACCEPT_ACTION) { yypParser->yytos--; yy_accept (yypParser); return; } else { assert (yyact == YY_ERROR_ACTION); yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt); } #endif #ifdef YYERRORSYMBOL /* A syntax error has occurred. ** The response to an error depends upon whether or not the ** grammar defines an error token "ERROR". ** ** This is what we do if the grammar does define ERROR: ** ** * Call the %syntax_error function. ** ** * Begin popping the stack until we enter a state where ** it is legal to shift the error symbol, then shift ** the error symbol. ** ** * Set the error count to three. ** ** * Begin accepting and shifting new tokens. No new error ** processing will occur until three tokens have been ** shifted successfully. ** */ if (yypParser->yyerrcnt < 0) { yy_syntax_error (yypParser, yymajor, yyminor); } yymx = yypParser->yytos->major; if (yymx == YYERRORSYMBOL || yyerrorhit) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sDiscard input token %s\n", yyTracePrompt, yyTokenName[yymajor]); } #endif yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yymajor = YYNOCODE; } else { while (yypParser->yytos >= yypParser->yystack && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action (yypParser-> yytos->stateno, YYERRORSYMBOL)) >= YY_MIN_REDUCE) { yy_pop_parser_stack (yypParser); } if (yypParser->yytos < yypParser->yystack || yymajor == 0) { yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yy_parse_failed (yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif yymajor = YYNOCODE; } else if (yymx != YYERRORSYMBOL) { yy_shift (yypParser, yyact, YYERRORSYMBOL, yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax ** error routine and continue going as if nothing had happened. ** ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ yy_syntax_error (yypParser, yymajor, yyminor); yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yymajor = YYNOCODE; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** ** * Report an error message, and throw away the input token. ** ** * If the input token is $, then fail the parse. ** ** As before, subsequent error messages are suppressed until ** three input tokens have been successfully shifted. */ if (yypParser->yyerrcnt <= 0) { yy_syntax_error (yypParser, yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); if (yyendofinput) { yy_parse_failed (yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif } yymajor = YYNOCODE; #endif } } while (yymajor != YYNOCODE && yypParser->yytos > yypParser->yystack); #ifndef NDEBUG if (yyTraceFILE) { yyStackEntry *i; char cDiv = '['; fprintf (yyTraceFILE, "%sReturn. Stack=", yyTracePrompt); for (i = &yypParser->yystack[1]; i <= yypParser->yytos; i++) { fprintf (yyTraceFILE, "%c%s", cDiv, yyTokenName[i->major]); cDiv = ' '; } fprintf (yyTraceFILE, "]\n"); } #endif return; } |
Changes to src/gaiageo/Gml.c.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 ... 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 ... 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 ... 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 ... 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 ... 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 ... 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 .... 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 |
** YY_ERROR_ACTION The yy_action[] code for syntax error ** YY_ACCEPT_ACTION The yy_action[] code for accept ** YY_NO_ACTION The yy_action[] code for no-op ** YY_MIN_REDUCE Minimum value for reduce actions ** YY_MAX_REDUCE Maximum value for reduce actions */ #ifndef INTERFACE # define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char #define YYNOCODE 28 #define YYACTIONTYPE unsigned char #define ParseTOKENTYPE void * typedef union { int yyinit; ParseTOKENTYPE yy0; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 1000000 #endif #define ParseARG_SDECL struct gml_data *p_data ; #define ParseARG_PDECL , struct gml_data *p_data #define ParseARG_FETCH struct gml_data *p_data = yypParser->p_data #define ParseARG_STORE yypParser->p_data = p_data #define YYNSTATE 27 #define YYNRULE 34 #define YYNTOKEN 9 #define YY_MAX_SHIFT 26 #define YY_MIN_SHIFTREDUCE 49 #define YY_MAX_SHIFTREDUCE 82 #define YY_ERROR_ACTION 83 ................................................................................ ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production ** code the yytestcase() macro should be turned off. But it is useful ** for testing. */ #ifndef yytestcase # define yytestcase(X) #endif /* Next are the tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement ** functions that take a state number and lookahead value and return an ** action integer. ................................................................................ ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (63) static const YYACTIONTYPE yy_action[] = { /* 0 */ 26, 26, 26, 4, 87, 5, 2, 2, 5, 5, /* 10 */ 100, 84, 1, 100, 100, 105, 106, 3, 8, 5, /* 20 */ 25, 6, 74, 23, 100, 109, 24, 12, 115, 23, /* 30 */ 13, 19, 14, 16, 95, 17, 99, 8, 21, 7, /* 40 */ 10, 10, 18, 97, 110, 15, 113, 114, 66, 14, /* 50 */ 9, 23, 101, 66, 20, 11, 65, 53, 70, 52, /* 60 */ 51, 22, 80, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 12, 13, 14, 15, 16, 17, 15, 15, 17, 17, /* 10 */ 22, 10, 11, 22, 22, 24, 24, 15, 18, 17, /* 20 */ 2, 3, 8, 5, 22, 25, 2, 3, 0, 5, /* 30 */ 18, 19, 4, 20, 21, 20, 21, 18, 2, 3, /* 40 */ 20, 20, 20, 21, 25, 2, 26, 26, 5, 4, /* 50 */ 18, 5, 23, 5, 23, 20, 3, 3, 7, 3, /* 60 */ 3, 6, 1, 27, 27, 27, 27, 27, 27, 27, /* 70 */ 27, 27, }; #define YY_SHIFT_COUNT (26) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (61) static const unsigned char yy_shift_ofst[] = { /* 0 */ 63, 28, 45, 45, 45, 18, 14, 14, 46, 46, /* 10 */ 14, 14, 14, 24, 43, 48, 14, 14, 14, 36, /* 20 */ 53, 54, 51, 55, 56, 57, 61, }; #define YY_REDUCE_COUNT (18) #define YY_REDUCE_MIN (-12) #define YY_REDUCE_MAX (35) static const signed char yy_reduce_ofst[] = { /* 0 */ 1, -12, -9, -8, 2, 12, 13, 15, 0, 19, /* 10 */ 20, 21, 22, 32, 29, 31, 35, 35, 35, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 116, 83, 104, 104, 86, 83, 91, 93, 108, 108, /* 10 */ 112, 112, 92, 83, 83, 83, 94, 98, 96, 83, /* 20 */ 83, 83, 83, 83, 83, 83, 83, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. ** ................................................................................ ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. ** ** After the "shift" half of a SHIFTREDUCE action, the stateno field ** actually contains the reduce action for the second half of the ** SHIFTREDUCE. */ struct yyStackEntry { YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */ }; typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH int yyhwm; /* High-water mark of the stack */ #endif #ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; #ifndef NDEBUG #include <stdio.h> static FILE *yyTraceFILE = 0; ................................................................................ ** line of trace output. If NULL, then tracing is ** turned off. ** </ul> ** ** Outputs: ** None. */ void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if( yyTraceFILE==0 ) yyTracePrompt = 0; else if( yyTracePrompt==0 ) yyTraceFILE = 0; } #endif /* NDEBUG */ #if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { /* 0 */ "$", /* 1 */ "GML_NEWLINE", /* 2 */ "GML_END", /* 3 */ "GML_CLOSE", /* 4 */ "GML_OPEN", /* 5 */ "GML_KEYWORD", /* 6 */ "GML_EQ", /* 7 */ "GML_VALUE", /* 8 */ "GML_COORD", /* 9 */ "error", /* 10 */ "main", /* 11 */ "in", /* 12 */ "state", /* 13 */ "program", /* 14 */ "gml_tree", /* 15 */ "node", /* 16 */ "node_chain", /* 17 */ "open_tag", /* 18 */ "attr", /* 19 */ "attributes", /* 20 */ "coord", /* 21 */ "coord_chain", /* 22 */ "close_tag", /* 23 */ "keyword", /* 24 */ "extra_nodes", /* 25 */ "extra_attr", /* 26 */ "extra_coord", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "gml_tree ::= node", /* 1 */ "gml_tree ::= node_chain", /* 2 */ "node ::= open_tag GML_END GML_CLOSE", /* 3 */ "node ::= open_tag attr GML_END GML_CLOSE", /* 4 */ "node ::= open_tag attributes GML_END GML_CLOSE", /* 5 */ "node ::= open_tag GML_CLOSE", /* 6 */ "node ::= open_tag attr GML_CLOSE", /* 7 */ "node ::= open_tag attributes GML_CLOSE", /* 8 */ "node ::= open_tag GML_CLOSE coord", /* 9 */ "node ::= open_tag GML_CLOSE coord_chain", /* 10 */ "node ::= open_tag attr GML_CLOSE coord", /* 11 */ "node ::= open_tag attr GML_CLOSE coord_chain", /* 12 */ "node ::= open_tag attributes GML_CLOSE coord", /* 13 */ "node ::= open_tag attributes GML_CLOSE coord_chain", /* 14 */ "node ::= close_tag", /* 15 */ "open_tag ::= GML_OPEN keyword", /* 16 */ "close_tag ::= GML_OPEN GML_END keyword GML_CLOSE", /* 17 */ "keyword ::= GML_KEYWORD", /* 18 */ "extra_nodes ::=", /* 19 */ "extra_nodes ::= node extra_nodes", /* 20 */ "node_chain ::= node node extra_nodes", /* 21 */ "attr ::= GML_KEYWORD GML_EQ GML_VALUE", /* 22 */ "extra_attr ::=", /* 23 */ "extra_attr ::= attr extra_attr", /* 24 */ "attributes ::= attr attr extra_attr", /* 25 */ "coord ::= GML_COORD", /* 26 */ "extra_coord ::=", /* 27 */ "extra_coord ::= coord extra_coord", /* 28 */ "coord_chain ::= coord coord extra_coord", /* 29 */ "main ::= in", /* 30 */ "in ::=", /* 31 */ "in ::= in state GML_NEWLINE", /* 32 */ "state ::= program", /* 33 */ "program ::= gml_tree", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number ** of errors. Return 0 on success. */ static int yyGrowStack(yyParser *p){ int newSize; int idx; yyStackEntry *pNew; newSize = p->yystksz*2 + 100; idx = p->yytos ? (int)(p->yytos - p->yystack) : 0; if( p->yystack==&p->yystk0 ){ pNew = malloc(newSize*sizeof(pNew[0])); if( pNew ) pNew[0] = p->yystk0; }else{ pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); } if( pNew ){ p->yystack = pNew; p->yytos = &p->yystack[idx]; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n", yyTracePrompt, p->yystksz, newSize); } #endif p->yystksz = newSize; } return pNew==0; } #endif /* Datatype of the argument to the memory allocated passed as the ** second argument to ParseAlloc() below. This can be changed by ** putting an appropriate #define in the %include section of the input ** grammar. */ #ifndef YYMALLOCARGTYPE # define YYMALLOCARGTYPE size_t #endif /* Initialize a new parser that has already been allocated. */ static void ParseInit(void *yypParser){ yyParser *pParser = (yyParser*)yypParser; #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 pParser->yytos = NULL; pParser->yystack = NULL; pParser->yystksz = 0; if( yyGrowStack(pParser) ){ pParser->yystack = &pParser->yystk0; pParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY pParser->yyerrcnt = -1; #endif pParser->yytos = pParser->yystack; pParser->yystack[0].stateno = 0; pParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH-1]; #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like ................................................................................ ** Inputs: ** A pointer to the function used to allocate memory. ** ** Outputs: ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)){ yyParser *pParser; pParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) ); if( pParser ) ParseInit(pParser); return pParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ /* The following function deletes the "minor type" or semantic value ** associated with a symbol. The symbol can be either a terminal ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is ** a pointer to the value to be deleted. The code used to do the ** deletions is derived from the %destructor and/or %token_destructor ** directives of the input grammar. */ static void yy_destructor( yyParser *yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE *yypminor /* The object to be destroyed */ ){ ParseARG_FETCH; switch( yymajor ){ /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen ** when the symbol is popped from the stack during a ** reduce or during error processing or when a parser is ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ /********* Begin destructor definitions ***************************************/ /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } /* ** Pop the parser's stack once. ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. */ static void yy_pop_parser_stack(yyParser *pParser){ yyStackEntry *yytos; assert( pParser->yytos!=0 ); assert( pParser->yytos > pParser->yystack ); yytos = pParser->yytos--; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif yy_destructor(pParser, yytos->major, &yytos->minor); } /* ** Clear all secondary memory allocations from the parser */ static void ParseFinalize(void *p){ yyParser *pParser = (yyParser*)p; while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser); #if YYSTACKDEPTH<=0 if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack); #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** ** If the YYPARSEFREENEVERNULL macro exists (for example because it ** is defined in a %include section of the input grammar) then it is ** assumed that the input pointer is never NULL. */ void ParseFree( void *p, /* The parser to be deleted */ void (*freeProc)(void*) /* Function used to reclaim memory */ ){ #ifndef YYPARSEFREENEVERNULL if( p==0 ) return; #endif ParseFinalize(p); (*freeProc)(p); } #endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. */ #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak(void *p){ yyParser *pParser = (yyParser*)p; return pParser->yyhwm; } #endif /* This array of booleans keeps track of the parser statement ** coverage. The element yycoverage[X][Y] is set when the parser ** is in state X and has a lookahead token Y. In a well-tested ** systems, every element of this matrix should end up being set. ................................................................................ ** ** (1) has not been used by the parser, and ** (2) is not a syntax error. ** ** Return the number of missed state/lookahead combinations. */ #if defined(YYCOVERAGE) int ParseCoverage(FILE *out){ int stateno, iLookAhead, i; int nMissed = 0; for(stateno=0; stateno<YYNSTATE; stateno++){ i = yy_shift_ofst[stateno]; for(iLookAhead=0; iLookAhead<YYNTOKEN; iLookAhead++){ if( yy_lookahead[i+iLookAhead]!=iLookAhead ) continue; if( yycoverage[stateno][iLookAhead]==0 ) nMissed++; if( out ){ fprintf(out,"State %d lookahead %s %s\n", stateno, yyTokenName[iLookAhead], yycoverage[stateno][iLookAhead] ? "ok" : "missed"); } } } return nMissed; } #endif /* ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ static unsigned int yy_find_shift_action( yyParser *pParser, /* The parser */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; int stateno = pParser->yytos->stateno; if( stateno>YY_MAX_SHIFT ) return stateno; assert( stateno <= YY_SHIFT_COUNT ); #if defined(YYCOVERAGE) yycoverage[stateno][iLookAhead] = 1; #endif do{ i = yy_shift_ofst[stateno]; assert( i>=0 ); assert( i+YYNTOKEN<=(int)sizeof(yy_lookahead)/sizeof(yy_lookahead[0]) ); assert( iLookAhead!=YYNOCODE ); assert( iLookAhead < YYNTOKEN ); i += iLookAhead; if( yy_lookahead[i]!=iLookAhead ){ #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) && (iFallback = yyFallback[iLookAhead])!=0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); } #endif assert( yyFallback[iFallback]==0 ); /* Fallback loop must terminate */ iLookAhead = iFallback; continue; } #endif #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; if( #if YY_SHIFT_MIN+YYWILDCARD<0 j>=0 && #endif #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT j<YY_ACTTAB_COUNT && #endif yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ return yy_action[i]; } }while(1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ static int yy_find_reduce_action( int stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; #ifdef YYERRORSYMBOL if( stateno>YY_REDUCE_COUNT ){ return yy_default[stateno]; } #else assert( stateno<=YY_REDUCE_COUNT ); #endif i = yy_reduce_ofst[stateno]; assert( iLookAhead!=YYNOCODE ); i += iLookAhead; #ifdef YYERRORSYMBOL if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){ return yy_default[stateno]; } #else assert( i>=0 && i<YY_ACTTAB_COUNT ); assert( yy_lookahead[i]==iLookAhead ); #endif return yy_action[i]; } /* ** The following routine is called if the stack overflows. */ static void yyStackOverflow(yyParser *yypParser){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); } #endif while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ /******** Begin %stack_overflow code ******************************************/ spatialite_e( "Giving up. Parser stack overflow\n"); /******** End %stack_overflow code ********************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ } /* ** Print tracing information for a SHIFT action */ #ifndef NDEBUG static void yyTraceShift(yyParser *yypParser, int yyNewState, const char *zTag){ if( yyTraceFILE ){ if( yyNewState<YYNSTATE ){ fprintf(yyTraceFILE,"%s%s '%s', go to state %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState); }else{ fprintf(yyTraceFILE,"%s%s '%s', pending reduce %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState - YY_MIN_REDUCE); } } } #else # define yyTraceShift(X,Y,Z) #endif /* ** Perform a shift action. */ static void yy_shift( yyParser *yypParser, /* The parser to be shifted */ int yyNewState, /* The new state to shift in */ int yyMajor, /* The major token to shift in */ ParseTOKENTYPE yyMinor /* The minor token to shift in */ ){ yyStackEntry *yytos; yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) ); } #endif #if YYSTACKDEPTH>0 if( yypParser->yytos>yypParser->yystackEnd ){ yypParser->yytos--; yyStackOverflow(yypParser); return; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){ if( yyGrowStack(yypParser) ){ yypParser->yytos--; yyStackOverflow(yypParser); return; } } #endif if( yyNewState > YY_MAX_SHIFT ){ yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } yytos = yypParser->yytos; yytos->stateno = (YYACTIONTYPE)yyNewState; yytos->major = (YYCODETYPE)yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift(yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { { 14, -1 }, /* (0) gml_tree ::= node */ { 14, -1 }, /* (1) gml_tree ::= node_chain */ { 15, -3 }, /* (2) node ::= open_tag GML_END GML_CLOSE */ { 15, -4 }, /* (3) node ::= open_tag attr GML_END GML_CLOSE */ { 15, -4 }, /* (4) node ::= open_tag attributes GML_END GML_CLOSE */ { 15, -2 }, /* (5) node ::= open_tag GML_CLOSE */ { 15, -3 }, /* (6) node ::= open_tag attr GML_CLOSE */ { 15, -3 }, /* (7) node ::= open_tag attributes GML_CLOSE */ { 15, -3 }, /* (8) node ::= open_tag GML_CLOSE coord */ { 15, -3 }, /* (9) node ::= open_tag GML_CLOSE coord_chain */ { 15, -4 }, /* (10) node ::= open_tag attr GML_CLOSE coord */ { 15, -4 }, /* (11) node ::= open_tag attr GML_CLOSE coord_chain */ { 15, -4 }, /* (12) node ::= open_tag attributes GML_CLOSE coord */ { 15, -4 }, /* (13) node ::= open_tag attributes GML_CLOSE coord_chain */ { 15, -1 }, /* (14) node ::= close_tag */ { 17, -2 }, /* (15) open_tag ::= GML_OPEN keyword */ { 22, -4 }, /* (16) close_tag ::= GML_OPEN GML_END keyword GML_CLOSE */ { 23, -1 }, /* (17) keyword ::= GML_KEYWORD */ { 24, 0 }, /* (18) extra_nodes ::= */ { 24, -2 }, /* (19) extra_nodes ::= node extra_nodes */ { 16, -3 }, /* (20) node_chain ::= node node extra_nodes */ { 18, -3 }, /* (21) attr ::= GML_KEYWORD GML_EQ GML_VALUE */ { 25, 0 }, /* (22) extra_attr ::= */ { 25, -2 }, /* (23) extra_attr ::= attr extra_attr */ { 19, -3 }, /* (24) attributes ::= attr attr extra_attr */ { 20, -1 }, /* (25) coord ::= GML_COORD */ { 26, 0 }, /* (26) extra_coord ::= */ { 26, -2 }, /* (27) extra_coord ::= coord extra_coord */ { 21, -3 }, /* (28) coord_chain ::= coord coord extra_coord */ { 10, -1 }, /* (29) main ::= in */ { 11, 0 }, /* (30) in ::= */ { 11, -3 }, /* (31) in ::= in state GML_NEWLINE */ { 12, -1 }, /* (32) state ::= program */ { 13, -1 }, /* (33) program ::= gml_tree */ }; static void yy_accept(yyParser*); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. ** ** The yyLookahead and yyLookaheadToken parameters provide reduce actions ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE ** if the lookahead token has already been consumed. As this procedure is ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ static void yy_reduce( yyParser *yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ ){ int yygoto; /* The next state */ int yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ ParseARG_FETCH; (void)yyLookahead; (void)yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ yysize = yyRuleInfo[yyruleno].nrhs; if( yysize ){ fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); }else{ fprintf(yyTraceFILE, "%sReduce %d [%s].\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno]); } } #endif /* NDEBUG */ /* Check that the stack is large enough to grow by a single entry ** if the RHS of the rule is empty. This ensures that there is room ** enough on the stack to push the LHS value */ if( yyRuleInfo[yyruleno].nrhs==0 ){ #ifdef YYTRACKMAXSTACKDEPTH if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if( yypParser->yytos>=yypParser->yystackEnd ){ yyStackOverflow(yypParser); return; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ if( yyGrowStack(yypParser) ){ yyStackOverflow(yypParser); return; } yymsp = yypParser->yytos; } #endif } switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* gml_tree ::= node */ case 1: /* gml_tree ::= node_chain */ yytestcase(yyruleno==1); { p_data->result = yymsp[0].minor.yy0; } break; case 2: /* node ::= open_tag GML_END GML_CLOSE */ { yylhsminor.yy0 = gml_createSelfClosedNode( p_data, (void *)yymsp[-2].minor.yy0, NULL); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 3: /* node ::= open_tag attr GML_END GML_CLOSE */ case 4: /* node ::= open_tag attributes GML_END GML_CLOSE */ yytestcase(yyruleno==4); { yylhsminor.yy0 = gml_createSelfClosedNode( p_data, (void *)yymsp[-3].minor.yy0, (void *)yymsp[-2].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 5: /* node ::= open_tag GML_CLOSE */ { yylhsminor.yy0 = gml_createNode( p_data, (void *)yymsp[-1].minor.yy0, NULL, NULL); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 6: /* node ::= open_tag attr GML_CLOSE */ case 7: /* node ::= open_tag attributes GML_CLOSE */ yytestcase(yyruleno==7); { yylhsminor.yy0 = gml_createNode( p_data, (void *)yymsp[-2].minor.yy0, (void *)yymsp[-1].minor.yy0, NULL); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 8: /* node ::= open_tag GML_CLOSE coord */ case 9: /* node ::= open_tag GML_CLOSE coord_chain */ yytestcase(yyruleno==9); { yylhsminor.yy0 = gml_createNode( p_data, (void *)yymsp[-2].minor.yy0, NULL, (void *)yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 10: /* node ::= open_tag attr GML_CLOSE coord */ case 11: /* node ::= open_tag attr GML_CLOSE coord_chain */ yytestcase(yyruleno==11); case 12: /* node ::= open_tag attributes GML_CLOSE coord */ yytestcase(yyruleno==12); case 13: /* node ::= open_tag attributes GML_CLOSE coord_chain */ yytestcase(yyruleno==13); { yylhsminor.yy0 = gml_createNode( p_data, (void *)yymsp[-3].minor.yy0, (void *)yymsp[-2].minor.yy0, (void *)yymsp[0].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 14: /* node ::= close_tag */ { yylhsminor.yy0 = gml_closingNode( p_data, (void *)yymsp[0].minor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 15: /* open_tag ::= GML_OPEN keyword */ { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 16: /* close_tag ::= GML_OPEN GML_END keyword GML_CLOSE */ { yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; case 17: /* keyword ::= GML_KEYWORD */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 18: /* extra_nodes ::= */ case 22: /* extra_attr ::= */ yytestcase(yyruleno==22); case 26: /* extra_coord ::= */ yytestcase(yyruleno==26); { yymsp[1].minor.yy0 = NULL; } break; case 19: /* extra_nodes ::= node extra_nodes */ { ((gmlNodePtr)yymsp[-1].minor.yy0)->Next = (gmlNodePtr)yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 20: /* node_chain ::= node node extra_nodes */ { ((gmlNodePtr)yymsp[-1].minor.yy0)->Next = (gmlNodePtr)yymsp[0].minor.yy0; ((gmlNodePtr)yymsp[-2].minor.yy0)->Next = (gmlNodePtr)yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 21: /* attr ::= GML_KEYWORD GML_EQ GML_VALUE */ { yylhsminor.yy0 = gml_attribute( p_data, (void *)yymsp[-2].minor.yy0, (void *)yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 23: /* extra_attr ::= attr extra_attr */ { ((gmlAttrPtr)yymsp[-1].minor.yy0)->Next = (gmlAttrPtr)yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 24: /* attributes ::= attr attr extra_attr */ { ((gmlAttrPtr)yymsp[-1].minor.yy0)->Next = (gmlAttrPtr)yymsp[0].minor.yy0; ((gmlAttrPtr)yymsp[-2].minor.yy0)->Next = (gmlAttrPtr)yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 25: /* coord ::= GML_COORD */ { yylhsminor.yy0 = gml_coord( p_data, (void *)yymsp[0].minor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 27: /* extra_coord ::= coord extra_coord */ { ((gmlCoordPtr)yymsp[-1].minor.yy0)->Next = (gmlCoordPtr)yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 28: /* coord_chain ::= coord coord extra_coord */ { ((gmlCoordPtr)yymsp[-1].minor.yy0)->Next = (gmlCoordPtr)yymsp[0].minor.yy0; ((gmlCoordPtr)yymsp[-2].minor.yy0)->Next = (gmlCoordPtr)yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; default: /* (29) main ::= in */ yytestcase(yyruleno==29); /* (30) in ::= */ yytestcase(yyruleno==30); /* (31) in ::= in state GML_NEWLINE */ yytestcase(yyruleno==31); /* (32) state ::= program (OPTIMIZED OUT) */ assert(yyruleno!=32); /* (33) program ::= gml_tree (OPTIMIZED OUT) */ assert(yyruleno!=33); break; /********** End reduce actions ************************************************/ }; assert( yyruleno<sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0]) ); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto); /* There are no SHIFTREDUCE actions on nonterminals because the table ** generator has simplified them to pure REDUCE actions. */ assert( !(yyact>YY_MAX_SHIFT && yyact<=YY_MAX_SHIFTREDUCE) ); /* It is not possible for a REDUCE to be followed by an error */ assert( yyact!=YY_ERROR_ACTION ); yymsp += yysize+1; yypParser->yytos = yymsp; yymsp->stateno = (YYACTIONTYPE)yyact; yymsp->major = (YYCODETYPE)yygoto; yyTraceShift(yypParser, yyact, "... then shift"); } /* ** The following code executes when the parse fails */ #ifndef YYNOERRORRECOVERY static void yy_parse_failed( yyParser *yypParser /* The parser */ ){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); } #endif while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } #endif /* YYNOERRORRECOVERY */ /* ** The following code executes when a syntax error first occurs. */ static void yy_syntax_error( yyParser *yypParser, /* The parser */ int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ){ ParseARG_FETCH; #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ /* ** when the LEMON parser encounters an error ** then this global variable is set */ p_data->gml_parse_error = 1; p_data->result = NULL; /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* ** The following is executed when the parser accepts */ static void yy_accept( yyParser *yypParser /* The parser */ ){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); } #endif #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif assert( yypParser->yytos==yypParser->yystack ); /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ /*********** End %parse_accept code *******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* The main parser program. ** The first argument is a pointer to a structure obtained from ** "ParseAlloc" which describes the current state of the parser. ** The second argument is the major token number. The third is ** the minor token. The fourth optional argument is whatever the ................................................................................ ** <li> The minor token number. ** <li> An option argument of a grammar-specified type. ** </ul> ** ** Outputs: ** None. */ void Parse( void *yyp, /* The parser */ int yymajor, /* The major token code number */ ParseTOKENTYPE yyminor /* The value for the token */ ParseARG_PDECL /* Optional %extra_argument parameter */ ){ YYMINORTYPE yyminorunion; unsigned int yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif yyParser *yypParser; /* The parser */ yypParser = (yyParser*)yyp; assert( yypParser->yytos!=0 ); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor==0); #endif ParseARG_STORE; #ifndef NDEBUG if( yyTraceFILE ){ int stateno = yypParser->yytos->stateno; if( stateno < YY_MIN_REDUCE ){ fprintf(yyTraceFILE,"%sInput '%s' in state %d\n", yyTracePrompt,yyTokenName[yymajor],stateno); }else{ fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n", yyTracePrompt,yyTokenName[yymajor],stateno-YY_MIN_REDUCE); } } #endif do{ yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); if( yyact >= YY_MIN_REDUCE ){ yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor,yyminor); }else if( yyact <= YY_MAX_SHIFTREDUCE ){ yy_shift(yypParser,yyact,yymajor,yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif yymajor = YYNOCODE; }else if( yyact==YY_ACCEPT_ACTION ){ yypParser->yytos--; yy_accept(yypParser); return; }else{ assert( yyact == YY_ERROR_ACTION ); yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); } #endif #ifdef YYERRORSYMBOL /* A syntax error has occurred. ** The response to an error depends upon whether or not the ** grammar defines an error token "ERROR". ** ** This is what we do if the grammar does define ERROR: ** ** * Call the %syntax_error function. ** ** * Begin popping the stack until we enter a state where ** it is legal to shift the error symbol, then shift ** the error symbol. ** ** * Set the error count to three. ** ** * Begin accepting and shifting new tokens. No new error ** processing will occur until three tokens have been ** shifted successfully. ** */ if( yypParser->yyerrcnt<0 ){ yy_syntax_error(yypParser,yymajor,yyminor); } yymx = yypParser->yytos->major; if( yymx==YYERRORSYMBOL || yyerrorhit ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sDiscard input token %s\n", yyTracePrompt,yyTokenName[yymajor]); } #endif yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion); yymajor = YYNOCODE; }else{ while( yypParser->yytos >= yypParser->yystack && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action( yypParser->yytos->stateno, YYERRORSYMBOL)) >= YY_MIN_REDUCE ){ yy_pop_parser_stack(yypParser); } if( yypParser->yytos < yypParser->yystack || yymajor==0 ){ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif yymajor = YYNOCODE; }else if( yymx!=YYERRORSYMBOL ){ yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax ** error routine and continue going as if nothing had happened. ** ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ yy_syntax_error(yypParser,yymajor, yyminor); yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yymajor = YYNOCODE; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** ** * Report an error message, and throw away the input token. ** ** * If the input token is $, then fail the parse. ** ** As before, subsequent error messages are suppressed until ** three input tokens have been successfully shifted. */ if( yypParser->yyerrcnt<=0 ){ yy_syntax_error(yypParser,yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); if( yyendofinput ){ yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif } yymajor = YYNOCODE; #endif } }while( yymajor!=YYNOCODE && yypParser->yytos>yypParser->yystack ); #ifndef NDEBUG if( yyTraceFILE ){ yyStackEntry *i; char cDiv = '['; fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt); for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){ fprintf(yyTraceFILE,"%c%s", cDiv, yyTokenName[i->major]); cDiv = ' '; } fprintf(yyTraceFILE,"]\n"); } #endif return; } |
| | > | | | | | | | | | | | | | > < | | | | | | > | > | | | > | | > < | | > > | > | | | | | | > | | | | | | | | | > | > | | > | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > | | | | | < < > > > > | > | > | | | > | | | > | | | | | | | > | > | | | | | | > | | | | | | | | > | > | < > | > | | | | | < > > | | > | | | | | | | | | | > | | > | > | | | | | > | < | | | | > > | > | > | | | | < > > > | | | > | > | | > | > | | | > | | < > > > | < > > > | | | > | | | | | | | < > > | | | > | | | | > | | < < > > > | | | > | < > | > | > | | > | | | | | | | | | | | < > | > | | | | | | | | > | > | | > | | | | < > > | | > | | | | < > | | > | | | | | | > > | | > | | < > > | | | | > | > | > | > | > | < > | > | > | | | | | | | | | | < > > | | | > | > | | | < > > | | | | | > | > | | | | | | > | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < > > | | | | | | | | < > > > | | > | | | > | > | | | | | | | | > | > | > | | | < > > | | | | > | > | | | | | | | > | | | | | | | | | | | > > | > | | > > > | > | | | | < > > > > > > > | | | > > | > > | | | | > > > > | > | | | | < > > > > > > | | | | > | > | < > > > > > > > | | | < > > > > | | | > | > | | > | > | | > | > | | | | > | > > | > | | > > > | > | | | | | > | > | | | | | < > > > > > | | | > > > | > | | | | | > | > | | | | | > | > | | | > > > | > | | | | | > | > | | | | | | | | | > | | < > | | | | | < > | | | | | | | | | < > > | | < > > | < > > | | | | | | | < > > | | | | | | < > > | | < > > | | < > | | | | | | | | < > > | | | | | | | | | | > | | > | | > | > | | > | | | > | | < > > > | < > > | | > | > | | | > | > | | | | < > > | | | | | | | | | | | | | | | | | | | | | < > > | | | > | > | | | | > | > | > | | > | | | < > > | | | > > | | | | > | < > > | | | | | | | | | | | < < > > | | | | | | | | | | | | | < > > | | < > | > | | | | | > | | > | | < > | > | | | | | | |
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 ... 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 ... 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 ... 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 ... 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 ... 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 ... 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 .... 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 |
** YY_ERROR_ACTION The yy_action[] code for syntax error ** YY_ACCEPT_ACTION The yy_action[] code for accept ** YY_NO_ACTION The yy_action[] code for no-op ** YY_MIN_REDUCE Minimum value for reduce actions ** YY_MAX_REDUCE Maximum value for reduce actions */ #ifndef INTERFACE #define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char #define YYNOCODE 28 #define YYACTIONTYPE unsigned char #define ParseTOKENTYPE void * typedef union { int yyinit; ParseTOKENTYPE yy0; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 1000000 #endif #define ParseARG_SDECL struct gml_data *p_data ; #define ParseARG_PDECL , struct gml_data *p_data #define ParseARG_FETCH struct gml_data *p_data = yypParser->p_data #define ParseARG_STORE yypParser->p_data = p_data #define YYNSTATE 27 #define YYNRULE 34 #define YYNTOKEN 9 #define YY_MAX_SHIFT 26 #define YY_MIN_SHIFTREDUCE 49 #define YY_MAX_SHIFTREDUCE 82 #define YY_ERROR_ACTION 83 ................................................................................ ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production ** code the yytestcase() macro should be turned off. But it is useful ** for testing. */ #ifndef yytestcase #define yytestcase(X) #endif /* Next are the tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement ** functions that take a state number and lookahead value and return an ** action integer. ................................................................................ ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (63) static const YYACTIONTYPE yy_action[] = { /* 0 */ 26, 26, 26, 4, 87, 5, 2, 2, 5, 5, /* 10 */ 100, 84, 1, 100, 100, 105, 106, 3, 8, 5, /* 20 */ 25, 6, 74, 23, 100, 109, 24, 12, 115, 23, /* 30 */ 13, 19, 14, 16, 95, 17, 99, 8, 21, 7, /* 40 */ 10, 10, 18, 97, 110, 15, 113, 114, 66, 14, /* 50 */ 9, 23, 101, 66, 20, 11, 65, 53, 70, 52, /* 60 */ 51, 22, 80, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 12, 13, 14, 15, 16, 17, 15, 15, 17, 17, /* 10 */ 22, 10, 11, 22, 22, 24, 24, 15, 18, 17, /* 20 */ 2, 3, 8, 5, 22, 25, 2, 3, 0, 5, /* 30 */ 18, 19, 4, 20, 21, 20, 21, 18, 2, 3, /* 40 */ 20, 20, 20, 21, 25, 2, 26, 26, 5, 4, /* 50 */ 18, 5, 23, 5, 23, 20, 3, 3, 7, 3, /* 60 */ 3, 6, 1, 27, 27, 27, 27, 27, 27, 27, /* 70 */ 27, 27, }; #define YY_SHIFT_COUNT (26) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (61) static const unsigned char yy_shift_ofst[] = { /* 0 */ 63, 28, 45, 45, 45, 18, 14, 14, 46, 46, /* 10 */ 14, 14, 14, 24, 43, 48, 14, 14, 14, 36, /* 20 */ 53, 54, 51, 55, 56, 57, 61, }; #define YY_REDUCE_COUNT (18) #define YY_REDUCE_MIN (-12) #define YY_REDUCE_MAX (35) static const signed char yy_reduce_ofst[] = { /* 0 */ 1, -12, -9, -8, 2, 12, 13, 15, 0, 19, /* 10 */ 20, 21, 22, 32, 29, 31, 35, 35, 35, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 116, 83, 104, 104, 86, 83, 91, 93, 108, 108, /* 10 */ 112, 112, 92, 83, 83, 83, 94, 98, 96, 83, /* 20 */ 83, 83, 83, 83, 83, 83, 83, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. ** ................................................................................ ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. ** ** After the "shift" half of a SHIFTREDUCE action, the stateno field ** actually contains the reduce action for the second half of the ** SHIFTREDUCE. */ struct yyStackEntry { YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */ }; typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH int yyhwm; /* High-water mark of the stack */ #endif #ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; #ifndef NDEBUG #include <stdio.h> static FILE *yyTraceFILE = 0; ................................................................................ ** line of trace output. If NULL, then tracing is ** turned off. ** </ul> ** ** Outputs: ** None. */ void ParseTrace (FILE * TraceFILE, char *zTracePrompt) { yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if (yyTraceFILE == 0) yyTracePrompt = 0; else if (yyTracePrompt == 0) yyTraceFILE = 0; } #endif /* NDEBUG */ #if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { /* 0 */ "$", /* 1 */ "GML_NEWLINE", /* 2 */ "GML_END", /* 3 */ "GML_CLOSE", /* 4 */ "GML_OPEN", /* 5 */ "GML_KEYWORD", /* 6 */ "GML_EQ", /* 7 */ "GML_VALUE", /* 8 */ "GML_COORD", /* 9 */ "error", /* 10 */ "main", /* 11 */ "in", /* 12 */ "state", /* 13 */ "program", /* 14 */ "gml_tree", /* 15 */ "node", /* 16 */ "node_chain", /* 17 */ "open_tag", /* 18 */ "attr", /* 19 */ "attributes", /* 20 */ "coord", /* 21 */ "coord_chain", /* 22 */ "close_tag", /* 23 */ "keyword", /* 24 */ "extra_nodes", /* 25 */ "extra_attr", /* 26 */ "extra_coord", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "gml_tree ::= node", /* 1 */ "gml_tree ::= node_chain", /* 2 */ "node ::= open_tag GML_END GML_CLOSE", /* 3 */ "node ::= open_tag attr GML_END GML_CLOSE", /* 4 */ "node ::= open_tag attributes GML_END GML_CLOSE", /* 5 */ "node ::= open_tag GML_CLOSE", /* 6 */ "node ::= open_tag attr GML_CLOSE", /* 7 */ "node ::= open_tag attributes GML_CLOSE", /* 8 */ "node ::= open_tag GML_CLOSE coord", /* 9 */ "node ::= open_tag GML_CLOSE coord_chain", /* 10 */ "node ::= open_tag attr GML_CLOSE coord", /* 11 */ "node ::= open_tag attr GML_CLOSE coord_chain", /* 12 */ "node ::= open_tag attributes GML_CLOSE coord", /* 13 */ "node ::= open_tag attributes GML_CLOSE coord_chain", /* 14 */ "node ::= close_tag", /* 15 */ "open_tag ::= GML_OPEN keyword", /* 16 */ "close_tag ::= GML_OPEN GML_END keyword GML_CLOSE", /* 17 */ "keyword ::= GML_KEYWORD", /* 18 */ "extra_nodes ::=", /* 19 */ "extra_nodes ::= node extra_nodes", /* 20 */ "node_chain ::= node node extra_nodes", /* 21 */ "attr ::= GML_KEYWORD GML_EQ GML_VALUE", /* 22 */ "extra_attr ::=", /* 23 */ "extra_attr ::= attr extra_attr", /* 24 */ "attributes ::= attr attr extra_attr", /* 25 */ "coord ::= GML_COORD", /* 26 */ "extra_coord ::=", /* 27 */ "extra_coord ::= coord extra_coord", /* 28 */ "coord_chain ::= coord coord extra_coord", /* 29 */ "main ::= in", /* 30 */ "in ::=", /* 31 */ "in ::= in state GML_NEWLINE", /* 32 */ "state ::= program", /* 33 */ "program ::= gml_tree", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number ** of errors. Return 0 on success. */ static int yyGrowStack (yyParser * p) { int newSize; int idx; yyStackEntry *pNew; newSize = p->yystksz * 2 + 100; idx = p->yytos ? (int) (p->yytos - p->yystack) : 0; if (p->yystack == &p->yystk0) { pNew = malloc (newSize * sizeof (pNew[0])); if (pNew) pNew[0] = p->yystk0; } else { pNew = realloc (p->yystack, newSize * sizeof (pNew[0])); } if (pNew) { p->yystack = pNew; p->yytos = &p->yystack[idx]; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sStack grows from %d to %d entries.\n", yyTracePrompt, p->yystksz, newSize); } #endif p->yystksz = newSize; } return pNew == 0; } #endif /* Datatype of the argument to the memory allocated passed as the ** second argument to ParseAlloc() below. This can be changed by ** putting an appropriate #define in the %include section of the input ** grammar. */ #ifndef YYMALLOCARGTYPE #define YYMALLOCARGTYPE size_t #endif /* Initialize a new parser that has already been allocated. */ static void ParseInit (void *yypParser) { yyParser *pParser = (yyParser *) yypParser; #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 pParser->yytos = NULL; pParser->yystack = NULL; pParser->yystksz = 0; if (yyGrowStack (pParser)) { pParser->yystack = &pParser->yystk0; pParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY pParser->yyerrcnt = -1; #endif pParser->yytos = pParser->yystack; pParser->yystack[0].stateno = 0; pParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH - 1]; #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like ................................................................................ ** Inputs: ** A pointer to the function used to allocate memory. ** ** Outputs: ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ void * ParseAlloc (void *(*mallocProc) (YYMALLOCARGTYPE)) { yyParser *pParser; pParser = (yyParser *) (*mallocProc) ((YYMALLOCARGTYPE) sizeof (yyParser)); if (pParser) ParseInit (pParser); return pParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ /* The following function deletes the "minor type" or semantic value ** associated with a symbol. The symbol can be either a terminal ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is ** a pointer to the value to be deleted. The code used to do the ** deletions is derived from the %destructor and/or %token_destructor ** directives of the input grammar. */ static void yy_destructor (yyParser * yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE * yypminor /* The object to be destroyed */ ) { ParseARG_FETCH; switch (yymajor) { /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen ** when the symbol is popped from the stack during a ** reduce or during error processing or when a parser is ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ /********* Begin destructor definitions ***************************************/ /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } /* ** Pop the parser's stack once. ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. */ static void yy_pop_parser_stack (yyParser * pParser) { yyStackEntry *yytos; assert (pParser->yytos != 0); assert (pParser->yytos > pParser->yystack); yytos = pParser->yytos--; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif yy_destructor (pParser, yytos->major, &yytos->minor); } /* ** Clear all secondary memory allocations from the parser */ static void ParseFinalize (void *p) { yyParser *pParser = (yyParser *) p; while (pParser->yytos > pParser->yystack) yy_pop_parser_stack (pParser); #if YYSTACKDEPTH<=0 if (pParser->yystack != &pParser->yystk0) free (pParser->yystack); #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** ** If the YYPARSEFREENEVERNULL macro exists (for example because it ** is defined in a %include section of the input grammar) then it is ** assumed that the input pointer is never NULL. */ void ParseFree (void *p, /* The parser to be deleted */ void (*freeProc) (void *) /* Function used to reclaim memory */ ) { #ifndef YYPARSEFREENEVERNULL if (p == 0) return; #endif ParseFinalize (p); (*freeProc) (p); } #endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. */ #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak (void *p) { yyParser *pParser = (yyParser *) p; return pParser->yyhwm; } #endif /* This array of booleans keeps track of the parser statement ** coverage. The element yycoverage[X][Y] is set when the parser ** is in state X and has a lookahead token Y. In a well-tested ** systems, every element of this matrix should end up being set. ................................................................................ ** ** (1) has not been used by the parser, and ** (2) is not a syntax error. ** ** Return the number of missed state/lookahead combinations. */ #if defined(YYCOVERAGE) int ParseCoverage (FILE * out) { int stateno, iLookAhead, i; int nMissed = 0; for (stateno = 0; stateno < YYNSTATE; stateno++) { i = yy_shift_ofst[stateno]; for (iLookAhead = 0; iLookAhead < YYNTOKEN; iLookAhead++) { if (yy_lookahead[i + iLookAhead] != iLookAhead) continue; if (yycoverage[stateno][iLookAhead] == 0) nMissed++; if (out) { fprintf (out, "State %d lookahead %s %s\n", stateno, yyTokenName[iLookAhead], yycoverage[stateno][iLookAhead] ? "ok" : "missed"); } } } return nMissed; } #endif /* ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ static unsigned int yy_find_shift_action (yyParser * pParser, /* The parser */ YYCODETYPE iLookAhead /* The look-ahead token */ ) { int i; int stateno = pParser->yytos->stateno; if (stateno > YY_MAX_SHIFT) return stateno; assert (stateno <= YY_SHIFT_COUNT); #if defined(YYCOVERAGE) yycoverage[stateno][iLookAhead] = 1; #endif do { i = yy_shift_ofst[stateno]; assert (i >= 0); assert (i + YYNTOKEN <= (int) sizeof (yy_lookahead) / sizeof (yy_lookahead[0])); assert (iLookAhead != YYNOCODE); assert (iLookAhead < YYNTOKEN); i += iLookAhead; if (yy_lookahead[i] != iLookAhead) { #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0]) && (iFallback = yyFallback[iLookAhead]) != 0) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); } #endif assert (yyFallback[iFallback] == 0); /* Fallback loop must terminate */ iLookAhead = iFallback; continue; } #endif #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; if ( #if YY_SHIFT_MIN+YYWILDCARD<0 j >= 0 && #endif #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT j < YY_ACTTAB_COUNT && #endif yy_lookahead[j] == YYWILDCARD && iLookAhead > 0) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ return yy_default[stateno]; } else { return yy_action[i]; } } while (1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ static int yy_find_reduce_action (int stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ) { int i; #ifdef YYERRORSYMBOL if (stateno > YY_REDUCE_COUNT) { return yy_default[stateno]; } #else assert (stateno <= YY_REDUCE_COUNT); #endif i = yy_reduce_ofst[stateno]; assert (iLookAhead != YYNOCODE); i += iLookAhead; #ifdef YYERRORSYMBOL if (i < 0 || i >= YY_ACTTAB_COUNT || yy_lookahead[i] != iLookAhead) { return yy_default[stateno]; } #else assert (i >= 0 && i < YY_ACTTAB_COUNT); assert (yy_lookahead[i] == iLookAhead); #endif return yy_action[i]; } /* ** The following routine is called if the stack overflows. */ static void yyStackOverflow (yyParser * yypParser) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt); } #endif while (yypParser->yytos > yypParser->yystack) yy_pop_parser_stack (yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ /******** Begin %stack_overflow code ******************************************/ spatialite_e ("Giving up. Parser stack overflow\n"); /******** End %stack_overflow code ********************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ } /* ** Print tracing information for a SHIFT action */ #ifndef NDEBUG static void yyTraceShift (yyParser * yypParser, int yyNewState, const char *zTag) { if (yyTraceFILE) { if (yyNewState < YYNSTATE) { fprintf (yyTraceFILE, "%s%s '%s', go to state %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState); } else { fprintf (yyTraceFILE, "%s%s '%s', pending reduce %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState - YY_MIN_REDUCE); } } } #else #define yyTraceShift(X,Y,Z) #endif /* ** Perform a shift action. */ static void yy_shift (yyParser * yypParser, /* The parser to be shifted */ int yyNewState, /* The new state to shift in */ int yyMajor, /* The major token to shift in */ ParseTOKENTYPE yyMinor /* The minor token to shift in */ ) { yyStackEntry *yytos; yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH if ((int) (yypParser->yytos - yypParser->yystack) > yypParser->yyhwm) { yypParser->yyhwm++; assert (yypParser->yyhwm == (int) (yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if (yypParser->yytos > yypParser->yystackEnd) { yypParser->yytos--; yyStackOverflow (yypParser); return; } #else if (yypParser->yytos >= &yypParser->yystack[yypParser->yystksz]) { if (yyGrowStack (yypParser)) { yypParser->yytos--; yyStackOverflow (yypParser); return; } } #endif if (yyNewState > YY_MAX_SHIFT) { yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } yytos = yypParser->yytos; yytos->stateno = (YYACTIONTYPE) yyNewState; yytos->major = (YYCODETYPE) yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift (yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { {14, -1}, /* (0) gml_tree ::= node */ {14, -1}, /* (1) gml_tree ::= node_chain */ {15, -3}, /* (2) node ::= open_tag GML_END GML_CLOSE */ {15, -4}, /* (3) node ::= open_tag attr GML_END GML_CLOSE */ {15, -4}, /* (4) node ::= open_tag attributes GML_END GML_CLOSE */ {15, -2}, /* (5) node ::= open_tag GML_CLOSE */ {15, -3}, /* (6) node ::= open_tag attr GML_CLOSE */ {15, -3}, /* (7) node ::= open_tag attributes GML_CLOSE */ {15, -3}, /* (8) node ::= open_tag GML_CLOSE coord */ {15, -3}, /* (9) node ::= open_tag GML_CLOSE coord_chain */ {15, -4}, /* (10) node ::= open_tag attr GML_CLOSE coord */ {15, -4}, /* (11) node ::= open_tag attr GML_CLOSE coord_chain */ {15, -4}, /* (12) node ::= open_tag attributes GML_CLOSE coord */ {15, -4}, /* (13) node ::= open_tag attributes GML_CLOSE coord_chain */ {15, -1}, /* (14) node ::= close_tag */ {17, -2}, /* (15) open_tag ::= GML_OPEN keyword */ {22, -4}, /* (16) close_tag ::= GML_OPEN GML_END keyword GML_CLOSE */ {23, -1}, /* (17) keyword ::= GML_KEYWORD */ {24, 0}, /* (18) extra_nodes ::= */ {24, -2}, /* (19) extra_nodes ::= node extra_nodes */ {16, -3}, /* (20) node_chain ::= node node extra_nodes */ {18, -3}, /* (21) attr ::= GML_KEYWORD GML_EQ GML_VALUE */ {25, 0}, /* (22) extra_attr ::= */ {25, -2}, /* (23) extra_attr ::= attr extra_attr */ {19, -3}, /* (24) attributes ::= attr attr extra_attr */ {20, -1}, /* (25) coord ::= GML_COORD */ {26, 0}, /* (26) extra_coord ::= */ {26, -2}, /* (27) extra_coord ::= coord extra_coord */ {21, -3}, /* (28) coord_chain ::= coord coord extra_coord */ {10, -1}, /* (29) main ::= in */ {11, 0}, /* (30) in ::= */ {11, -3}, /* (31) in ::= in state GML_NEWLINE */ {12, -1}, /* (32) state ::= program */ {13, -1}, /* (33) program ::= gml_tree */ }; static void yy_accept (yyParser *); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. ** ** The yyLookahead and yyLookaheadToken parameters provide reduce actions ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE ** if the lookahead token has already been consumed. As this procedure is ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ static void yy_reduce (yyParser * yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ ) { int yygoto; /* The next state */ int yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ ParseARG_FETCH; (void) yyLookahead; (void) yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if (yyTraceFILE && yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0]))) { yysize = yyRuleInfo[yyruleno].nrhs; if (yysize) { fprintf (yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); } else { fprintf (yyTraceFILE, "%sReduce %d [%s].\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno]); } } #endif /* NDEBUG */ /* Check that the stack is large enough to grow by a single entry ** if the RHS of the rule is empty. This ensures that there is room ** enough on the stack to push the LHS value */ if (yyRuleInfo[yyruleno].nrhs == 0) { #ifdef YYTRACKMAXSTACKDEPTH if ((int) (yypParser->yytos - yypParser->yystack) > yypParser->yyhwm) { yypParser->yyhwm++; assert (yypParser->yyhwm == (int) (yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if (yypParser->yytos >= yypParser->yystackEnd) { yyStackOverflow (yypParser); return; } #else if (yypParser->yytos >= &yypParser->yystack[yypParser->yystksz - 1]) { if (yyGrowStack (yypParser)) { yyStackOverflow (yypParser); return; } yymsp = yypParser->yytos; } #endif } switch (yyruleno) { /* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* gml_tree ::= node */ case 1: /* gml_tree ::= node_chain */ yytestcase (yyruleno == 1); { p_data->result = yymsp[0].minor.yy0; } break; case 2: /* node ::= open_tag GML_END GML_CLOSE */ { yylhsminor.yy0 = gml_createSelfClosedNode (p_data, (void *) yymsp[-2].minor.yy0, NULL); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 3: /* node ::= open_tag attr GML_END GML_CLOSE */ case 4: /* node ::= open_tag attributes GML_END GML_CLOSE */ yytestcase (yyruleno == 4); { yylhsminor.yy0 = gml_createSelfClosedNode (p_data, (void *) yymsp[-3].minor.yy0, (void *) yymsp[-2].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 5: /* node ::= open_tag GML_CLOSE */ { yylhsminor.yy0 = gml_createNode (p_data, (void *) yymsp[-1].minor.yy0, NULL, NULL); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 6: /* node ::= open_tag attr GML_CLOSE */ case 7: /* node ::= open_tag attributes GML_CLOSE */ yytestcase (yyruleno == 7); { yylhsminor.yy0 = gml_createNode (p_data, (void *) yymsp[-2].minor.yy0, (void *) yymsp[-1].minor.yy0, NULL); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 8: /* node ::= open_tag GML_CLOSE coord */ case 9: /* node ::= open_tag GML_CLOSE coord_chain */ yytestcase (yyruleno == 9); { yylhsminor.yy0 = gml_createNode (p_data, (void *) yymsp[-2].minor.yy0, NULL, (void *) yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 10: /* node ::= open_tag attr GML_CLOSE coord */ case 11: /* node ::= open_tag attr GML_CLOSE coord_chain */ yytestcase (yyruleno == 11); case 12: /* node ::= open_tag attributes GML_CLOSE coord */ yytestcase (yyruleno == 12); case 13: /* node ::= open_tag attributes GML_CLOSE coord_chain */ yytestcase (yyruleno == 13); { yylhsminor.yy0 = gml_createNode (p_data, (void *) yymsp[-3].minor.yy0, (void *) yymsp[-2].minor.yy0, (void *) yymsp[0].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 14: /* node ::= close_tag */ { yylhsminor.yy0 = gml_closingNode (p_data, (void *) yymsp[0].minor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 15: /* open_tag ::= GML_OPEN keyword */ { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 16: /* close_tag ::= GML_OPEN GML_END keyword GML_CLOSE */ { yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; case 17: /* keyword ::= GML_KEYWORD */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 18: /* extra_nodes ::= */ case 22: /* extra_attr ::= */ yytestcase (yyruleno == 22); case 26: /* extra_coord ::= */ yytestcase (yyruleno == 26); { yymsp[1].minor.yy0 = NULL; } break; case 19: /* extra_nodes ::= node extra_nodes */ { ((gmlNodePtr) yymsp[-1].minor.yy0)->Next = (gmlNodePtr) yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 20: /* node_chain ::= node node extra_nodes */ { ((gmlNodePtr) yymsp[-1].minor.yy0)->Next = (gmlNodePtr) yymsp[0].minor.yy0; ((gmlNodePtr) yymsp[-2].minor.yy0)->Next = (gmlNodePtr) yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 21: /* attr ::= GML_KEYWORD GML_EQ GML_VALUE */ { yylhsminor.yy0 = gml_attribute (p_data, (void *) yymsp[-2].minor.yy0, (void *) yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 23: /* extra_attr ::= attr extra_attr */ { ((gmlAttrPtr) yymsp[-1].minor.yy0)->Next = (gmlAttrPtr) yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 24: /* attributes ::= attr attr extra_attr */ { ((gmlAttrPtr) yymsp[-1].minor.yy0)->Next = (gmlAttrPtr) yymsp[0].minor.yy0; ((gmlAttrPtr) yymsp[-2].minor.yy0)->Next = (gmlAttrPtr) yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 25: /* coord ::= GML_COORD */ { yylhsminor.yy0 = gml_coord (p_data, (void *) yymsp[0].minor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 27: /* extra_coord ::= coord extra_coord */ { ((gmlCoordPtr) yymsp[-1].minor.yy0)->Next = (gmlCoordPtr) yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 28: /* coord_chain ::= coord coord extra_coord */ { ((gmlCoordPtr) yymsp[-1].minor.yy0)->Next = (gmlCoordPtr) yymsp[0].minor.yy0; ((gmlCoordPtr) yymsp[-2].minor.yy0)->Next = (gmlCoordPtr) yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; default: /* (29) main ::= in */ yytestcase (yyruleno == 29); /* (30) in ::= */ yytestcase (yyruleno == 30); /* (31) in ::= in state GML_NEWLINE */ yytestcase (yyruleno == 31); /* (32) state ::= program (OPTIMIZED OUT) */ assert (yyruleno != 32); /* (33) program ::= gml_tree (OPTIMIZED OUT) */ assert (yyruleno != 33); break; /********** End reduce actions ************************************************/ }; assert (yyruleno < sizeof (yyRuleInfo) / sizeof (yyRuleInfo[0])); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action (yymsp[yysize].stateno, (YYCODETYPE) yygoto); /* There are no SHIFTREDUCE actions on nonterminals because the table ** generator has simplified them to pure REDUCE actions. */ assert (!(yyact > YY_MAX_SHIFT && yyact <= YY_MAX_SHIFTREDUCE)); /* It is not possible for a REDUCE to be followed by an error */ assert (yyact != YY_ERROR_ACTION); yymsp += yysize + 1; yypParser->yytos = yymsp; yymsp->stateno = (YYACTIONTYPE) yyact; yymsp->major = (YYCODETYPE) yygoto; yyTraceShift (yypParser, yyact, "... then shift"); } /* ** The following code executes when the parse fails */ #ifndef YYNOERRORRECOVERY static void yy_parse_failed (yyParser * yypParser /* The parser */ ) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt); } #endif while (yypParser->yytos > yypParser->yystack) yy_pop_parser_stack (yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } #endif /* YYNOERRORRECOVERY */ /* ** The following code executes when a syntax error first occurs. */ static void yy_syntax_error (yyParser * yypParser, /* The parser */ int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ) { ParseARG_FETCH; #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ /* ** when the LEMON parser encounters an error ** then this global variable is set */ p_data->gml_parse_error = 1; p_data->result = NULL; /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* ** The following is executed when the parser accepts */ static void yy_accept (yyParser * yypParser /* The parser */ ) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt); } #endif #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif assert (yypParser->yytos == yypParser->yystack); /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ /*********** End %parse_accept code *******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* The main parser program. ** The first argument is a pointer to a structure obtained from ** "ParseAlloc" which describes the current state of the parser. ** The second argument is the major token number. The third is ** the minor token. The fourth optional argument is whatever the ................................................................................ ** <li> The minor token number. ** <li> An option argument of a grammar-specified type. ** </ul> ** ** Outputs: ** None. */ void Parse (void *yyp, /* The parser */ int yymajor, /* The major token code number */ ParseTOKENTYPE yyminor /* The value for the token */ ParseARG_PDECL /* Optional %extra_argument parameter */ ) { YYMINORTYPE yyminorunion; unsigned int yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif yyParser *yypParser; /* The parser */ yypParser = (yyParser *) yyp; assert (yypParser->yytos != 0); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor == 0); #endif ParseARG_STORE; #ifndef NDEBUG if (yyTraceFILE) { int stateno = yypParser->yytos->stateno; if (stateno < YY_MIN_REDUCE) { fprintf (yyTraceFILE, "%sInput '%s' in state %d\n", yyTracePrompt, yyTokenName[yymajor], stateno); } else { fprintf (yyTraceFILE, "%sInput '%s' with pending reduce %d\n", yyTracePrompt, yyTokenName[yymajor], stateno - YY_MIN_REDUCE); } } #endif do { yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor); if (yyact >= YY_MIN_REDUCE) { yy_reduce (yypParser, yyact - YY_MIN_REDUCE, yymajor, yyminor); } else if (yyact <= YY_MAX_SHIFTREDUCE) { yy_shift (yypParser, yyact, yymajor, yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif yymajor = YYNOCODE; } else if (yyact == YY_ACCEPT_ACTION) { yypParser->yytos--; yy_accept (yypParser); return; } else { assert (yyact == YY_ERROR_ACTION); yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt); } #endif #ifdef YYERRORSYMBOL /* A syntax error has occurred. ** The response to an error depends upon whether or not the ** grammar defines an error token "ERROR". ** ** This is what we do if the grammar does define ERROR: ** ** * Call the %syntax_error function. ** ** * Begin popping the stack until we enter a state where ** it is legal to shift the error symbol, then shift ** the error symbol. ** ** * Set the error count to three. ** ** * Begin accepting and shifting new tokens. No new error ** processing will occur until three tokens have been ** shifted successfully. ** */ if (yypParser->yyerrcnt < 0) { yy_syntax_error (yypParser, yymajor, yyminor); } yymx = yypParser->yytos->major; if (yymx == YYERRORSYMBOL || yyerrorhit) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sDiscard input token %s\n", yyTracePrompt, yyTokenName[yymajor]); } #endif yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yymajor = YYNOCODE; } else { while (yypParser->yytos >= yypParser->yystack && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action (yypParser-> yytos->stateno, YYERRORSYMBOL)) >= YY_MIN_REDUCE) { yy_pop_parser_stack (yypParser); } if (yypParser->yytos < yypParser->yystack || yymajor == 0) { yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yy_parse_failed (yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif yymajor = YYNOCODE; } else if (yymx != YYERRORSYMBOL) { yy_shift (yypParser, yyact, YYERRORSYMBOL, yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax ** error routine and continue going as if nothing had happened. ** ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ yy_syntax_error (yypParser, yymajor, yyminor); yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yymajor = YYNOCODE; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** ** * Report an error message, and throw away the input token. ** ** * If the input token is $, then fail the parse. ** ** As before, subsequent error messages are suppressed until ** three input tokens have been successfully shifted. */ if (yypParser->yyerrcnt <= 0) { yy_syntax_error (yypParser, yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); if (yyendofinput) { yy_parse_failed (yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif } yymajor = YYNOCODE; #endif } } while (yymajor != YYNOCODE && yypParser->yytos > yypParser->yystack); #ifndef NDEBUG if (yyTraceFILE) { yyStackEntry *i; char cDiv = '['; fprintf (yyTraceFILE, "%sReturn. Stack=", yyTracePrompt); for (i = &yypParser->yystack[1]; i <= yypParser->yytos; i++) { fprintf (yyTraceFILE, "%c%s", cDiv, yyTokenName[i->major]); cDiv = ' '; } fprintf (yyTraceFILE, "]\n"); } #endif return; } |
Changes to src/gaiageo/Kml.c.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 ... 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 ... 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 ... 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 ... 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 ... 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 ... 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 .... 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 |
** YY_ERROR_ACTION The yy_action[] code for syntax error ** YY_ACCEPT_ACTION The yy_action[] code for accept ** YY_NO_ACTION The yy_action[] code for no-op ** YY_MIN_REDUCE Minimum value for reduce actions ** YY_MAX_REDUCE Maximum value for reduce actions */ #ifndef INTERFACE # define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char #define YYNOCODE 28 #define YYACTIONTYPE unsigned char #define ParseTOKENTYPE void * typedef union { int yyinit; ParseTOKENTYPE yy0; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 1000000 #endif #define ParseARG_SDECL struct kml_data *p_data ; #define ParseARG_PDECL , struct kml_data *p_data #define ParseARG_FETCH struct kml_data *p_data = yypParser->p_data #define ParseARG_STORE yypParser->p_data = p_data #define YYNSTATE 27 #define YYNRULE 34 #define YYNTOKEN 9 #define YY_MAX_SHIFT 26 #define YY_MIN_SHIFTREDUCE 49 #define YY_MAX_SHIFTREDUCE 82 #define YY_ERROR_ACTION 83 ................................................................................ ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production ** code the yytestcase() macro should be turned off. But it is useful ** for testing. */ #ifndef yytestcase # define yytestcase(X) #endif /* Next are the tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement ** functions that take a state number and lookahead value and return an ** action integer. ................................................................................ ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (63) static const YYACTIONTYPE yy_action[] = { /* 0 */ 26, 26, 26, 4, 87, 5, 2, 2, 5, 5, /* 10 */ 100, 84, 1, 100, 100, 105, 106, 3, 8, 5, /* 20 */ 25, 6, 74, 23, 100, 109, 24, 12, 115, 23, /* 30 */ 13, 19, 14, 16, 95, 17, 99, 8, 21, 7, /* 40 */ 10, 10, 18, 97, 110, 15, 113, 114, 66, 14, /* 50 */ 9, 23, 101, 66, 20, 11, 65, 53, 70, 52, /* 60 */ 51, 22, 80, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 12, 13, 14, 15, 16, 17, 15, 15, 17, 17, /* 10 */ 22, 10, 11, 22, 22, 24, 24, 15, 18, 17, /* 20 */ 2, 3, 8, 5, 22, 25, 2, 3, 0, 5, /* 30 */ 18, 19, 4, 20, 21, 20, 21, 18, 2, 3, /* 40 */ 20, 20, 20, 21, 25, 2, 26, 26, 5, 4, /* 50 */ 18, 5, 23, 5, 23, 20, 3, 3, 7, 3, /* 60 */ 3, 6, 1, 27, 27, 27, 27, 27, 27, 27, /* 70 */ 27, 27, }; #define YY_SHIFT_COUNT (26) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (61) static const unsigned char yy_shift_ofst[] = { /* 0 */ 63, 28, 45, 45, 45, 18, 14, 14, 46, 46, /* 10 */ 14, 14, 14, 24, 43, 48, 14, 14, 14, 36, /* 20 */ 53, 54, 51, 55, 56, 57, 61, }; #define YY_REDUCE_COUNT (18) #define YY_REDUCE_MIN (-12) #define YY_REDUCE_MAX (35) static const signed char yy_reduce_ofst[] = { /* 0 */ 1, -12, -9, -8, 2, 12, 13, 15, 0, 19, /* 10 */ 20, 21, 22, 32, 29, 31, 35, 35, 35, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 116, 83, 104, 104, 86, 83, 91, 93, 108, 108, /* 10 */ 112, 112, 92, 83, 83, 83, 94, 98, 96, 83, /* 20 */ 83, 83, 83, 83, 83, 83, 83, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. ** ................................................................................ ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. ** ** After the "shift" half of a SHIFTREDUCE action, the stateno field ** actually contains the reduce action for the second half of the ** SHIFTREDUCE. */ struct yyStackEntry { YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */ }; typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH int yyhwm; /* High-water mark of the stack */ #endif #ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; #ifndef NDEBUG #include <stdio.h> static FILE *yyTraceFILE = 0; ................................................................................ ** line of trace output. If NULL, then tracing is ** turned off. ** </ul> ** ** Outputs: ** None. */ void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if( yyTraceFILE==0 ) yyTracePrompt = 0; else if( yyTracePrompt==0 ) yyTraceFILE = 0; } #endif /* NDEBUG */ #if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { /* 0 */ "$", /* 1 */ "KML_NEWLINE", /* 2 */ "KML_END", /* 3 */ "KML_CLOSE", /* 4 */ "KML_OPEN", /* 5 */ "KML_KEYWORD", /* 6 */ "KML_EQ", /* 7 */ "KML_VALUE", /* 8 */ "KML_COORD", /* 9 */ "error", /* 10 */ "main", /* 11 */ "in", /* 12 */ "state", /* 13 */ "program", /* 14 */ "kml_tree", /* 15 */ "node", /* 16 */ "node_chain", /* 17 */ "open_tag", /* 18 */ "attr", /* 19 */ "attributes", /* 20 */ "coord", /* 21 */ "coord_chain", /* 22 */ "close_tag", /* 23 */ "keyword", /* 24 */ "extra_nodes", /* 25 */ "extra_attr", /* 26 */ "extra_coord", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "kml_tree ::= node", /* 1 */ "kml_tree ::= node_chain", /* 2 */ "node ::= open_tag KML_END KML_CLOSE", /* 3 */ "node ::= open_tag attr KML_END KML_CLOSE", /* 4 */ "node ::= open_tag attributes KML_END KML_CLOSE", /* 5 */ "node ::= open_tag KML_CLOSE", /* 6 */ "node ::= open_tag attr KML_CLOSE", /* 7 */ "node ::= open_tag attributes KML_CLOSE", /* 8 */ "node ::= open_tag KML_CLOSE coord", /* 9 */ "node ::= open_tag KML_CLOSE coord_chain", /* 10 */ "node ::= open_tag attr KML_CLOSE coord", /* 11 */ "node ::= open_tag attr KML_CLOSE coord_chain", /* 12 */ "node ::= open_tag attributes KML_CLOSE coord", /* 13 */ "node ::= open_tag attributes KML_CLOSE coord_chain", /* 14 */ "node ::= close_tag", /* 15 */ "open_tag ::= KML_OPEN keyword", /* 16 */ "close_tag ::= KML_OPEN KML_END keyword KML_CLOSE", /* 17 */ "keyword ::= KML_KEYWORD", /* 18 */ "extra_nodes ::=", /* 19 */ "extra_nodes ::= node extra_nodes", /* 20 */ "node_chain ::= node node extra_nodes", /* 21 */ "attr ::= KML_KEYWORD KML_EQ KML_VALUE", /* 22 */ "extra_attr ::=", /* 23 */ "extra_attr ::= attr extra_attr", /* 24 */ "attributes ::= attr attr extra_attr", /* 25 */ "coord ::= KML_COORD", /* 26 */ "extra_coord ::=", /* 27 */ "extra_coord ::= coord extra_coord", /* 28 */ "coord_chain ::= coord coord extra_coord", /* 29 */ "main ::= in", /* 30 */ "in ::=", /* 31 */ "in ::= in state KML_NEWLINE", /* 32 */ "state ::= program", /* 33 */ "program ::= kml_tree", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number ** of errors. Return 0 on success. */ static int yyGrowStack(yyParser *p){ int newSize; int idx; yyStackEntry *pNew; newSize = p->yystksz*2 + 100; idx = p->yytos ? (int)(p->yytos - p->yystack) : 0; if( p->yystack==&p->yystk0 ){ pNew = malloc(newSize*sizeof(pNew[0])); if( pNew ) pNew[0] = p->yystk0; }else{ pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); } if( pNew ){ p->yystack = pNew; p->yytos = &p->yystack[idx]; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n", yyTracePrompt, p->yystksz, newSize); } #endif p->yystksz = newSize; } return pNew==0; } #endif /* Datatype of the argument to the memory allocated passed as the ** second argument to ParseAlloc() below. This can be changed by ** putting an appropriate #define in the %include section of the input ** grammar. */ #ifndef YYMALLOCARGTYPE # define YYMALLOCARGTYPE size_t #endif /* Initialize a new parser that has already been allocated. */ static void ParseInit(void *yypParser){ yyParser *pParser = (yyParser*)yypParser; #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 pParser->yytos = NULL; pParser->yystack = NULL; pParser->yystksz = 0; if( yyGrowStack(pParser) ){ pParser->yystack = &pParser->yystk0; pParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY pParser->yyerrcnt = -1; #endif pParser->yytos = pParser->yystack; pParser->yystack[0].stateno = 0; pParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH-1]; #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like ................................................................................ ** Inputs: ** A pointer to the function used to allocate memory. ** ** Outputs: ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)){ yyParser *pParser; pParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) ); if( pParser ) ParseInit(pParser); return pParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ /* The following function deletes the "minor type" or semantic value ** associated with a symbol. The symbol can be either a terminal ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is ** a pointer to the value to be deleted. The code used to do the ** deletions is derived from the %destructor and/or %token_destructor ** directives of the input grammar. */ static void yy_destructor( yyParser *yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE *yypminor /* The object to be destroyed */ ){ ParseARG_FETCH; switch( yymajor ){ /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen ** when the symbol is popped from the stack during a ** reduce or during error processing or when a parser is ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ /********* Begin destructor definitions ***************************************/ /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } /* ** Pop the parser's stack once. ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. */ static void yy_pop_parser_stack(yyParser *pParser){ yyStackEntry *yytos; assert( pParser->yytos!=0 ); assert( pParser->yytos > pParser->yystack ); yytos = pParser->yytos--; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif yy_destructor(pParser, yytos->major, &yytos->minor); } /* ** Clear all secondary memory allocations from the parser */ static void ParseFinalize(void *p){ yyParser *pParser = (yyParser*)p; while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser); #if YYSTACKDEPTH<=0 if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack); #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** ** If the YYPARSEFREENEVERNULL macro exists (for example because it ** is defined in a %include section of the input grammar) then it is ** assumed that the input pointer is never NULL. */ void ParseFree( void *p, /* The parser to be deleted */ void (*freeProc)(void*) /* Function used to reclaim memory */ ){ #ifndef YYPARSEFREENEVERNULL if( p==0 ) return; #endif ParseFinalize(p); (*freeProc)(p); } #endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. */ #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak(void *p){ yyParser *pParser = (yyParser*)p; return pParser->yyhwm; } #endif /* This array of booleans keeps track of the parser statement ** coverage. The element yycoverage[X][Y] is set when the parser ** is in state X and has a lookahead token Y. In a well-tested ** systems, every element of this matrix should end up being set. ................................................................................ ** ** (1) has not been used by the parser, and ** (2) is not a syntax error. ** ** Return the number of missed state/lookahead combinations. */ #if defined(YYCOVERAGE) int ParseCoverage(FILE *out){ int stateno, iLookAhead, i; int nMissed = 0; for(stateno=0; stateno<YYNSTATE; stateno++){ i = yy_shift_ofst[stateno]; for(iLookAhead=0; iLookAhead<YYNTOKEN; iLookAhead++){ if( yy_lookahead[i+iLookAhead]!=iLookAhead ) continue; if( yycoverage[stateno][iLookAhead]==0 ) nMissed++; if( out ){ fprintf(out,"State %d lookahead %s %s\n", stateno, yyTokenName[iLookAhead], yycoverage[stateno][iLookAhead] ? "ok" : "missed"); } } } return nMissed; } #endif /* ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ static unsigned int yy_find_shift_action( yyParser *pParser, /* The parser */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; int stateno = pParser->yytos->stateno; if( stateno>YY_MAX_SHIFT ) return stateno; assert( stateno <= YY_SHIFT_COUNT ); #if defined(YYCOVERAGE) yycoverage[stateno][iLookAhead] = 1; #endif do{ i = yy_shift_ofst[stateno]; assert( i>=0 ); assert( i+YYNTOKEN<=(int)sizeof(yy_lookahead)/sizeof(yy_lookahead[0]) ); assert( iLookAhead!=YYNOCODE ); assert( iLookAhead < YYNTOKEN ); i += iLookAhead; if( yy_lookahead[i]!=iLookAhead ){ #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) && (iFallback = yyFallback[iLookAhead])!=0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); } #endif assert( yyFallback[iFallback]==0 ); /* Fallback loop must terminate */ iLookAhead = iFallback; continue; } #endif #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; if( #if YY_SHIFT_MIN+YYWILDCARD<0 j>=0 && #endif #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT j<YY_ACTTAB_COUNT && #endif yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ return yy_action[i]; } }while(1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ static int yy_find_reduce_action( int stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; #ifdef YYERRORSYMBOL if( stateno>YY_REDUCE_COUNT ){ return yy_default[stateno]; } #else assert( stateno<=YY_REDUCE_COUNT ); #endif i = yy_reduce_ofst[stateno]; assert( iLookAhead!=YYNOCODE ); i += iLookAhead; #ifdef YYERRORSYMBOL if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){ return yy_default[stateno]; } #else assert( i>=0 && i<YY_ACTTAB_COUNT ); assert( yy_lookahead[i]==iLookAhead ); #endif return yy_action[i]; } /* ** The following routine is called if the stack overflows. */ static void yyStackOverflow(yyParser *yypParser){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); } #endif while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ /******** Begin %stack_overflow code ******************************************/ spatialite_e( "Giving up. Parser stack overflow\n"); /******** End %stack_overflow code ********************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ } /* ** Print tracing information for a SHIFT action */ #ifndef NDEBUG static void yyTraceShift(yyParser *yypParser, int yyNewState, const char *zTag){ if( yyTraceFILE ){ if( yyNewState<YYNSTATE ){ fprintf(yyTraceFILE,"%s%s '%s', go to state %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState); }else{ fprintf(yyTraceFILE,"%s%s '%s', pending reduce %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState - YY_MIN_REDUCE); } } } #else # define yyTraceShift(X,Y,Z) #endif /* ** Perform a shift action. */ static void yy_shift( yyParser *yypParser, /* The parser to be shifted */ int yyNewState, /* The new state to shift in */ int yyMajor, /* The major token to shift in */ ParseTOKENTYPE yyMinor /* The minor token to shift in */ ){ yyStackEntry *yytos; yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) ); } #endif #if YYSTACKDEPTH>0 if( yypParser->yytos>yypParser->yystackEnd ){ yypParser->yytos--; yyStackOverflow(yypParser); return; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){ if( yyGrowStack(yypParser) ){ yypParser->yytos--; yyStackOverflow(yypParser); return; } } #endif if( yyNewState > YY_MAX_SHIFT ){ yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } yytos = yypParser->yytos; yytos->stateno = (YYACTIONTYPE)yyNewState; yytos->major = (YYCODETYPE)yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift(yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { { 14, -1 }, /* (0) kml_tree ::= node */ { 14, -1 }, /* (1) kml_tree ::= node_chain */ { 15, -3 }, /* (2) node ::= open_tag KML_END KML_CLOSE */ { 15, -4 }, /* (3) node ::= open_tag attr KML_END KML_CLOSE */ { 15, -4 }, /* (4) node ::= open_tag attributes KML_END KML_CLOSE */ { 15, -2 }, /* (5) node ::= open_tag KML_CLOSE */ { 15, -3 }, /* (6) node ::= open_tag attr KML_CLOSE */ { 15, -3 }, /* (7) node ::= open_tag attributes KML_CLOSE */ { 15, -3 }, /* (8) node ::= open_tag KML_CLOSE coord */ { 15, -3 }, /* (9) node ::= open_tag KML_CLOSE coord_chain */ { 15, -4 }, /* (10) node ::= open_tag attr KML_CLOSE coord */ { 15, -4 }, /* (11) node ::= open_tag attr KML_CLOSE coord_chain */ { 15, -4 }, /* (12) node ::= open_tag attributes KML_CLOSE coord */ { 15, -4 }, /* (13) node ::= open_tag attributes KML_CLOSE coord_chain */ { 15, -1 }, /* (14) node ::= close_tag */ { 17, -2 }, /* (15) open_tag ::= KML_OPEN keyword */ { 22, -4 }, /* (16) close_tag ::= KML_OPEN KML_END keyword KML_CLOSE */ { 23, -1 }, /* (17) keyword ::= KML_KEYWORD */ { 24, 0 }, /* (18) extra_nodes ::= */ { 24, -2 }, /* (19) extra_nodes ::= node extra_nodes */ { 16, -3 }, /* (20) node_chain ::= node node extra_nodes */ { 18, -3 }, /* (21) attr ::= KML_KEYWORD KML_EQ KML_VALUE */ { 25, 0 }, /* (22) extra_attr ::= */ { 25, -2 }, /* (23) extra_attr ::= attr extra_attr */ { 19, -3 }, /* (24) attributes ::= attr attr extra_attr */ { 20, -1 }, /* (25) coord ::= KML_COORD */ { 26, 0 }, /* (26) extra_coord ::= */ { 26, -2 }, /* (27) extra_coord ::= coord extra_coord */ { 21, -3 }, /* (28) coord_chain ::= coord coord extra_coord */ { 10, -1 }, /* (29) main ::= in */ { 11, 0 }, /* (30) in ::= */ { 11, -3 }, /* (31) in ::= in state KML_NEWLINE */ { 12, -1 }, /* (32) state ::= program */ { 13, -1 }, /* (33) program ::= kml_tree */ }; static void yy_accept(yyParser*); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. ** ** The yyLookahead and yyLookaheadToken parameters provide reduce actions ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE ** if the lookahead token has already been consumed. As this procedure is ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ static void yy_reduce( yyParser *yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ ){ int yygoto; /* The next state */ int yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ ParseARG_FETCH; (void)yyLookahead; (void)yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ yysize = yyRuleInfo[yyruleno].nrhs; if( yysize ){ fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); }else{ fprintf(yyTraceFILE, "%sReduce %d [%s].\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno]); } } #endif /* NDEBUG */ /* Check that the stack is large enough to grow by a single entry ** if the RHS of the rule is empty. This ensures that there is room ** enough on the stack to push the LHS value */ if( yyRuleInfo[yyruleno].nrhs==0 ){ #ifdef YYTRACKMAXSTACKDEPTH if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if( yypParser->yytos>=yypParser->yystackEnd ){ yyStackOverflow(yypParser); return; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ if( yyGrowStack(yypParser) ){ yyStackOverflow(yypParser); return; } yymsp = yypParser->yytos; } #endif } switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* kml_tree ::= node */ case 1: /* kml_tree ::= node_chain */ yytestcase(yyruleno==1); { p_data->result = yymsp[0].minor.yy0; } break; case 2: /* node ::= open_tag KML_END KML_CLOSE */ { yylhsminor.yy0 = kml_createSelfClosedNode( p_data, (void *)yymsp[-2].minor.yy0, NULL); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 3: /* node ::= open_tag attr KML_END KML_CLOSE */ case 4: /* node ::= open_tag attributes KML_END KML_CLOSE */ yytestcase(yyruleno==4); { yylhsminor.yy0 = kml_createSelfClosedNode( p_data, (void *)yymsp[-3].minor.yy0, (void *)yymsp[-2].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 5: /* node ::= open_tag KML_CLOSE */ { yylhsminor.yy0 = kml_createNode( p_data, (void *)yymsp[-1].minor.yy0, NULL, NULL); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 6: /* node ::= open_tag attr KML_CLOSE */ case 7: /* node ::= open_tag attributes KML_CLOSE */ yytestcase(yyruleno==7); { yylhsminor.yy0 = kml_createNode( p_data, (void *)yymsp[-2].minor.yy0, (void *)yymsp[-1].minor.yy0, NULL); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 8: /* node ::= open_tag KML_CLOSE coord */ case 9: /* node ::= open_tag KML_CLOSE coord_chain */ yytestcase(yyruleno==9); { yylhsminor.yy0 = kml_createNode( p_data, (void *)yymsp[-2].minor.yy0, NULL, (void *)yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 10: /* node ::= open_tag attr KML_CLOSE coord */ case 11: /* node ::= open_tag attr KML_CLOSE coord_chain */ yytestcase(yyruleno==11); case 12: /* node ::= open_tag attributes KML_CLOSE coord */ yytestcase(yyruleno==12); case 13: /* node ::= open_tag attributes KML_CLOSE coord_chain */ yytestcase(yyruleno==13); { yylhsminor.yy0 = kml_createNode( p_data, (void *)yymsp[-3].minor.yy0, (void *)yymsp[-2].minor.yy0, (void *)yymsp[0].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 14: /* node ::= close_tag */ { yylhsminor.yy0 = kml_closingNode( p_data, (void *)yymsp[0].minor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 15: /* open_tag ::= KML_OPEN keyword */ { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 16: /* close_tag ::= KML_OPEN KML_END keyword KML_CLOSE */ { yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; case 17: /* keyword ::= KML_KEYWORD */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 18: /* extra_nodes ::= */ case 22: /* extra_attr ::= */ yytestcase(yyruleno==22); case 26: /* extra_coord ::= */ yytestcase(yyruleno==26); { yymsp[1].minor.yy0 = NULL; } break; case 19: /* extra_nodes ::= node extra_nodes */ { ((kmlNodePtr)yymsp[-1].minor.yy0)->Next = (kmlNodePtr)yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 20: /* node_chain ::= node node extra_nodes */ { ((kmlNodePtr)yymsp[-1].minor.yy0)->Next = (kmlNodePtr)yymsp[0].minor.yy0; ((kmlNodePtr)yymsp[-2].minor.yy0)->Next = (kmlNodePtr)yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 21: /* attr ::= KML_KEYWORD KML_EQ KML_VALUE */ { yylhsminor.yy0 = kml_attribute( p_data, (void *)yymsp[-2].minor.yy0, (void *)yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 23: /* extra_attr ::= attr extra_attr */ { ((kmlAttrPtr)yymsp[-1].minor.yy0)->Next = (kmlAttrPtr)yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 24: /* attributes ::= attr attr extra_attr */ { ((kmlAttrPtr)yymsp[-1].minor.yy0)->Next = (kmlAttrPtr)yymsp[0].minor.yy0; ((kmlAttrPtr)yymsp[-2].minor.yy0)->Next = (kmlAttrPtr)yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 25: /* coord ::= KML_COORD */ { yylhsminor.yy0 = kml_coord( p_data, (void *)yymsp[0].minor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 27: /* extra_coord ::= coord extra_coord */ { ((kmlCoordPtr)yymsp[-1].minor.yy0)->Next = (kmlCoordPtr)yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 28: /* coord_chain ::= coord coord extra_coord */ { ((kmlCoordPtr)yymsp[-1].minor.yy0)->Next = (kmlCoordPtr)yymsp[0].minor.yy0; ((kmlCoordPtr)yymsp[-2].minor.yy0)->Next = (kmlCoordPtr)yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; default: /* (29) main ::= in */ yytestcase(yyruleno==29); /* (30) in ::= */ yytestcase(yyruleno==30); /* (31) in ::= in state KML_NEWLINE */ yytestcase(yyruleno==31); /* (32) state ::= program (OPTIMIZED OUT) */ assert(yyruleno!=32); /* (33) program ::= kml_tree (OPTIMIZED OUT) */ assert(yyruleno!=33); break; /********** End reduce actions ************************************************/ }; assert( yyruleno<sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0]) ); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto); /* There are no SHIFTREDUCE actions on nonterminals because the table ** generator has simplified them to pure REDUCE actions. */ assert( !(yyact>YY_MAX_SHIFT && yyact<=YY_MAX_SHIFTREDUCE) ); /* It is not possible for a REDUCE to be followed by an error */ assert( yyact!=YY_ERROR_ACTION ); yymsp += yysize+1; yypParser->yytos = yymsp; yymsp->stateno = (YYACTIONTYPE)yyact; yymsp->major = (YYCODETYPE)yygoto; yyTraceShift(yypParser, yyact, "... then shift"); } /* ** The following code executes when the parse fails */ #ifndef YYNOERRORRECOVERY static void yy_parse_failed( yyParser *yypParser /* The parser */ ){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); } #endif while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } #endif /* YYNOERRORRECOVERY */ /* ** The following code executes when a syntax error first occurs. */ static void yy_syntax_error( yyParser *yypParser, /* The parser */ int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ){ ParseARG_FETCH; #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ /* ** when the LEMON parser encounters an error ** then this global variable is set */ p_data->kml_parse_error = 1; p_data->result = NULL; /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* ** The following is executed when the parser accepts */ static void yy_accept( yyParser *yypParser /* The parser */ ){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); } #endif #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif assert( yypParser->yytos==yypParser->yystack ); /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ /*********** End %parse_accept code *******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* The main parser program. ** The first argument is a pointer to a structure obtained from ** "ParseAlloc" which describes the current state of the parser. ** The second argument is the major token number. The third is ** the minor token. The fourth optional argument is whatever the ................................................................................ ** <li> The minor token number. ** <li> An option argument of a grammar-specified type. ** </ul> ** ** Outputs: ** None. */ void Parse( void *yyp, /* The parser */ int yymajor, /* The major token code number */ ParseTOKENTYPE yyminor /* The value for the token */ ParseARG_PDECL /* Optional %extra_argument parameter */ ){ YYMINORTYPE yyminorunion; unsigned int yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif yyParser *yypParser; /* The parser */ yypParser = (yyParser*)yyp; assert( yypParser->yytos!=0 ); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor==0); #endif ParseARG_STORE; #ifndef NDEBUG if( yyTraceFILE ){ int stateno = yypParser->yytos->stateno; if( stateno < YY_MIN_REDUCE ){ fprintf(yyTraceFILE,"%sInput '%s' in state %d\n", yyTracePrompt,yyTokenName[yymajor],stateno); }else{ fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n", yyTracePrompt,yyTokenName[yymajor],stateno-YY_MIN_REDUCE); } } #endif do{ yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); if( yyact >= YY_MIN_REDUCE ){ yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor,yyminor); }else if( yyact <= YY_MAX_SHIFTREDUCE ){ yy_shift(yypParser,yyact,yymajor,yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif yymajor = YYNOCODE; }else if( yyact==YY_ACCEPT_ACTION ){ yypParser->yytos--; yy_accept(yypParser); return; }else{ assert( yyact == YY_ERROR_ACTION ); yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); } #endif #ifdef YYERRORSYMBOL /* A syntax error has occurred. ** The response to an error depends upon whether or not the ** grammar defines an error token "ERROR". ** ** This is what we do if the grammar does define ERROR: ** ** * Call the %syntax_error function. ** ** * Begin popping the stack until we enter a state where ** it is legal to shift the error symbol, then shift ** the error symbol. ** ** * Set the error count to three. ** ** * Begin accepting and shifting new tokens. No new error ** processing will occur until three tokens have been ** shifted successfully. ** */ if( yypParser->yyerrcnt<0 ){ yy_syntax_error(yypParser,yymajor,yyminor); } yymx = yypParser->yytos->major; if( yymx==YYERRORSYMBOL || yyerrorhit ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sDiscard input token %s\n", yyTracePrompt,yyTokenName[yymajor]); } #endif yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion); yymajor = YYNOCODE; }else{ while( yypParser->yytos >= yypParser->yystack && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action( yypParser->yytos->stateno, YYERRORSYMBOL)) >= YY_MIN_REDUCE ){ yy_pop_parser_stack(yypParser); } if( yypParser->yytos < yypParser->yystack || yymajor==0 ){ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif yymajor = YYNOCODE; }else if( yymx!=YYERRORSYMBOL ){ yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax ** error routine and continue going as if nothing had happened. ** ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ yy_syntax_error(yypParser,yymajor, yyminor); yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yymajor = YYNOCODE; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** ** * Report an error message, and throw away the input token. ** ** * If the input token is $, then fail the parse. ** ** As before, subsequent error messages are suppressed until ** three input tokens have been successfully shifted. */ if( yypParser->yyerrcnt<=0 ){ yy_syntax_error(yypParser,yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); if( yyendofinput ){ yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif } yymajor = YYNOCODE; #endif } }while( yymajor!=YYNOCODE && yypParser->yytos>yypParser->yystack ); #ifndef NDEBUG if( yyTraceFILE ){ yyStackEntry *i; char cDiv = '['; fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt); for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){ fprintf(yyTraceFILE,"%c%s", cDiv, yyTokenName[i->major]); cDiv = ' '; } fprintf(yyTraceFILE,"]\n"); } #endif return; } |
| | > | | | | | | | | | | | | | > < | | | | | | > | > | | | > | | > < | | > > | > | | | | | | > | | | | | | | | | > | > | | > | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > | | | | | < < > > > > | > | > | | | > | | | > | | | | | | | > | > | | | | | | > | | | | | | | | > | > | < > | > | | | | | < > > | | > | | | | | | | | | | > | | > | > | | | | | > | < | | | | > > | > | > | | | | < > > > | | | > | > | | > | > | | | > | | < > > > | < > > > | | | > | | | | | | | < > > | | | > | | | | > | | < < > > > | | | > | < > | > | > | | > | | | | | | | | | | | < > | > | | | | | | | | > | > | | > | | | | < > > | | > | | | | < > | | > | | | | | | > > | | > | | < > > | | | | > | > | > | > | > | < > | > | > | | | | | | | | | | < > > | | | > | > | | | < > > | | | | | > | > | | | | | | > | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < > > | | | | | | | | < > > > | | > | | | > | > | | | | | | | | > | > | > | | | < > > | | | | > | > | | | | | | | > | | | | | | | | | | | > > | > | | > > > | > | | | | < > > > > > > > | | | > > | > > | | | | > > > > | > | | | | < > > > > > > | | | | > | > | < > > > > > > > | | | < > > > > | | | > | > | | > | > | | > | > | | | | > | > > | > | | > > > | > | | | | | > | > | | | | | < > > > > > | | | > > > | > | | | | | > | > | | | | | > | > | | | > > > | > | | | | | > | > | | | | | | | | | > | | < > | | | | | < > | | | | | | | | | < > > | | < > > | < > > | | | | | | | < > > | | | | | | < > > | | < > > | | < > | | | | | | | | < > > | | | | | | | | | | > | | > | | > | > | | > | | | > | | < > > > | < > > | | > | > | | | > | > | | | | < > > | | | | | | | | | | | | | | | | | | | | | < > > | | | > | > | | | | > | > | > | | > | | | < > > | | | > > | | | | > | < > > | | | | | | | | | | | < < > > | | | | | | | | | | | | | < > > | | < > | > | | | | | > | | > | | < > | > | | | | | | |
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 ... 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 ... 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 ... 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 ... 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 ... 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 ... 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 .... 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 |
** YY_ERROR_ACTION The yy_action[] code for syntax error ** YY_ACCEPT_ACTION The yy_action[] code for accept ** YY_NO_ACTION The yy_action[] code for no-op ** YY_MIN_REDUCE Minimum value for reduce actions ** YY_MAX_REDUCE Maximum value for reduce actions */ #ifndef INTERFACE #define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char #define YYNOCODE 28 #define YYACTIONTYPE unsigned char #define ParseTOKENTYPE void * typedef union { int yyinit; ParseTOKENTYPE yy0; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 1000000 #endif #define ParseARG_SDECL struct kml_data *p_data ; #define ParseARG_PDECL , struct kml_data *p_data #define ParseARG_FETCH struct kml_data *p_data = yypParser->p_data #define ParseARG_STORE yypParser->p_data = p_data #define YYNSTATE 27 #define YYNRULE 34 #define YYNTOKEN 9 #define YY_MAX_SHIFT 26 #define YY_MIN_SHIFTREDUCE 49 #define YY_MAX_SHIFTREDUCE 82 #define YY_ERROR_ACTION 83 ................................................................................ ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production ** code the yytestcase() macro should be turned off. But it is useful ** for testing. */ #ifndef yytestcase #define yytestcase(X) #endif /* Next are the tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement ** functions that take a state number and lookahead value and return an ** action integer. ................................................................................ ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (63) static const YYACTIONTYPE yy_action[] = { /* 0 */ 26, 26, 26, 4, 87, 5, 2, 2, 5, 5, /* 10 */ 100, 84, 1, 100, 100, 105, 106, 3, 8, 5, /* 20 */ 25, 6, 74, 23, 100, 109, 24, 12, 115, 23, /* 30 */ 13, 19, 14, 16, 95, 17, 99, 8, 21, 7, /* 40 */ 10, 10, 18, 97, 110, 15, 113, 114, 66, 14, /* 50 */ 9, 23, 101, 66, 20, 11, 65, 53, 70, 52, /* 60 */ 51, 22, 80, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 12, 13, 14, 15, 16, 17, 15, 15, 17, 17, /* 10 */ 22, 10, 11, 22, 22, 24, 24, 15, 18, 17, /* 20 */ 2, 3, 8, 5, 22, 25, 2, 3, 0, 5, /* 30 */ 18, 19, 4, 20, 21, 20, 21, 18, 2, 3, /* 40 */ 20, 20, 20, 21, 25, 2, 26, 26, 5, 4, /* 50 */ 18, 5, 23, 5, 23, 20, 3, 3, 7, 3, /* 60 */ 3, 6, 1, 27, 27, 27, 27, 27, 27, 27, /* 70 */ 27, 27, }; #define YY_SHIFT_COUNT (26) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (61) static const unsigned char yy_shift_ofst[] = { /* 0 */ 63, 28, 45, 45, 45, 18, 14, 14, 46, 46, /* 10 */ 14, 14, 14, 24, 43, 48, 14, 14, 14, 36, /* 20 */ 53, 54, 51, 55, 56, 57, 61, }; #define YY_REDUCE_COUNT (18) #define YY_REDUCE_MIN (-12) #define YY_REDUCE_MAX (35) static const signed char yy_reduce_ofst[] = { /* 0 */ 1, -12, -9, -8, 2, 12, 13, 15, 0, 19, /* 10 */ 20, 21, 22, 32, 29, 31, 35, 35, 35, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 116, 83, 104, 104, 86, 83, 91, 93, 108, 108, /* 10 */ 112, 112, 92, 83, 83, 83, 94, 98, 96, 83, /* 20 */ 83, 83, 83, 83, 83, 83, 83, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. ** ................................................................................ ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. ** ** After the "shift" half of a SHIFTREDUCE action, the stateno field ** actually contains the reduce action for the second half of the ** SHIFTREDUCE. */ struct yyStackEntry { YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */ }; typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH int yyhwm; /* High-water mark of the stack */ #endif #ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; #ifndef NDEBUG #include <stdio.h> static FILE *yyTraceFILE = 0; ................................................................................ ** line of trace output. If NULL, then tracing is ** turned off. ** </ul> ** ** Outputs: ** None. */ void ParseTrace (FILE * TraceFILE, char *zTracePrompt) { yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if (yyTraceFILE == 0) yyTracePrompt = 0; else if (yyTracePrompt == 0) yyTraceFILE = 0; } #endif /* NDEBUG */ #if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { /* 0 */ "$", /* 1 */ "KML_NEWLINE", /* 2 */ "KML_END", /* 3 */ "KML_CLOSE", /* 4 */ "KML_OPEN", /* 5 */ "KML_KEYWORD", /* 6 */ "KML_EQ", /* 7 */ "KML_VALUE", /* 8 */ "KML_COORD", /* 9 */ "error", /* 10 */ "main", /* 11 */ "in", /* 12 */ "state", /* 13 */ "program", /* 14 */ "kml_tree", /* 15 */ "node", /* 16 */ "node_chain", /* 17 */ "open_tag", /* 18 */ "attr", /* 19 */ "attributes", /* 20 */ "coord", /* 21 */ "coord_chain", /* 22 */ "close_tag", /* 23 */ "keyword", /* 24 */ "extra_nodes", /* 25 */ "extra_attr", /* 26 */ "extra_coord", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "kml_tree ::= node", /* 1 */ "kml_tree ::= node_chain", /* 2 */ "node ::= open_tag KML_END KML_CLOSE", /* 3 */ "node ::= open_tag attr KML_END KML_CLOSE", /* 4 */ "node ::= open_tag attributes KML_END KML_CLOSE", /* 5 */ "node ::= open_tag KML_CLOSE", /* 6 */ "node ::= open_tag attr KML_CLOSE", /* 7 */ "node ::= open_tag attributes KML_CLOSE", /* 8 */ "node ::= open_tag KML_CLOSE coord", /* 9 */ "node ::= open_tag KML_CLOSE coord_chain", /* 10 */ "node ::= open_tag attr KML_CLOSE coord", /* 11 */ "node ::= open_tag attr KML_CLOSE coord_chain", /* 12 */ "node ::= open_tag attributes KML_CLOSE coord", /* 13 */ "node ::= open_tag attributes KML_CLOSE coord_chain", /* 14 */ "node ::= close_tag", /* 15 */ "open_tag ::= KML_OPEN keyword", /* 16 */ "close_tag ::= KML_OPEN KML_END keyword KML_CLOSE", /* 17 */ "keyword ::= KML_KEYWORD", /* 18 */ "extra_nodes ::=", /* 19 */ "extra_nodes ::= node extra_nodes", /* 20 */ "node_chain ::= node node extra_nodes", /* 21 */ "attr ::= KML_KEYWORD KML_EQ KML_VALUE", /* 22 */ "extra_attr ::=", /* 23 */ "extra_attr ::= attr extra_attr", /* 24 */ "attributes ::= attr attr extra_attr", /* 25 */ "coord ::= KML_COORD", /* 26 */ "extra_coord ::=", /* 27 */ "extra_coord ::= coord extra_coord", /* 28 */ "coord_chain ::= coord coord extra_coord", /* 29 */ "main ::= in", /* 30 */ "in ::=", /* 31 */ "in ::= in state KML_NEWLINE", /* 32 */ "state ::= program", /* 33 */ "program ::= kml_tree", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number ** of errors. Return 0 on success. */ static int yyGrowStack (yyParser * p) { int newSize; int idx; yyStackEntry *pNew; newSize = p->yystksz * 2 + 100; idx = p->yytos ? (int) (p->yytos - p->yystack) : 0; if (p->yystack == &p->yystk0) { pNew = malloc (newSize * sizeof (pNew[0])); if (pNew) pNew[0] = p->yystk0; } else { pNew = realloc (p->yystack, newSize * sizeof (pNew[0])); } if (pNew) { p->yystack = pNew; p->yytos = &p->yystack[idx]; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sStack grows from %d to %d entries.\n", yyTracePrompt, p->yystksz, newSize); } #endif p->yystksz = newSize; } return pNew == 0; } #endif /* Datatype of the argument to the memory allocated passed as the ** second argument to ParseAlloc() below. This can be changed by ** putting an appropriate #define in the %include section of the input ** grammar. */ #ifndef YYMALLOCARGTYPE #define YYMALLOCARGTYPE size_t #endif /* Initialize a new parser that has already been allocated. */ static void ParseInit (void *yypParser) { yyParser *pParser = (yyParser *) yypParser; #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 pParser->yytos = NULL; pParser->yystack = NULL; pParser->yystksz = 0; if (yyGrowStack (pParser)) { pParser->yystack = &pParser->yystk0; pParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY pParser->yyerrcnt = -1; #endif pParser->yytos = pParser->yystack; pParser->yystack[0].stateno = 0; pParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH - 1]; #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like ................................................................................ ** Inputs: ** A pointer to the function used to allocate memory. ** ** Outputs: ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ void * ParseAlloc (void *(*mallocProc) (YYMALLOCARGTYPE)) { yyParser *pParser; pParser = (yyParser *) (*mallocProc) ((YYMALLOCARGTYPE) sizeof (yyParser)); if (pParser) ParseInit (pParser); return pParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ /* The following function deletes the "minor type" or semantic value ** associated with a symbol. The symbol can be either a terminal ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is ** a pointer to the value to be deleted. The code used to do the ** deletions is derived from the %destructor and/or %token_destructor ** directives of the input grammar. */ static void yy_destructor (yyParser * yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE * yypminor /* The object to be destroyed */ ) { ParseARG_FETCH; switch (yymajor) { /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen ** when the symbol is popped from the stack during a ** reduce or during error processing or when a parser is ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ /********* Begin destructor definitions ***************************************/ /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } /* ** Pop the parser's stack once. ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. */ static void yy_pop_parser_stack (yyParser * pParser) { yyStackEntry *yytos; assert (pParser->yytos != 0); assert (pParser->yytos > pParser->yystack); yytos = pParser->yytos--; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif yy_destructor (pParser, yytos->major, &yytos->minor); } /* ** Clear all secondary memory allocations from the parser */ static void ParseFinalize (void *p) { yyParser *pParser = (yyParser *) p; while (pParser->yytos > pParser->yystack) yy_pop_parser_stack (pParser); #if YYSTACKDEPTH<=0 if (pParser->yystack != &pParser->yystk0) free (pParser->yystack); #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** ** If the YYPARSEFREENEVERNULL macro exists (for example because it ** is defined in a %include section of the input grammar) then it is ** assumed that the input pointer is never NULL. */ void ParseFree (void *p, /* The parser to be deleted */ void (*freeProc) (void *) /* Function used to reclaim memory */ ) { #ifndef YYPARSEFREENEVERNULL if (p == 0) return; #endif ParseFinalize (p); (*freeProc) (p); } #endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. */ #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak (void *p) { yyParser *pParser = (yyParser *) p; return pParser->yyhwm; } #endif /* This array of booleans keeps track of the parser statement ** coverage. The element yycoverage[X][Y] is set when the parser ** is in state X and has a lookahead token Y. In a well-tested ** systems, every element of this matrix should end up being set. ................................................................................ ** ** (1) has not been used by the parser, and ** (2) is not a syntax error. ** ** Return the number of missed state/lookahead combinations. */ #if defined(YYCOVERAGE) int ParseCoverage (FILE * out) { int stateno, iLookAhead, i; int nMissed = 0; for (stateno = 0; stateno < YYNSTATE; stateno++) { i = yy_shift_ofst[stateno]; for (iLookAhead = 0; iLookAhead < YYNTOKEN; iLookAhead++) { if (yy_lookahead[i + iLookAhead] != iLookAhead) continue; if (yycoverage[stateno][iLookAhead] == 0) nMissed++; if (out) { fprintf (out, "State %d lookahead %s %s\n", stateno, yyTokenName[iLookAhead], yycoverage[stateno][iLookAhead] ? "ok" : "missed"); } } } return nMissed; } #endif /* ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ static unsigned int yy_find_shift_action (yyParser * pParser, /* The parser */ YYCODETYPE iLookAhead /* The look-ahead token */ ) { int i; int stateno = pParser->yytos->stateno; if (stateno > YY_MAX_SHIFT) return stateno; assert (stateno <= YY_SHIFT_COUNT); #if defined(YYCOVERAGE) yycoverage[stateno][iLookAhead] = 1; #endif do { i = yy_shift_ofst[stateno]; assert (i >= 0); assert (i + YYNTOKEN <= (int) sizeof (yy_lookahead) / sizeof (yy_lookahead[0])); assert (iLookAhead != YYNOCODE); assert (iLookAhead < YYNTOKEN); i += iLookAhead; if (yy_lookahead[i] != iLookAhead) { #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0]) && (iFallback = yyFallback[iLookAhead]) != 0) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); } #endif assert (yyFallback[iFallback] == 0); /* Fallback loop must terminate */ iLookAhead = iFallback; continue; } #endif #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; if ( #if YY_SHIFT_MIN+YYWILDCARD<0 j >= 0 && #endif #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT j < YY_ACTTAB_COUNT && #endif yy_lookahead[j] == YYWILDCARD && iLookAhead > 0) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ return yy_default[stateno]; } else { return yy_action[i]; } } while (1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ static int yy_find_reduce_action (int stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ) { int i; #ifdef YYERRORSYMBOL if (stateno > YY_REDUCE_COUNT) { return yy_default[stateno]; } #else assert (stateno <= YY_REDUCE_COUNT); #endif i = yy_reduce_ofst[stateno]; assert (iLookAhead != YYNOCODE); i += iLookAhead; #ifdef YYERRORSYMBOL if (i < 0 || i >= YY_ACTTAB_COUNT || yy_lookahead[i] != iLookAhead) { return yy_default[stateno]; } #else assert (i >= 0 && i < YY_ACTTAB_COUNT); assert (yy_lookahead[i] == iLookAhead); #endif return yy_action[i]; } /* ** The following routine is called if the stack overflows. */ static void yyStackOverflow (yyParser * yypParser) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt); } #endif while (yypParser->yytos > yypParser->yystack) yy_pop_parser_stack (yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ /******** Begin %stack_overflow code ******************************************/ spatialite_e ("Giving up. Parser stack overflow\n"); /******** End %stack_overflow code ********************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ } /* ** Print tracing information for a SHIFT action */ #ifndef NDEBUG static void yyTraceShift (yyParser * yypParser, int yyNewState, const char *zTag) { if (yyTraceFILE) { if (yyNewState < YYNSTATE) { fprintf (yyTraceFILE, "%s%s '%s', go to state %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState); } else { fprintf (yyTraceFILE, "%s%s '%s', pending reduce %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState - YY_MIN_REDUCE); } } } #else #define yyTraceShift(X,Y,Z) #endif /* ** Perform a shift action. */ static void yy_shift (yyParser * yypParser, /* The parser to be shifted */ int yyNewState, /* The new state to shift in */ int yyMajor, /* The major token to shift in */ ParseTOKENTYPE yyMinor /* The minor token to shift in */ ) { yyStackEntry *yytos; yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH if ((int) (yypParser->yytos - yypParser->yystack) > yypParser->yyhwm) { yypParser->yyhwm++; assert (yypParser->yyhwm == (int) (yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if (yypParser->yytos > yypParser->yystackEnd) { yypParser->yytos--; yyStackOverflow (yypParser); return; } #else if (yypParser->yytos >= &yypParser->yystack[yypParser->yystksz]) { if (yyGrowStack (yypParser)) { yypParser->yytos--; yyStackOverflow (yypParser); return; } } #endif if (yyNewState > YY_MAX_SHIFT) { yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } yytos = yypParser->yytos; yytos->stateno = (YYACTIONTYPE) yyNewState; yytos->major = (YYCODETYPE) yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift (yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { {14, -1}, /* (0) kml_tree ::= node */ {14, -1}, /* (1) kml_tree ::= node_chain */ {15, -3}, /* (2) node ::= open_tag KML_END KML_CLOSE */ {15, -4}, /* (3) node ::= open_tag attr KML_END KML_CLOSE */ {15, -4}, /* (4) node ::= open_tag attributes KML_END KML_CLOSE */ {15, -2}, /* (5) node ::= open_tag KML_CLOSE */ {15, -3}, /* (6) node ::= open_tag attr KML_CLOSE */ {15, -3}, /* (7) node ::= open_tag attributes KML_CLOSE */ {15, -3}, /* (8) node ::= open_tag KML_CLOSE coord */ {15, -3}, /* (9) node ::= open_tag KML_CLOSE coord_chain */ {15, -4}, /* (10) node ::= open_tag attr KML_CLOSE coord */ {15, -4}, /* (11) node ::= open_tag attr KML_CLOSE coord_chain */ {15, -4}, /* (12) node ::= open_tag attributes KML_CLOSE coord */ {15, -4}, /* (13) node ::= open_tag attributes KML_CLOSE coord_chain */ {15, -1}, /* (14) node ::= close_tag */ {17, -2}, /* (15) open_tag ::= KML_OPEN keyword */ {22, -4}, /* (16) close_tag ::= KML_OPEN KML_END keyword KML_CLOSE */ {23, -1}, /* (17) keyword ::= KML_KEYWORD */ {24, 0}, /* (18) extra_nodes ::= */ {24, -2}, /* (19) extra_nodes ::= node extra_nodes */ {16, -3}, /* (20) node_chain ::= node node extra_nodes */ {18, -3}, /* (21) attr ::= KML_KEYWORD KML_EQ KML_VALUE */ {25, 0}, /* (22) extra_attr ::= */ {25, -2}, /* (23) extra_attr ::= attr extra_attr */ {19, -3}, /* (24) attributes ::= attr attr extra_attr */ {20, -1}, /* (25) coord ::= KML_COORD */ {26, 0}, /* (26) extra_coord ::= */ {26, -2}, /* (27) extra_coord ::= coord extra_coord */ {21, -3}, /* (28) coord_chain ::= coord coord extra_coord */ {10, -1}, /* (29) main ::= in */ {11, 0}, /* (30) in ::= */ {11, -3}, /* (31) in ::= in state KML_NEWLINE */ {12, -1}, /* (32) state ::= program */ {13, -1}, /* (33) program ::= kml_tree */ }; static void yy_accept (yyParser *); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. ** ** The yyLookahead and yyLookaheadToken parameters provide reduce actions ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE ** if the lookahead token has already been consumed. As this procedure is ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ static void yy_reduce (yyParser * yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ ) { int yygoto; /* The next state */ int yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ ParseARG_FETCH; (void) yyLookahead; (void) yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if (yyTraceFILE && yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0]))) { yysize = yyRuleInfo[yyruleno].nrhs; if (yysize) { fprintf (yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); } else { fprintf (yyTraceFILE, "%sReduce %d [%s].\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno]); } } #endif /* NDEBUG */ /* Check that the stack is large enough to grow by a single entry ** if the RHS of the rule is empty. This ensures that there is room ** enough on the stack to push the LHS value */ if (yyRuleInfo[yyruleno].nrhs == 0) { #ifdef YYTRACKMAXSTACKDEPTH if ((int) (yypParser->yytos - yypParser->yystack) > yypParser->yyhwm) { yypParser->yyhwm++; assert (yypParser->yyhwm == (int) (yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if (yypParser->yytos >= yypParser->yystackEnd) { yyStackOverflow (yypParser); return; } #else if (yypParser->yytos >= &yypParser->yystack[yypParser->yystksz - 1]) { if (yyGrowStack (yypParser)) { yyStackOverflow (yypParser); return; } yymsp = yypParser->yytos; } #endif } switch (yyruleno) { /* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* kml_tree ::= node */ case 1: /* kml_tree ::= node_chain */ yytestcase (yyruleno == 1); { p_data->result = yymsp[0].minor.yy0; } break; case 2: /* node ::= open_tag KML_END KML_CLOSE */ { yylhsminor.yy0 = kml_createSelfClosedNode (p_data, (void *) yymsp[-2].minor.yy0, NULL); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 3: /* node ::= open_tag attr KML_END KML_CLOSE */ case 4: /* node ::= open_tag attributes KML_END KML_CLOSE */ yytestcase (yyruleno == 4); { yylhsminor.yy0 = kml_createSelfClosedNode (p_data, (void *) yymsp[-3].minor.yy0, (void *) yymsp[-2].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 5: /* node ::= open_tag KML_CLOSE */ { yylhsminor.yy0 = kml_createNode (p_data, (void *) yymsp[-1].minor.yy0, NULL, NULL); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 6: /* node ::= open_tag attr KML_CLOSE */ case 7: /* node ::= open_tag attributes KML_CLOSE */ yytestcase (yyruleno == 7); { yylhsminor.yy0 = kml_createNode (p_data, (void *) yymsp[-2].minor.yy0, (void *) yymsp[-1].minor.yy0, NULL); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 8: /* node ::= open_tag KML_CLOSE coord */ case 9: /* node ::= open_tag KML_CLOSE coord_chain */ yytestcase (yyruleno == 9); { yylhsminor.yy0 = kml_createNode (p_data, (void *) yymsp[-2].minor.yy0, NULL, (void *) yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 10: /* node ::= open_tag attr KML_CLOSE coord */ case 11: /* node ::= open_tag attr KML_CLOSE coord_chain */ yytestcase (yyruleno == 11); case 12: /* node ::= open_tag attributes KML_CLOSE coord */ yytestcase (yyruleno == 12); case 13: /* node ::= open_tag attributes KML_CLOSE coord_chain */ yytestcase (yyruleno == 13); { yylhsminor.yy0 = kml_createNode (p_data, (void *) yymsp[-3].minor.yy0, (void *) yymsp[-2].minor.yy0, (void *) yymsp[0].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 14: /* node ::= close_tag */ { yylhsminor.yy0 = kml_closingNode (p_data, (void *) yymsp[0].minor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 15: /* open_tag ::= KML_OPEN keyword */ { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 16: /* close_tag ::= KML_OPEN KML_END keyword KML_CLOSE */ { yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; case 17: /* keyword ::= KML_KEYWORD */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 18: /* extra_nodes ::= */ case 22: /* extra_attr ::= */ yytestcase (yyruleno == 22); case 26: /* extra_coord ::= */ yytestcase (yyruleno == 26); { yymsp[1].minor.yy0 = NULL; } break; case 19: /* extra_nodes ::= node extra_nodes */ { ((kmlNodePtr) yymsp[-1].minor.yy0)->Next = (kmlNodePtr) yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 20: /* node_chain ::= node node extra_nodes */ { ((kmlNodePtr) yymsp[-1].minor.yy0)->Next = (kmlNodePtr) yymsp[0].minor.yy0; ((kmlNodePtr) yymsp[-2].minor.yy0)->Next = (kmlNodePtr) yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 21: /* attr ::= KML_KEYWORD KML_EQ KML_VALUE */ { yylhsminor.yy0 = kml_attribute (p_data, (void *) yymsp[-2].minor.yy0, (void *) yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 23: /* extra_attr ::= attr extra_attr */ { ((kmlAttrPtr) yymsp[-1].minor.yy0)->Next = (kmlAttrPtr) yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 24: /* attributes ::= attr attr extra_attr */ { ((kmlAttrPtr) yymsp[-1].minor.yy0)->Next = (kmlAttrPtr) yymsp[0].minor.yy0; ((kmlAttrPtr) yymsp[-2].minor.yy0)->Next = (kmlAttrPtr) yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 25: /* coord ::= KML_COORD */ { yylhsminor.yy0 = kml_coord (p_data, (void *) yymsp[0].minor.yy0); } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 27: /* extra_coord ::= coord extra_coord */ { ((kmlCoordPtr) yymsp[-1].minor.yy0)->Next = (kmlCoordPtr) yymsp[0].minor.yy0; yylhsminor.yy0 = yymsp[-1].minor.yy0; } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 28: /* coord_chain ::= coord coord extra_coord */ { ((kmlCoordPtr) yymsp[-1].minor.yy0)->Next = (kmlCoordPtr) yymsp[0].minor.yy0; ((kmlCoordPtr) yymsp[-2].minor.yy0)->Next = (kmlCoordPtr) yymsp[-1].minor.yy0; yylhsminor.yy0 = yymsp[-2].minor.yy0; } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; default: /* (29) main ::= in */ yytestcase (yyruleno == 29); /* (30) in ::= */ yytestcase (yyruleno == 30); /* (31) in ::= in state KML_NEWLINE */ yytestcase (yyruleno == 31); /* (32) state ::= program (OPTIMIZED OUT) */ assert (yyruleno != 32); /* (33) program ::= kml_tree (OPTIMIZED OUT) */ assert (yyruleno != 33); break; /********** End reduce actions ************************************************/ }; assert (yyruleno < sizeof (yyRuleInfo) / sizeof (yyRuleInfo[0])); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action (yymsp[yysize].stateno, (YYCODETYPE) yygoto); /* There are no SHIFTREDUCE actions on nonterminals because the table ** generator has simplified them to pure REDUCE actions. */ assert (!(yyact > YY_MAX_SHIFT && yyact <= YY_MAX_SHIFTREDUCE)); /* It is not possible for a REDUCE to be followed by an error */ assert (yyact != YY_ERROR_ACTION); yymsp += yysize + 1; yypParser->yytos = yymsp; yymsp->stateno = (YYACTIONTYPE) yyact; yymsp->major = (YYCODETYPE) yygoto; yyTraceShift (yypParser, yyact, "... then shift"); } /* ** The following code executes when the parse fails */ #ifndef YYNOERRORRECOVERY static void yy_parse_failed (yyParser * yypParser /* The parser */ ) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt); } #endif while (yypParser->yytos > yypParser->yystack) yy_pop_parser_stack (yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } #endif /* YYNOERRORRECOVERY */ /* ** The following code executes when a syntax error first occurs. */ static void yy_syntax_error (yyParser * yypParser, /* The parser */ int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ) { ParseARG_FETCH; #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ /* ** when the LEMON parser encounters an error ** then this global variable is set */ p_data->kml_parse_error = 1; p_data->result = NULL; /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* ** The following is executed when the parser accepts */ static void yy_accept (yyParser * yypParser /* The parser */ ) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt); } #endif #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif assert (yypParser->yytos == yypParser->yystack); /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ /*********** End %parse_accept code *******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* The main parser program. ** The first argument is a pointer to a structure obtained from ** "ParseAlloc" which describes the current state of the parser. ** The second argument is the major token number. The third is ** the minor token. The fourth optional argument is whatever the ................................................................................ ** <li> The minor token number. ** <li> An option argument of a grammar-specified type. ** </ul> ** ** Outputs: ** None. */ void Parse (void *yyp, /* The parser */ int yymajor, /* The major token code number */ ParseTOKENTYPE yyminor /* The value for the token */ ParseARG_PDECL /* Optional %extra_argument parameter */ ) { YYMINORTYPE yyminorunion; unsigned int yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif yyParser *yypParser; /* The parser */ yypParser = (yyParser *) yyp; assert (yypParser->yytos != 0); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor == 0); #endif ParseARG_STORE; #ifndef NDEBUG if (yyTraceFILE) { int stateno = yypParser->yytos->stateno; if (stateno < YY_MIN_REDUCE) { fprintf (yyTraceFILE, "%sInput '%s' in state %d\n", yyTracePrompt, yyTokenName[yymajor], stateno); } else { fprintf (yyTraceFILE, "%sInput '%s' with pending reduce %d\n", yyTracePrompt, yyTokenName[yymajor], stateno - YY_MIN_REDUCE); } } #endif do { yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor); if (yyact >= YY_MIN_REDUCE) { yy_reduce (yypParser, yyact - YY_MIN_REDUCE, yymajor, yyminor); } else if (yyact <= YY_MAX_SHIFTREDUCE) { yy_shift (yypParser, yyact, yymajor, yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif yymajor = YYNOCODE; } else if (yyact == YY_ACCEPT_ACTION) { yypParser->yytos--; yy_accept (yypParser); return; } else { assert (yyact == YY_ERROR_ACTION); yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt); } #endif #ifdef YYERRORSYMBOL /* A syntax error has occurred. ** The response to an error depends upon whether or not the ** grammar defines an error token "ERROR". ** ** This is what we do if the grammar does define ERROR: ** ** * Call the %syntax_error function. ** ** * Begin popping the stack until we enter a state where ** it is legal to shift the error symbol, then shift ** the error symbol. ** ** * Set the error count to three. ** ** * Begin accepting and shifting new tokens. No new error ** processing will occur until three tokens have been ** shifted successfully. ** */ if (yypParser->yyerrcnt < 0) { yy_syntax_error (yypParser, yymajor, yyminor); } yymx = yypParser->yytos->major; if (yymx == YYERRORSYMBOL || yyerrorhit) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sDiscard input token %s\n", yyTracePrompt, yyTokenName[yymajor]); } #endif yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yymajor = YYNOCODE; } else { while (yypParser->yytos >= yypParser->yystack && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action (yypParser-> yytos->stateno, YYERRORSYMBOL)) >= YY_MIN_REDUCE) { yy_pop_parser_stack (yypParser); } if (yypParser->yytos < yypParser->yystack || yymajor == 0) { yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yy_parse_failed (yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif yymajor = YYNOCODE; } else if (yymx != YYERRORSYMBOL) { yy_shift (yypParser, yyact, YYERRORSYMBOL, yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax ** error routine and continue going as if nothing had happened. ** ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ yy_syntax_error (yypParser, yymajor, yyminor); yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yymajor = YYNOCODE; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** ** * Report an error message, and throw away the input token. ** ** * If the input token is $, then fail the parse. ** ** As before, subsequent error messages are suppressed until ** three input tokens have been successfully shifted. */ if (yypParser->yyerrcnt <= 0) { yy_syntax_error (yypParser, yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); if (yyendofinput) { yy_parse_failed (yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif } yymajor = YYNOCODE; #endif } } while (yymajor != YYNOCODE && yypParser->yytos > yypParser->yystack); #ifndef NDEBUG if (yyTraceFILE) { yyStackEntry *i; char cDiv = '['; fprintf (yyTraceFILE, "%sReturn. Stack=", yyTracePrompt); for (i = &yypParser->yystack[1]; i <= yypParser->yytos; i++) { fprintf (yyTraceFILE, "%c%s", cDiv, yyTokenName[i->major]); cDiv = ' '; } fprintf (yyTraceFILE, "]\n"); } #endif return; } |
Changes to src/gaiageo/geoJSON.c.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 ... 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 ... 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 ... 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 ... 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 ... 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 .... 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 .... 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 |
** YY_ERROR_ACTION The yy_action[] code for syntax error ** YY_ACCEPT_ACTION The yy_action[] code for accept ** YY_NO_ACTION The yy_action[] code for no-op ** YY_MIN_REDUCE Minimum value for reduce actions ** YY_MAX_REDUCE Maximum value for reduce actions */ #ifndef INTERFACE # define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char #define YYNOCODE 84 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE void * typedef union { int yyinit; ParseTOKENTYPE yy0; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 1000000 #endif #define ParseARG_SDECL struct geoJson_data *p_data ; #define ParseARG_PDECL , struct geoJson_data *p_data #define ParseARG_FETCH struct geoJson_data *p_data = yypParser->p_data #define ParseARG_STORE yypParser->p_data = p_data #define YYNSTATE 532 #define YYNRULE 159 #define YYNTOKEN 25 #define YY_MAX_SHIFT 531 #define YY_MIN_SHIFTREDUCE 679 #define YY_MAX_SHIFTREDUCE 837 #define YY_ERROR_ACTION 838 ................................................................................ ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production ** code the yytestcase() macro should be turned off. But it is useful ** for testing. */ #ifndef yytestcase # define yytestcase(X) #endif /* Next are the tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement ** functions that take a state number and lookahead value and return an ** action integer. ................................................................................ ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (820) static const YYACTIONTYPE yy_action[] = { /* 0 */ 531, 531, 531, 841, 842, 843, 844, 845, 846, 847, /* 10 */ 848, 849, 850, 851, 852, 853, 854, 528, 104, 219, /* 20 */ 97, 96, 95, 189, 88, 87, 994, 514, 530, 2, /* 30 */ 473, 428, 381, 342, 303, 264, 95, 709, 88, 87, /* 40 */ 94, 217, 93, 92, 103, 233, 102, 101, 104, 86, /* 50 */ 97, 96, 258, 244, 214, 211, 208, 968, 229, 225, /* 60 */ 839, 1, 302, 235, 297, 254, 250, 289, 263, 139, /* 70 */ 341, 131, 336, 201, 380, 328, 375, 514, 427, 367, /* 80 */ 414, 242, 472, 406, 461, 514, 527, 453, 522, 710, /* 90 */ 711, 511, 477, 475, 185, 184, 193, 192, 197, 196, /* 100 */ 260, 205, 204, 207, 195, 247, 222, 251, 226, 275, /* 110 */ 255, 272, 238, 237, 230, 266, 265, 469, 274, 273, /* 120 */ 270, 465, 278, 277, 514, 287, 282, 284, 286, 285, /* 130 */ 514, 288, 276, 295, 486, 291, 290, 514, 113, 109, /* 140 */ 309, 63, 305, 304, 514, 301, 300, 313, 312, 321, /* 150 */ 317, 316, 74, 514, 325, 324, 327, 315, 330, 329, /* 160 */ 334, 121, 117, 157, 514, 340, 339, 344, 343, 348, /* 170 */ 352, 351, 220, 514, 356, 355, 360, 221, 364, 363, /* 180 */ 514, 366, 354, 369, 368, 373, 123, 379, 378, 514, /* 190 */ 122, 387, 399, 383, 382, 514, 514, 391, 390, 29, /* 200 */ 395, 394, 405, 393, 403, 402, 408, 407, 412, 4, /* 210 */ 423, 40, 514, 434, 418, 426, 425, 514, 430, 429, /* 220 */ 107, 438, 437, 442, 441, 446, 450, 449, 51, 514, /* 230 */ 452, 440, 455, 454, 459, 471, 470, 488, 514, 492, /* 240 */ 496, 487, 500, 514, 495, 504, 499, 508, 62, 514, /* 250 */ 191, 507, 510, 498, 516, 203, 222, 520, 515, 526, /* 260 */ 314, 514, 311, 525, 3, 194, 326, 353, 323, 350, /* 270 */ 206, 365, 115, 362, 392, 404, 389, 401, 439, 451, /* 280 */ 436, 448, 497, 509, 494, 506, 155, 226, 144, 230, /* 290 */ 5, 707, 987, 986, 247, 985, 236, 245, 246, 111, /* 300 */ 119, 150, 251, 255, 980, 979, 978, 6, 261, 262, /* 310 */ 108, 961, 129, 131, 106, 298, 112, 137, 116, 958, /* 320 */ 139, 299, 110, 943, 120, 114, 465, 469, 118, 141, /* 330 */ 147, 337, 377, 940, 130, 376, 911, 338, 138, 415, /* 340 */ 420, 125, 416, 417, 418, 419, 133, 124, 908, 463, /* 350 */ 421, 422, 140, 423, 877, 132, 811, 805, 424, 8, /* 360 */ 146, 464, 142, 462, 148, 186, 187, 875, 188, 466, /* 370 */ 467, 468, 999, 9, 190, 512, 513, 523, 169, 183, /* 380 */ 524, 809, 803, 810, 10, 804, 11, 199, 198, 200, /* 390 */ 202, 170, 808, 12, 13, 802, 14, 15, 209, 16, /* 400 */ 210, 17, 478, 212, 213, 218, 215, 216, 159, 482, /* 410 */ 840, 821, 89, 224, 831, 840, 820, 829, 90, 223, /* 420 */ 227, 228, 91, 483, 160, 827, 231, 232, 234, 840, /* 430 */ 490, 807, 18, 819, 801, 240, 840, 243, 840, 840, /* 440 */ 840, 77, 98, 241, 19, 840, 814, 813, 181, 99, /* 450 */ 248, 239, 830, 249, 840, 502, 828, 252, 253, 826, /* 460 */ 256, 100, 800, 161, 257, 259, 80, 105, 840, 793, /* 470 */ 162, 812, 20, 787, 840, 701, 21, 267, 268, 171, /* 480 */ 280, 271, 269, 840, 695, 283, 791, 785, 792, 81, /* 490 */ 786, 22, 23, 292, 281, 840, 279, 25, 296, 840, /* 500 */ 790, 24, 840, 784, 172, 26, 840, 788, 294, 27, /* 510 */ 789, 840, 783, 840, 163, 840, 293, 797, 840, 28, /* 520 */ 840, 782, 794, 775, 30, 769, 31, 840, 840, 308, /* 530 */ 306, 307, 173, 319, 32, 310, 840, 840, 773, 33, /* 540 */ 767, 774, 840, 34, 768, 320, 322, 318, 840, 840, /* 550 */ 36, 35, 772, 766, 174, 37, 840, 39, 38, 840, /* 560 */ 771, 765, 331, 840, 840, 332, 335, 333, 840, 779, /* 570 */ 840, 770, 776, 164, 764, 345, 41, 840, 761, 42, /* 580 */ 346, 755, 840, 840, 349, 759, 840, 347, 357, 43, /* 590 */ 753, 175, 44, 840, 760, 45, 840, 840, 754, 358, /* 600 */ 359, 176, 46, 361, 758, 47, 48, 840, 752, 49, /* 610 */ 840, 757, 751, 370, 840, 371, 374, 840, 372, 840, /* 620 */ 50, 52, 165, 840, 763, 762, 840, 756, 840, 750, /* 630 */ 741, 735, 53, 384, 840, 54, 385, 388, 55, 840, /* 640 */ 739, 840, 386, 177, 733, 56, 740, 734, 840, 840, /* 650 */ 396, 397, 400, 178, 840, 398, 57, 58, 59, 738, /* 660 */ 732, 840, 60, 840, 737, 731, 409, 410, 840, 413, /* 670 */ 840, 411, 840, 61, 126, 736, 127, 747, 128, 840, /* 680 */ 64, 840, 840, 134, 135, 743, 744, 730, 840, 727, /* 690 */ 136, 840, 166, 840, 65, 721, 742, 840, 431, 432, /* 700 */ 435, 840, 481, 67, 840, 840, 433, 66, 725, 719, /* 710 */ 179, 704, 840, 68, 840, 726, 720, 443, 840, 489, /* 720 */ 444, 447, 445, 840, 180, 840, 69, 70, 702, 724, /* 730 */ 718, 71, 840, 723, 72, 840, 717, 696, 456, 840, /* 740 */ 457, 460, 78, 458, 840, 73, 840, 155, 143, 840, /* 750 */ 729, 703, 145, 75, 840, 728, 79, 149, 840, 707, /* 760 */ 167, 722, 151, 840, 501, 840, 716, 840, 706, 474, /* 770 */ 705, 476, 479, 7, 840, 480, 484, 485, 491, 840, /* 780 */ 76, 698, 493, 840, 840, 697, 505, 182, 840, 152, /* 790 */ 503, 82, 153, 840, 154, 840, 83, 840, 700, 694, /* 800 */ 517, 518, 840, 840, 521, 840, 840, 840, 519, 84, /* 810 */ 699, 156, 708, 840, 85, 158, 529, 693, 168, 834, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, /* 10 */ 38, 39, 40, 41, 42, 43, 44, 5, 75, 2, /* 20 */ 77, 78, 79, 46, 81, 82, 0, 50, 2, 10, /* 30 */ 18, 19, 20, 21, 22, 23, 79, 15, 81, 82, /* 40 */ 79, 5, 81, 82, 75, 5, 77, 78, 75, 23, /* 50 */ 77, 78, 5, 9, 18, 19, 12, 74, 18, 19, /* 60 */ 26, 27, 7, 2, 9, 18, 19, 12, 24, 59, /* 70 */ 7, 61, 9, 46, 7, 12, 9, 50, 7, 12, /* 80 */ 9, 46, 7, 12, 9, 50, 7, 12, 9, 16, /* 90 */ 17, 12, 51, 52, 73, 74, 73, 74, 73, 74, /* 100 */ 2, 73, 74, 47, 48, 57, 58, 55, 56, 7, /* 110 */ 45, 9, 73, 74, 49, 69, 70, 45, 69, 70, /* 120 */ 46, 49, 69, 70, 50, 7, 46, 9, 69, 70, /* 130 */ 50, 47, 48, 46, 2, 69, 70, 50, 57, 58, /* 140 */ 46, 10, 65, 66, 50, 69, 70, 65, 66, 46, /* 150 */ 65, 66, 10, 50, 65, 66, 47, 48, 65, 66, /* 160 */ 46, 55, 56, 10, 50, 65, 66, 63, 64, 46, /* 170 */ 63, 64, 80, 50, 63, 64, 46, 80, 63, 64, /* 180 */ 50, 47, 48, 63, 64, 46, 45, 63, 64, 50, /* 190 */ 49, 46, 46, 57, 58, 50, 50, 57, 58, 10, /* 200 */ 57, 58, 47, 48, 57, 58, 57, 58, 46, 6, /* 210 */ 45, 10, 50, 46, 49, 57, 58, 50, 55, 56, /* 220 */ 10, 55, 56, 55, 56, 46, 55, 56, 10, 50, /* 230 */ 47, 48, 55, 56, 46, 55, 56, 45, 50, 46, /* 240 */ 45, 49, 45, 50, 49, 46, 49, 45, 10, 50, /* 250 */ 9, 49, 47, 48, 45, 9, 58, 46, 49, 45, /* 260 */ 7, 50, 9, 49, 10, 24, 7, 7, 9, 9, /* 270 */ 24, 7, 10, 9, 7, 7, 9, 9, 7, 7, /* 280 */ 9, 9, 7, 7, 9, 9, 6, 56, 10, 49, /* 290 */ 6, 11, 80, 80, 57, 80, 80, 76, 76, 10, /* 300 */ 10, 10, 55, 45, 76, 76, 76, 10, 76, 73, /* 310 */ 6, 72, 10, 61, 58, 72, 6, 10, 6, 71, /* 320 */ 59, 71, 57, 68, 6, 56, 49, 45, 55, 6, /* 330 */ 6, 68, 53, 67, 6, 54, 62, 67, 6, 54, /* 340 */ 53, 49, 49, 49, 49, 62, 45, 61, 60, 50, /* 350 */ 45, 45, 49, 45, 54, 59, 8, 8, 60, 4, /* 360 */ 45, 50, 49, 54, 45, 24, 6, 53, 11, 53, /* 370 */ 50, 50, 50, 10, 4, 50, 50, 50, 6, 50, /* 380 */ 50, 8, 8, 8, 4, 8, 4, 6, 24, 11, /* 390 */ 4, 6, 8, 10, 4, 8, 4, 4, 7, 4, /* 400 */ 6, 4, 13, 7, 6, 3, 7, 6, 4, 6, /* 410 */ 83, 11, 4, 6, 8, 83, 11, 8, 4, 7, /* 420 */ 7, 6, 4, 13, 4, 8, 7, 6, 3, 83, /* 430 */ 6, 8, 4, 11, 8, 6, 83, 4, 83, 83, /* 440 */ 83, 10, 4, 11, 10, 83, 11, 11, 6, 4, /* 450 */ 7, 24, 8, 6, 83, 6, 8, 7, 6, 8, /* 460 */ 7, 4, 8, 4, 6, 3, 10, 4, 83, 8, /* 470 */ 6, 11, 4, 8, 83, 8, 10, 7, 6, 6, /* 480 */ 6, 4, 11, 83, 8, 4, 8, 8, 8, 4, /* 490 */ 8, 4, 4, 7, 11, 83, 7, 4, 4, 83, /* 500 */ 8, 10, 83, 8, 6, 4, 83, 8, 11, 4, /* 510 */ 8, 83, 8, 83, 6, 83, 6, 11, 83, 10, /* 520 */ 83, 8, 11, 8, 4, 8, 4, 83, 83, 11, /* 530 */ 7, 6, 6, 6, 10, 4, 83, 83, 8, 4, /* 540 */ 8, 8, 83, 4, 8, 11, 4, 7, 83, 83, /* 550 */ 4, 10, 8, 8, 6, 4, 83, 10, 4, 83, /* 560 */ 8, 8, 7, 83, 83, 6, 4, 11, 83, 11, /* 570 */ 83, 8, 11, 6, 8, 7, 4, 83, 8, 4, /* 580 */ 6, 8, 83, 83, 4, 8, 83, 11, 7, 10, /* 590 */ 8, 6, 4, 83, 8, 4, 83, 83, 8, 6, /* 600 */ 11, 6, 10, 4, 8, 4, 4, 83, 8, 4, /* 610 */ 83, 8, 8, 7, 83, 6, 4, 83, 11, 83, /* 620 */ 10, 4, 6, 83, 11, 11, 83, 8, 83, 8, /* 630 */ 8, 8, 4, 7, 83, 10, 6, 4, 4, 83, /* 640 */ 8, 83, 11, 6, 8, 4, 8, 8, 83, 83, /* 650 */ 7, 6, 4, 6, 83, 11, 10, 4, 4, 8, /* 660 */ 8, 83, 4, 83, 8, 8, 7, 6, 83, 4, /* 670 */ 83, 11, 83, 10, 6, 8, 6, 11, 6, 83, /* 680 */ 4, 83, 83, 6, 6, 11, 11, 8, 83, 8, /* 690 */ 6, 83, 6, 83, 4, 8, 11, 83, 7, 6, /* 700 */ 4, 83, 14, 4, 83, 83, 11, 10, 8, 8, /* 710 */ 6, 8, 83, 4, 83, 8, 8, 7, 83, 7, /* 720 */ 6, 4, 11, 83, 6, 83, 10, 4, 8, 8, /* 730 */ 8, 4, 83, 8, 4, 83, 8, 8, 7, 83, /* 740 */ 6, 4, 4, 11, 83, 10, 83, 6, 6, 83, /* 750 */ 11, 8, 6, 4, 83, 11, 4, 6, 83, 11, /* 760 */ 6, 8, 6, 83, 7, 83, 8, 83, 8, 8, /* 770 */ 8, 8, 2, 4, 83, 4, 4, 3, 11, 83, /* 780 */ 4, 8, 4, 83, 83, 8, 4, 6, 83, 6, /* 790 */ 11, 4, 6, 83, 6, 83, 4, 83, 8, 8, /* 800 */ 7, 6, 83, 83, 4, 83, 83, 83, 11, 10, /* 810 */ 8, 6, 11, 83, 4, 4, 3, 8, 6, 1, /* 820 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, /* 830 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, /* 840 */ 83, 83, 83, 83, 83, }; #define YY_SHIFT_COUNT (531) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (818) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 820, 26, 17, 61, 61, 98, 98, 73, 19, 22, /* 10 */ 19, 19, 22, 19, 132, 131, 142, 153, 19, 22, /* 20 */ 189, 22, 189, 189, 22, 189, 132, 189, 22, 131, /* 30 */ 189, 201, 22, 201, 201, 22, 201, 132, 201, 22, /* 40 */ 142, 201, 218, 22, 218, 218, 22, 218, 132, 218, /* 50 */ 22, 153, 218, 131, 22, 131, 131, 22, 131, 132, /* 60 */ 131, 22, 153, 238, 131, 142, 22, 142, 142, 22, /* 70 */ 142, 132, 142, 22, 153, 142, 153, 22, 153, 153, /* 80 */ 22, 153, 132, 153, 22, 153, 254, 203, 203, 210, /* 90 */ 262, 278, 203, 203, 203, 203, 284, 284, 289, 290, /* 100 */ 291, 284, 284, 284, 284, 297, 304, 302, 210, 304, /* 110 */ 310, 307, 289, 310, 312, 278, 262, 312, 318, 291, /* 120 */ 290, 318, 323, 324, 328, 323, 278, 278, 278, 278, /* 130 */ 302, 328, 332, 324, 291, 291, 291, 291, 307, 332, /* 140 */ 323, 278, 323, 22, 22, 278, 324, 291, 324, 22, /* 150 */ 22, 291, 22, 22, 22, 22, 22, 22, 12, 36, /* 160 */ 40, 47, 44, 55, 63, 67, 71, 75, 79, 241, /* 170 */ 246, 102, 118, 253, 259, 260, 264, 267, 268, 271, /* 180 */ 272, 275, 276, 280, 348, 349, 355, 341, 360, 357, /* 190 */ 363, 370, 373, 374, 380, 372, 375, 377, 382, 364, /* 200 */ 381, 378, 383, 386, 384, 387, 390, 385, 392, 393, /* 210 */ 391, 394, 395, 396, 398, 397, 399, 401, 404, 402, /* 220 */ 400, 405, 406, 408, 412, 407, 409, 414, 413, 415, /* 230 */ 417, 418, 419, 421, 420, 425, 422, 423, 426, 428, /* 240 */ 427, 429, 432, 434, 433, 435, 436, 444, 438, 443, /* 250 */ 447, 448, 445, 450, 452, 451, 457, 453, 458, 459, /* 260 */ 462, 460, 454, 463, 464, 461, 465, 468, 470, 472, /* 270 */ 471, 466, 477, 478, 479, 487, 473, 480, 482, 488, /* 280 */ 489, 474, 483, 491, 481, 492, 495, 493, 498, 501, /* 290 */ 502, 504, 505, 486, 510, 497, 509, 494, 506, 511, /* 300 */ 499, 513, 520, 508, 515, 517, 522, 523, 525, 518, /* 310 */ 524, 531, 530, 532, 535, 526, 533, 536, 539, 540, /* 320 */ 527, 534, 541, 542, 544, 545, 546, 548, 551, 552, /* 330 */ 553, 554, 555, 559, 556, 547, 562, 558, 561, 563, /* 340 */ 566, 572, 567, 570, 573, 575, 568, 574, 576, 579, /* 350 */ 580, 577, 582, 588, 585, 586, 590, 591, 581, 593, /* 360 */ 589, 592, 599, 596, 600, 601, 595, 602, 603, 604, /* 370 */ 605, 606, 609, 607, 610, 612, 613, 614, 619, 621, /* 380 */ 617, 616, 622, 623, 628, 626, 630, 631, 625, 633, /* 390 */ 632, 636, 634, 637, 638, 639, 641, 643, 645, 644, /* 400 */ 646, 648, 651, 652, 653, 647, 654, 656, 657, 658, /* 410 */ 659, 661, 660, 663, 665, 666, 668, 670, 672, 674, /* 420 */ 675, 677, 678, 684, 685, 667, 679, 676, 686, 681, /* 430 */ 687, 690, 691, 693, 695, 697, 696, 700, 701, 699, /* 440 */ 704, 707, 708, 709, 710, 714, 711, 716, 717, 721, /* 450 */ 722, 723, 718, 727, 725, 728, 730, 731, 734, 732, /* 460 */ 735, 737, 739, 741, 742, 746, 744, 748, 751, 756, /* 470 */ 753, 758, 749, 754, 760, 761, 762, 763, 769, 389, /* 480 */ 770, 771, 688, 403, 410, 772, 774, 703, 773, 776, /* 490 */ 712, 424, 767, 431, 778, 720, 729, 738, 442, 743, /* 500 */ 777, 752, 757, 449, 779, 456, 782, 467, 476, 485, /* 510 */ 781, 787, 783, 786, 788, 790, 791, 792, 793, 795, /* 520 */ 797, 799, 800, 801, 805, 802, 809, 810, 812, 811, /* 530 */ 813, 818, }; #define YY_REDUCE_COUNT (157) #define YY_REDUCE_MIN (-57) #define YY_REDUCE_MAX (330) static const short yy_reduce_ofst[] = { /* 0 */ 34, -28, -57, -43, -39, -31, -27, 41, 21, -23, /* 10 */ 23, 25, 27, 28, 56, 48, 52, 65, 39, 35, /* 20 */ 46, 74, 49, 53, 80, 59, 84, 66, 87, 81, /* 30 */ 76, 77, 94, 82, 85, 103, 89, 109, 93, 114, /* 40 */ 106, 100, 104, 123, 107, 111, 130, 115, 134, 120, /* 50 */ 139, 141, 124, 136, 145, 140, 143, 146, 147, 155, /* 60 */ 149, 162, 165, 10, 158, 163, 167, 166, 168, 179, /* 70 */ 171, 183, 177, 188, 72, 180, 192, 193, 195, 197, /* 80 */ 199, 202, 205, 209, 211, 214, -17, 92, 97, 198, /* 90 */ 231, 240, 212, 213, 215, 216, 221, 222, 237, 247, /* 100 */ 258, 228, 229, 230, 232, 236, 239, 252, 256, 243, /* 110 */ 248, 261, 265, 250, 255, 277, 269, 263, 266, 282, /* 120 */ 273, 270, 281, 279, 274, 285, 292, 293, 294, 295, /* 130 */ 286, 283, 288, 287, 301, 305, 306, 308, 296, 298, /* 140 */ 300, 303, 309, 299, 311, 313, 314, 315, 316, 320, /* 150 */ 321, 319, 322, 325, 326, 327, 329, 330, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 995, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 10 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 20 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 30 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 40 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 50 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 60 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 70 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 80 */ 838, 838, 838, 838, 838, 838, 838, 984, 984, 838, /* 90 */ 838, 838, 984, 984, 984, 984, 977, 977, 838, 838, /* 100 */ 838, 977, 977, 977, 977, 838, 960, 838, 838, 960, /* 110 */ 957, 838, 838, 957, 942, 838, 838, 942, 939, 838, /* 120 */ 838, 939, 876, 874, 910, 876, 838, 838, 838, 838, /* 130 */ 838, 910, 907, 874, 838, 838, 838, 838, 838, 907, /* 140 */ 876, 838, 876, 838, 838, 838, 874, 838, 874, 838, /* 150 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 160 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 170 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 180 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 190 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 200 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 210 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 220 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 230 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 240 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 250 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 260 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 270 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 280 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 290 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 300 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 310 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 320 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 330 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 340 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 350 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 360 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 370 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 380 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 390 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 400 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 410 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 420 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 430 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 440 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 450 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 460 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 470 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 480 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 490 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 500 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 510 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 520 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 530 */ 838, 838, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. ** ................................................................................ ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. ** ** After the "shift" half of a SHIFTREDUCE action, the stateno field ** actually contains the reduce action for the second half of the ** SHIFTREDUCE. */ struct yyStackEntry { YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */ }; typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH int yyhwm; /* High-water mark of the stack */ #endif #ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; #ifndef NDEBUG #include <stdio.h> static FILE *yyTraceFILE = 0; ................................................................................ ** line of trace output. If NULL, then tracing is ** turned off. ** </ul> ** ** Outputs: ** None. */ void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if( yyTraceFILE==0 ) yyTracePrompt = 0; else if( yyTracePrompt==0 ) yyTraceFILE = 0; } #endif /* NDEBUG */ #if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { /* 0 */ "$", /* 1 */ "GEOJSON_NEWLINE", /* 2 */ "GEOJSON_OPEN_BRACE", /* 3 */ "GEOJSON_TYPE", /* 4 */ "GEOJSON_COLON", /* 5 */ "GEOJSON_POINT", /* 6 */ "GEOJSON_COMMA", /* 7 */ "GEOJSON_COORDS", /* 8 */ "GEOJSON_CLOSE_BRACE", /* 9 */ "GEOJSON_BBOX", /* 10 */ "GEOJSON_OPEN_BRACKET", /* 11 */ "GEOJSON_CLOSE_BRACKET", /* 12 */ "GEOJSON_CRS", /* 13 */ "GEOJSON_NAME", /* 14 */ "GEOJSON_PROPS", /* 15 */ "GEOJSON_NUM", /* 16 */ "GEOJSON_SHORT_SRID", /* 17 */ "GEOJSON_LONG_SRID", /* 18 */ "GEOJSON_LINESTRING", /* 19 */ "GEOJSON_POLYGON", /* 20 */ "GEOJSON_MULTIPOINT", /* 21 */ "GEOJSON_MULTILINESTRING", /* 22 */ "GEOJSON_MULTIPOLYGON", /* 23 */ "GEOJSON_GEOMETRYCOLLECTION", /* 24 */ "GEOJSON_GEOMS", /* 25 */ "error", /* 26 */ "main", /* 27 */ "in", /* 28 */ "state", /* 29 */ "program", /* 30 */ "geo_text", /* 31 */ "point", /* 32 */ "pointz", /* 33 */ "linestring", /* 34 */ "linestringz", /* 35 */ "polygon", /* 36 */ "polygonz", /* 37 */ "multipoint", /* 38 */ "multipointz", /* 39 */ "multilinestring", /* 40 */ "multilinestringz", /* 41 */ "multipolygon", /* 42 */ "multipolygonz", /* 43 */ "geocoll", /* 44 */ "geocollz", /* 45 */ "point_coordxy", /* 46 */ "bbox", /* 47 */ "short_crs", /* 48 */ "long_crs", /* 49 */ "point_coordxyz", /* 50 */ "coord", /* 51 */ "short_srid", /* 52 */ "long_srid", /* 53 */ "extra_pointsxy", /* 54 */ "extra_pointsxyz", /* 55 */ "linestring_text", /* 56 */ "linestring_textz", /* 57 */ "polygon_text", /* 58 */ "polygon_textz", /* 59 */ "ring", /* 60 */ "extra_rings", /* 61 */ "ringz", /* 62 */ "extra_ringsz", /* 63 */ "multipoint_text", /* 64 */ "multipoint_textz", /* 65 */ "multilinestring_text", /* 66 */ "multilinestring_textz", /* 67 */ "multilinestring_text2", /* 68 */ "multilinestring_textz2", /* 69 */ "multipolygon_text", /* 70 */ "multipolygon_textz", /* 71 */ "multipolygon_text2", /* 72 */ "multipolygon_textz2", /* 73 */ "geocoll_text", /* 74 */ "geocoll_textz", /* 75 */ "coll_point", /* 76 */ "geocoll_text2", /* 77 */ "coll_linestring", /* 78 */ "coll_polygon", /* 79 */ "coll_pointz", /* 80 */ "geocoll_textz2", /* 81 */ "coll_linestringz", /* 82 */ "coll_polygonz", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "geo_text ::= point", /* 1 */ "geo_text ::= pointz", /* 2 */ "geo_text ::= linestring", /* 3 */ "geo_text ::= linestringz", /* 4 */ "geo_text ::= polygon", /* 5 */ "geo_text ::= polygonz", /* 6 */ "geo_text ::= multipoint", /* 7 */ "geo_text ::= multipointz", /* 8 */ "geo_text ::= multilinestring", /* 9 */ "geo_text ::= multilinestringz", /* 10 */ "geo_text ::= multipolygon", /* 11 */ "geo_text ::= multipolygonz", /* 12 */ "geo_text ::= geocoll", /* 13 */ "geo_text ::= geocollz", /* 14 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 15 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 16 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 17 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 18 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 19 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 20 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 21 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 22 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 23 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 24 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 25 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 26 */ "short_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON short_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE", /* 27 */ "long_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON long_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE", /* 28 */ "point_coordxy ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET", /* 29 */ "point_coordxyz ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET", /* 30 */ "coord ::= GEOJSON_NUM", /* 31 */ "short_srid ::= GEOJSON_SHORT_SRID", /* 32 */ "long_srid ::= GEOJSON_LONG_SRID", /* 33 */ "extra_pointsxy ::=", /* 34 */ "extra_pointsxy ::= GEOJSON_COMMA point_coordxy extra_pointsxy", /* 35 */ "extra_pointsxyz ::=", /* 36 */ "extra_pointsxyz ::= GEOJSON_COMMA point_coordxyz extra_pointsxyz", /* 37 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 38 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 39 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 40 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 41 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 42 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 43 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 44 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 45 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 46 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 47 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 48 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 49 */ "linestring_text ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", /* 50 */ "linestring_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", /* 51 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 52 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 53 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 54 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 55 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 56 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 57 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 58 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 59 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 60 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 61 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 62 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 63 */ "polygon_text ::= GEOJSON_OPEN_BRACKET ring extra_rings GEOJSON_CLOSE_BRACKET", /* 64 */ "polygon_textz ::= GEOJSON_OPEN_BRACKET ringz extra_ringsz GEOJSON_CLOSE_BRACKET", /* 65 */ "ring ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", /* 66 */ "extra_rings ::=", /* 67 */ "extra_rings ::= GEOJSON_COMMA ring extra_rings", /* 68 */ "ringz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", /* 69 */ "extra_ringsz ::=", /* 70 */ "extra_ringsz ::= GEOJSON_COMMA ringz extra_ringsz", /* 71 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 72 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 73 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 74 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 75 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 76 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 77 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 78 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 79 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 80 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 81 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 82 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 83 */ "multipoint_text ::= GEOJSON_OPEN_BRACKET point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", /* 84 */ "multipoint_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", /* 85 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 86 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 87 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 88 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 89 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 90 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 91 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 92 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 93 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 94 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 95 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 96 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 97 */ "multilinestring_text ::= GEOJSON_OPEN_BRACKET linestring_text multilinestring_text2 GEOJSON_CLOSE_BRACKET", /* 98 */ "multilinestring_text2 ::=", /* 99 */ "multilinestring_text2 ::= GEOJSON_COMMA linestring_text multilinestring_text2", /* 100 */ "multilinestring_textz ::= GEOJSON_OPEN_BRACKET linestring_textz multilinestring_textz2 GEOJSON_CLOSE_BRACKET", /* 101 */ "multilinestring_textz2 ::=", /* 102 */ "multilinestring_textz2 ::= GEOJSON_COMMA linestring_textz multilinestring_textz2", /* 103 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 104 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 105 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 106 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 107 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 108 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 109 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 110 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 111 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 112 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 113 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 114 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 115 */ "multipolygon_text ::= GEOJSON_OPEN_BRACKET polygon_text multipolygon_text2 GEOJSON_CLOSE_BRACKET", /* 116 */ "multipolygon_text2 ::=", /* 117 */ "multipolygon_text2 ::= GEOJSON_COMMA polygon_text multipolygon_text2", /* 118 */ "multipolygon_textz ::= GEOJSON_OPEN_BRACKET polygon_textz multipolygon_textz2 GEOJSON_CLOSE_BRACKET", /* 119 */ "multipolygon_textz2 ::=", /* 120 */ "multipolygon_textz2 ::= GEOJSON_COMMA polygon_textz multipolygon_textz2", /* 121 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 122 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 123 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 124 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 125 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 126 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 127 */ "geocollz ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz", /* 128 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", /* 129 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", /* 130 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", /* 131 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", /* 132 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", /* 133 */ "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_point geocoll_text2 GEOJSON_CLOSE_BRACKET", /* 134 */ "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_linestring geocoll_text2 GEOJSON_CLOSE_BRACKET", /* 135 */ "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_polygon geocoll_text2 GEOJSON_CLOSE_BRACKET", /* 136 */ "geocoll_text2 ::=", /* 137 */ "geocoll_text2 ::= GEOJSON_COMMA coll_point geocoll_text2", /* 138 */ "geocoll_text2 ::= GEOJSON_COMMA coll_linestring geocoll_text2", /* 139 */ "geocoll_text2 ::= GEOJSON_COMMA coll_polygon geocoll_text2", /* 140 */ "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_pointz geocoll_textz2 GEOJSON_CLOSE_BRACKET", /* 141 */ "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_linestringz geocoll_textz2 GEOJSON_CLOSE_BRACKET", /* 142 */ "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_polygonz geocoll_textz2 GEOJSON_CLOSE_BRACKET", /* 143 */ "geocoll_textz2 ::=", /* 144 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_pointz geocoll_textz2", /* 145 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_linestringz geocoll_textz2", /* 146 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_polygonz geocoll_textz2", /* 147 */ "coll_point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 148 */ "coll_pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 149 */ "coll_linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 150 */ "coll_linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 151 */ "coll_polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 152 */ "coll_polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 153 */ "main ::= in", /* 154 */ "in ::=", /* 155 */ "in ::= in state GEOJSON_NEWLINE", /* 156 */ "state ::= program", /* 157 */ "program ::= geo_text", /* 158 */ "bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number ** of errors. Return 0 on success. */ static int yyGrowStack(yyParser *p){ int newSize; int idx; yyStackEntry *pNew; newSize = p->yystksz*2 + 100; idx = p->yytos ? (int)(p->yytos - p->yystack) : 0; if( p->yystack==&p->yystk0 ){ pNew = malloc(newSize*sizeof(pNew[0])); if( pNew ) pNew[0] = p->yystk0; }else{ pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); } if( pNew ){ p->yystack = pNew; p->yytos = &p->yystack[idx]; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n", yyTracePrompt, p->yystksz, newSize); } #endif p->yystksz = newSize; } return pNew==0; } #endif /* Datatype of the argument to the memory allocated passed as the ** second argument to ParseAlloc() below. This can be changed by ** putting an appropriate #define in the %include section of the input ** grammar. */ #ifndef YYMALLOCARGTYPE # define YYMALLOCARGTYPE size_t #endif /* Initialize a new parser that has already been allocated. */ static void ParseInit(void *yypParser){ yyParser *pParser = (yyParser*)yypParser; #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 pParser->yytos = NULL; pParser->yystack = NULL; pParser->yystksz = 0; if( yyGrowStack(pParser) ){ pParser->yystack = &pParser->yystk0; pParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY pParser->yyerrcnt = -1; #endif pParser->yytos = pParser->yystack; pParser->yystack[0].stateno = 0; pParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH-1]; #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like ................................................................................ ** Inputs: ** A pointer to the function used to allocate memory. ** ** Outputs: ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)){ yyParser *pParser; pParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) ); if( pParser ) ParseInit(pParser); return pParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ /* The following function deletes the "minor type" or semantic value ** associated with a symbol. The symbol can be either a terminal ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is ** a pointer to the value to be deleted. The code used to do the ** deletions is derived from the %destructor and/or %token_destructor ** directives of the input grammar. */ static void yy_destructor( yyParser *yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE *yypminor /* The object to be destroyed */ ){ ParseARG_FETCH; switch( yymajor ){ /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen ** when the symbol is popped from the stack during a ** reduce or during error processing or when a parser is ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ /********* Begin destructor definitions ***************************************/ /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } /* ** Pop the parser's stack once. ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. */ static void yy_pop_parser_stack(yyParser *pParser){ yyStackEntry *yytos; assert( pParser->yytos!=0 ); assert( pParser->yytos > pParser->yystack ); yytos = pParser->yytos--; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif yy_destructor(pParser, yytos->major, &yytos->minor); } /* ** Clear all secondary memory allocations from the parser */ static void ParseFinalize(void *p){ yyParser *pParser = (yyParser*)p; while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser); #if YYSTACKDEPTH<=0 if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack); #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** ** If the YYPARSEFREENEVERNULL macro exists (for example because it ** is defined in a %include section of the input grammar) then it is ** assumed that the input pointer is never NULL. */ void ParseFree( void *p, /* The parser to be deleted */ void (*freeProc)(void*) /* Function used to reclaim memory */ ){ #ifndef YYPARSEFREENEVERNULL if( p==0 ) return; #endif ParseFinalize(p); (*freeProc)(p); } #endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. */ #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak(void *p){ yyParser *pParser = (yyParser*)p; return pParser->yyhwm; } #endif /* This array of booleans keeps track of the parser statement ** coverage. The element yycoverage[X][Y] is set when the parser ** is in state X and has a lookahead token Y. In a well-tested ** systems, every element of this matrix should end up being set. ................................................................................ ** ** (1) has not been used by the parser, and ** (2) is not a syntax error. ** ** Return the number of missed state/lookahead combinations. */ #if defined(YYCOVERAGE) int ParseCoverage(FILE *out){ int stateno, iLookAhead, i; int nMissed = 0; for(stateno=0; stateno<YYNSTATE; stateno++){ i = yy_shift_ofst[stateno]; for(iLookAhead=0; iLookAhead<YYNTOKEN; iLookAhead++){ if( yy_lookahead[i+iLookAhead]!=iLookAhead ) continue; if( yycoverage[stateno][iLookAhead]==0 ) nMissed++; if( out ){ fprintf(out,"State %d lookahead %s %s\n", stateno, yyTokenName[iLookAhead], yycoverage[stateno][iLookAhead] ? "ok" : "missed"); } } } return nMissed; } #endif /* ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ static unsigned int yy_find_shift_action( yyParser *pParser, /* The parser */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; int stateno = pParser->yytos->stateno; if( stateno>YY_MAX_SHIFT ) return stateno; assert( stateno <= YY_SHIFT_COUNT ); #if defined(YYCOVERAGE) yycoverage[stateno][iLookAhead] = 1; #endif do{ i = yy_shift_ofst[stateno]; assert( i>=0 ); assert( i+YYNTOKEN<=(int)sizeof(yy_lookahead)/sizeof(yy_lookahead[0]) ); assert( iLookAhead!=YYNOCODE ); assert( iLookAhead < YYNTOKEN ); i += iLookAhead; if( yy_lookahead[i]!=iLookAhead ){ #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) && (iFallback = yyFallback[iLookAhead])!=0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); } #endif assert( yyFallback[iFallback]==0 ); /* Fallback loop must terminate */ iLookAhead = iFallback; continue; } #endif #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; if( #if YY_SHIFT_MIN+YYWILDCARD<0 j>=0 && #endif #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT j<YY_ACTTAB_COUNT && #endif yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ return yy_action[i]; } }while(1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ static int yy_find_reduce_action( int stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; #ifdef YYERRORSYMBOL if( stateno>YY_REDUCE_COUNT ){ return yy_default[stateno]; } #else assert( stateno<=YY_REDUCE_COUNT ); #endif i = yy_reduce_ofst[stateno]; assert( iLookAhead!=YYNOCODE ); i += iLookAhead; #ifdef YYERRORSYMBOL if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){ return yy_default[stateno]; } #else assert( i>=0 && i<YY_ACTTAB_COUNT ); assert( yy_lookahead[i]==iLookAhead ); #endif return yy_action[i]; } /* ** The following routine is called if the stack overflows. */ static void yyStackOverflow(yyParser *yypParser){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); } #endif while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ /******** Begin %stack_overflow code ******************************************/ spatialite_e( "Giving up. Parser stack overflow\n"); /******** End %stack_overflow code ********************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ } /* ** Print tracing information for a SHIFT action */ #ifndef NDEBUG static void yyTraceShift(yyParser *yypParser, int yyNewState, const char *zTag){ if( yyTraceFILE ){ if( yyNewState<YYNSTATE ){ fprintf(yyTraceFILE,"%s%s '%s', go to state %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState); }else{ fprintf(yyTraceFILE,"%s%s '%s', pending reduce %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState - YY_MIN_REDUCE); } } } #else # define yyTraceShift(X,Y,Z) #endif /* ** Perform a shift action. */ static void yy_shift( yyParser *yypParser, /* The parser to be shifted */ int yyNewState, /* The new state to shift in */ int yyMajor, /* The major token to shift in */ ParseTOKENTYPE yyMinor /* The minor token to shift in */ ){ yyStackEntry *yytos; yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) ); } #endif #if YYSTACKDEPTH>0 if( yypParser->yytos>yypParser->yystackEnd ){ yypParser->yytos--; yyStackOverflow(yypParser); return; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){ if( yyGrowStack(yypParser) ){ yypParser->yytos--; yyStackOverflow(yypParser); return; } } #endif if( yyNewState > YY_MAX_SHIFT ){ yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } yytos = yypParser->yytos; yytos->stateno = (YYACTIONTYPE)yyNewState; yytos->major = (YYCODETYPE)yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift(yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { { 30, -1 }, /* (0) geo_text ::= point */ { 30, -1 }, /* (1) geo_text ::= pointz */ { 30, -1 }, /* (2) geo_text ::= linestring */ { 30, -1 }, /* (3) geo_text ::= linestringz */ { 30, -1 }, /* (4) geo_text ::= polygon */ { 30, -1 }, /* (5) geo_text ::= polygonz */ { 30, -1 }, /* (6) geo_text ::= multipoint */ { 30, -1 }, /* (7) geo_text ::= multipointz */ { 30, -1 }, /* (8) geo_text ::= multilinestring */ { 30, -1 }, /* (9) geo_text ::= multilinestringz */ { 30, -1 }, /* (10) geo_text ::= multipolygon */ { 30, -1 }, /* (11) geo_text ::= multipolygonz */ { 30, -1 }, /* (12) geo_text ::= geocoll */ { 30, -1 }, /* (13) geo_text ::= geocollz */ { 31, -9 }, /* (14) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ { 31, -15 }, /* (15) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ { 31, -13 }, /* (16) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ { 31, -13 }, /* (17) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ { 31, -19 }, /* (18) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ { 31, -19 }, /* (19) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ { 32, -9 }, /* (20) pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ { 32, -15 }, /* (21) pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ { 32, -13 }, /* (22) pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ { 32, -13 }, /* (23) pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ { 31, -19 }, /* (24) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ { 31, -19 }, /* (25) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ { 47, -13 }, /* (26) short_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON short_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ { 48, -13 }, /* (27) long_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON long_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ { 45, -5 }, /* (28) point_coordxy ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ { 49, -7 }, /* (29) point_coordxyz ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ { 50, -1 }, /* (30) coord ::= GEOJSON_NUM */ { 51, -1 }, /* (31) short_srid ::= GEOJSON_SHORT_SRID */ { 52, -1 }, /* (32) long_srid ::= GEOJSON_LONG_SRID */ { 53, 0 }, /* (33) extra_pointsxy ::= */ { 53, -3 }, /* (34) extra_pointsxy ::= GEOJSON_COMMA point_coordxy extra_pointsxy */ { 54, 0 }, /* (35) extra_pointsxyz ::= */ { 54, -3 }, /* (36) extra_pointsxyz ::= GEOJSON_COMMA point_coordxyz extra_pointsxyz */ { 33, -9 }, /* (37) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ { 33, -15 }, /* (38) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ { 33, -13 }, /* (39) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ { 33, -13 }, /* (40) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ { 33, -19 }, /* (41) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ { 33, -19 }, /* (42) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ { 34, -9 }, /* (43) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ { 34, -15 }, /* (44) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ { 34, -13 }, /* (45) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ { 34, -13 }, /* (46) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ { 34, -19 }, /* (47) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ { 34, -19 }, /* (48) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ { 55, -6 }, /* (49) linestring_text ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ { 56, -6 }, /* (50) linestring_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ { 35, -9 }, /* (51) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ { 35, -15 }, /* (52) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ { 35, -13 }, /* (53) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ { 35, -13 }, /* (54) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ { 35, -19 }, /* (55) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ { 35, -19 }, /* (56) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ { 36, -9 }, /* (57) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ { 36, -15 }, /* (58) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ { 36, -13 }, /* (59) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ { 36, -13 }, /* (60) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ { 36, -19 }, /* (61) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ { 36, -19 }, /* (62) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ { 57, -4 }, /* (63) polygon_text ::= GEOJSON_OPEN_BRACKET ring extra_rings GEOJSON_CLOSE_BRACKET */ { 58, -4 }, /* (64) polygon_textz ::= GEOJSON_OPEN_BRACKET ringz extra_ringsz GEOJSON_CLOSE_BRACKET */ { 59, -10 }, /* (65) ring ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ { 60, 0 }, /* (66) extra_rings ::= */ { 60, -3 }, /* (67) extra_rings ::= GEOJSON_COMMA ring extra_rings */ { 61, -10 }, /* (68) ringz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ { 62, 0 }, /* (69) extra_ringsz ::= */ { 62, -3 }, /* (70) extra_ringsz ::= GEOJSON_COMMA ringz extra_ringsz */ { 37, -9 }, /* (71) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ { 37, -15 }, /* (72) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ { 37, -13 }, /* (73) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ { 37, -13 }, /* (74) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ { 37, -19 }, /* (75) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ { 37, -19 }, /* (76) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ { 38, -9 }, /* (77) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ { 38, -15 }, /* (78) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ { 38, -13 }, /* (79) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ { 38, -13 }, /* (80) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ { 38, -19 }, /* (81) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ { 38, -19 }, /* (82) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ { 63, -4 }, /* (83) multipoint_text ::= GEOJSON_OPEN_BRACKET point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ { 64, -4 }, /* (84) multipoint_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ { 39, -9 }, /* (85) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ { 39, -15 }, /* (86) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ { 39, -13 }, /* (87) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ { 39, -13 }, /* (88) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ { 39, -19 }, /* (89) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ { 39, -19 }, /* (90) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ { 40, -9 }, /* (91) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ { 40, -15 }, /* (92) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ { 40, -13 }, /* (93) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ { 40, -13 }, /* (94) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ { 40, -19 }, /* (95) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ { 40, -19 }, /* (96) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ { 65, -4 }, /* (97) multilinestring_text ::= GEOJSON_OPEN_BRACKET linestring_text multilinestring_text2 GEOJSON_CLOSE_BRACKET */ { 67, 0 }, /* (98) multilinestring_text2 ::= */ { 67, -3 }, /* (99) multilinestring_text2 ::= GEOJSON_COMMA linestring_text multilinestring_text2 */ { 66, -4 }, /* (100) multilinestring_textz ::= GEOJSON_OPEN_BRACKET linestring_textz multilinestring_textz2 GEOJSON_CLOSE_BRACKET */ { 68, 0 }, /* (101) multilinestring_textz2 ::= */ { 68, -3 }, /* (102) multilinestring_textz2 ::= GEOJSON_COMMA linestring_textz multilinestring_textz2 */ { 41, -9 }, /* (103) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ { 41, -15 }, /* (104) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ { 41, -13 }, /* (105) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ { 41, -13 }, /* (106) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ { 41, -19 }, /* (107) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ { 41, -19 }, /* (108) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ { 42, -9 }, /* (109) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ { 42, -15 }, /* (110) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ { 42, -13 }, /* (111) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ { 42, -13 }, /* (112) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ { 42, -19 }, /* (113) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ { 42, -19 }, /* (114) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ { 69, -4 }, /* (115) multipolygon_text ::= GEOJSON_OPEN_BRACKET polygon_text multipolygon_text2 GEOJSON_CLOSE_BRACKET */ { 71, 0 }, /* (116) multipolygon_text2 ::= */ { 71, -3 }, /* (117) multipolygon_text2 ::= GEOJSON_COMMA polygon_text multipolygon_text2 */ { 70, -4 }, /* (118) multipolygon_textz ::= GEOJSON_OPEN_BRACKET polygon_textz multipolygon_textz2 GEOJSON_CLOSE_BRACKET */ { 72, 0 }, /* (119) multipolygon_textz2 ::= */ { 72, -3 }, /* (120) multipolygon_textz2 ::= GEOJSON_COMMA polygon_textz multipolygon_textz2 */ { 43, -9 }, /* (121) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ { 43, -15 }, /* (122) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ { 43, -13 }, /* (123) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ { 43, -13 }, /* (124) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ { 43, -19 }, /* (125) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ { 43, -19 }, /* (126) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ { 44, -2 }, /* (127) geocollz ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz */ { 44, -15 }, /* (128) geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ { 44, -13 }, /* (129) geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ { 44, -13 }, /* (130) geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ { 44, -19 }, /* (131) geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ { 44, -19 }, /* (132) geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ { 73, -4 }, /* (133) geocoll_text ::= GEOJSON_OPEN_BRACKET coll_point geocoll_text2 GEOJSON_CLOSE_BRACKET */ { 73, -4 }, /* (134) geocoll_text ::= GEOJSON_OPEN_BRACKET coll_linestring geocoll_text2 GEOJSON_CLOSE_BRACKET */ { 73, -4 }, /* (135) geocoll_text ::= GEOJSON_OPEN_BRACKET coll_polygon geocoll_text2 GEOJSON_CLOSE_BRACKET */ { 76, 0 }, /* (136) geocoll_text2 ::= */ { 76, -3 }, /* (137) geocoll_text2 ::= GEOJSON_COMMA coll_point geocoll_text2 */ { 76, -3 }, /* (138) geocoll_text2 ::= GEOJSON_COMMA coll_linestring geocoll_text2 */ { 76, -3 }, /* (139) geocoll_text2 ::= GEOJSON_COMMA coll_polygon geocoll_text2 */ { 74, -4 }, /* (140) geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_pointz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ { 74, -4 }, /* (141) geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_linestringz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ { 74, -4 }, /* (142) geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_polygonz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ { 80, 0 }, /* (143) geocoll_textz2 ::= */ { 80, -3 }, /* (144) geocoll_textz2 ::= GEOJSON_COMMA coll_pointz geocoll_textz2 */ { 80, -3 }, /* (145) geocoll_textz2 ::= GEOJSON_COMMA coll_linestringz geocoll_textz2 */ { 80, -3 }, /* (146) geocoll_textz2 ::= GEOJSON_COMMA coll_polygonz geocoll_textz2 */ { 75, -9 }, /* (147) coll_point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ { 79, -9 }, /* (148) coll_pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ { 77, -9 }, /* (149) coll_linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ { 81, -9 }, /* (150) coll_linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ { 78, -9 }, /* (151) coll_polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ { 82, -9 }, /* (152) coll_polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ { 26, -1 }, /* (153) main ::= in */ { 27, 0 }, /* (154) in ::= */ { 27, -3 }, /* (155) in ::= in state GEOJSON_NEWLINE */ { 28, -1 }, /* (156) state ::= program */ { 29, -1 }, /* (157) program ::= geo_text */ { 46, -7 }, /* (158) bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord */ }; static void yy_accept(yyParser*); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. ** ** The yyLookahead and yyLookaheadToken parameters provide reduce actions ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE ** if the lookahead token has already been consumed. As this procedure is ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ static void yy_reduce( yyParser *yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ ){ int yygoto; /* The next state */ int yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ ParseARG_FETCH; (void)yyLookahead; (void)yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ yysize = yyRuleInfo[yyruleno].nrhs; if( yysize ){ fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); }else{ fprintf(yyTraceFILE, "%sReduce %d [%s].\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno]); } } #endif /* NDEBUG */ /* Check that the stack is large enough to grow by a single entry ** if the RHS of the rule is empty. This ensures that there is room ** enough on the stack to push the LHS value */ if( yyRuleInfo[yyruleno].nrhs==0 ){ #ifdef YYTRACKMAXSTACKDEPTH if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if( yypParser->yytos>=yypParser->yystackEnd ){ yyStackOverflow(yypParser); return; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ if( yyGrowStack(yypParser) ){ yyStackOverflow(yypParser); return; } yymsp = yypParser->yytos; } #endif } switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* geo_text ::= point */ case 1: /* geo_text ::= pointz */ yytestcase(yyruleno==1); case 2: /* geo_text ::= linestring */ yytestcase(yyruleno==2); case 3: /* geo_text ::= linestringz */ yytestcase(yyruleno==3); case 4: /* geo_text ::= polygon */ yytestcase(yyruleno==4); case 5: /* geo_text ::= polygonz */ yytestcase(yyruleno==5); case 6: /* geo_text ::= multipoint */ yytestcase(yyruleno==6); case 7: /* geo_text ::= multipointz */ yytestcase(yyruleno==7); case 8: /* geo_text ::= multilinestring */ yytestcase(yyruleno==8); case 9: /* geo_text ::= multilinestringz */ yytestcase(yyruleno==9); case 10: /* geo_text ::= multipolygon */ yytestcase(yyruleno==10); case 11: /* geo_text ::= multipolygonz */ yytestcase(yyruleno==11); case 12: /* geo_text ::= geocoll */ yytestcase(yyruleno==12); case 13: /* geo_text ::= geocollz */ yytestcase(yyruleno==13); { p_data->result = yymsp[0].minor.yy0; } break; case 14: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ case 20: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==20); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } break; case 15: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ case 21: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==21); { yymsp[-14].minor.yy0 = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } break; case 16: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ case 17: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==17); case 22: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==22); case 23: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==23); { yymsp[-12].minor.yy0 = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0, (int *)yymsp[-5].minor.yy0); } break; case 18: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ case 19: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==19); case 24: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==24); case 25: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==25); { yymsp[-18].minor.yy0 = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0, (int *)yymsp[-11].minor.yy0); } break; case 26: /* short_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON short_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ case 27: /* long_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON long_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==27); { yymsp[-12].minor.yy0 = yymsp[-2].minor.yy0; } break; case 28: /* point_coordxy ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ { yymsp[-4].minor.yy0 = (void *) geoJSON_point_xy( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-1].minor.yy0); } break; case 29: /* point_coordxyz ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ { yymsp[-6].minor.yy0 = (void *) geoJSON_point_xyz( p_data, (double *)yymsp[-5].minor.yy0, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-1].minor.yy0); } break; case 30: /* coord ::= GEOJSON_NUM */ case 31: /* short_srid ::= GEOJSON_SHORT_SRID */ yytestcase(yyruleno==31); case 32: /* long_srid ::= GEOJSON_LONG_SRID */ yytestcase(yyruleno==32); { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 33: /* extra_pointsxy ::= */ case 35: /* extra_pointsxyz ::= */ yytestcase(yyruleno==35); case 66: /* extra_rings ::= */ yytestcase(yyruleno==66); case 69: /* extra_ringsz ::= */ yytestcase(yyruleno==69); case 98: /* multilinestring_text2 ::= */ yytestcase(yyruleno==98); case 101: /* multilinestring_textz2 ::= */ yytestcase(yyruleno==101); case 116: /* multipolygon_text2 ::= */ yytestcase(yyruleno==116); case 119: /* multipolygon_textz2 ::= */ yytestcase(yyruleno==119); case 136: /* geocoll_text2 ::= */ yytestcase(yyruleno==136); case 143: /* geocoll_textz2 ::= */ yytestcase(yyruleno==143); { yymsp[1].minor.yy0 = NULL; } break; case 34: /* extra_pointsxy ::= GEOJSON_COMMA point_coordxy extra_pointsxy */ case 36: /* extra_pointsxyz ::= GEOJSON_COMMA point_coordxyz extra_pointsxyz */ yytestcase(yyruleno==36); { ((gaiaPointPtr)yymsp[-1].minor.yy0)->Next = (gaiaPointPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 37: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ case 43: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==43); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)yymsp[-1].minor.yy0); } break; case 38: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ case 44: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==44); { yymsp[-14].minor.yy0 = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)yymsp[-1].minor.yy0); } break; case 39: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ case 40: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==40); case 45: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==45); case 46: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==46); { yymsp[-12].minor.yy0 = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)yymsp[-1].minor.yy0, (int *)yymsp[-5].minor.yy0); } break; case 41: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ case 42: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==42); case 47: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==47); case 48: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==48); { yymsp[-18].minor.yy0 = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)yymsp[-1].minor.yy0, (int *)yymsp[-11].minor.yy0); } break; case 49: /* linestring_text ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) geoJSON_linestring_xy( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); } break; case 50: /* linestring_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) geoJSON_linestring_xyz( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); } break; case 51: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ case 57: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==57); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)yymsp[-1].minor.yy0); } break; case 52: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ case 58: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==58); { yymsp[-14].minor.yy0 = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)yymsp[-1].minor.yy0); } break; case 53: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ case 54: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==54); case 59: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==59); case 60: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==60); { yymsp[-12].minor.yy0 = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)yymsp[-1].minor.yy0, (int *)yymsp[-5].minor.yy0); } break; case 55: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ case 56: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==56); case 61: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==61); case 62: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==62); { yymsp[-18].minor.yy0 = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)yymsp[-1].minor.yy0, (int *)yymsp[-11].minor.yy0); } break; case 63: /* polygon_text ::= GEOJSON_OPEN_BRACKET ring extra_rings GEOJSON_CLOSE_BRACKET */ { ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_polygon_xy(p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); } break; case 64: /* polygon_textz ::= GEOJSON_OPEN_BRACKET ringz extra_ringsz GEOJSON_CLOSE_BRACKET */ { ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_polygon_xyz(p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); } break; case 65: /* ring ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) geoJSON_ring_xy(p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); } break; case 67: /* extra_rings ::= GEOJSON_COMMA ring extra_rings */ case 70: /* extra_ringsz ::= GEOJSON_COMMA ringz extra_ringsz */ yytestcase(yyruleno==70); { ((gaiaRingPtr)yymsp[-1].minor.yy0)->Next = (gaiaRingPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 68: /* ringz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) geoJSON_ring_xyz(p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); } break; case 71: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ case 77: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==77); case 85: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==85); case 91: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==91); case 103: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==103); case 109: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==109); case 121: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==121); { yymsp[-8].minor.yy0 = yymsp[-1].minor.yy0; } break; case 72: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ case 78: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==78); case 86: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==86); case 92: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==92); case 104: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==104); case 110: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==110); case 122: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==122); case 128: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==128); { yymsp[-14].minor.yy0 = yymsp[-1].minor.yy0; } break; case 73: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ case 74: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==74); case 79: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==79); case 80: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==80); case 87: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==87); case 88: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==88); case 93: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==93); case 94: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==94); case 105: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==105); case 106: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==106); case 111: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==111); case 112: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==112); case 123: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==123); case 124: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==124); case 129: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==129); case 130: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==130); { yymsp[-12].minor.yy0 = (void *) geoJSON_setSrid((gaiaGeomCollPtr)yymsp[-1].minor.yy0, (int *)yymsp[-5].minor.yy0); } break; case 75: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ case 76: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==76); case 81: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==81); case 82: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==82); case 89: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==89); case 90: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==90); case 95: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==95); case 96: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==96); case 107: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==107); case 108: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==108); case 113: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==113); case 114: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==114); case 125: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==125); case 126: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==126); case 131: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==131); case 132: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==132); { yymsp[-18].minor.yy0 = (void *) geoJSON_setSrid((gaiaGeomCollPtr)yymsp[-1].minor.yy0, (int *)yymsp[-11].minor.yy0); } break; case 83: /* multipoint_text ::= GEOJSON_OPEN_BRACKET point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multipoint_xy(p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); } break; case 84: /* multipoint_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multipoint_xyz(p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); } break; case 97: /* multilinestring_text ::= GEOJSON_OPEN_BRACKET linestring_text multilinestring_text2 GEOJSON_CLOSE_BRACKET */ { ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multilinestring_xy( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); } break; case 99: /* multilinestring_text2 ::= GEOJSON_COMMA linestring_text multilinestring_text2 */ case 102: /* multilinestring_textz2 ::= GEOJSON_COMMA linestring_textz multilinestring_textz2 */ yytestcase(yyruleno==102); { ((gaiaLinestringPtr)yymsp[-1].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 100: /* multilinestring_textz ::= GEOJSON_OPEN_BRACKET linestring_textz multilinestring_textz2 GEOJSON_CLOSE_BRACKET */ { ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multilinestring_xyz(p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); } break; case 115: /* multipolygon_text ::= GEOJSON_OPEN_BRACKET polygon_text multipolygon_text2 GEOJSON_CLOSE_BRACKET */ { ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multipolygon_xy(p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); } break; case 117: /* multipolygon_text2 ::= GEOJSON_COMMA polygon_text multipolygon_text2 */ case 120: /* multipolygon_textz2 ::= GEOJSON_COMMA polygon_textz multipolygon_textz2 */ yytestcase(yyruleno==120); { ((gaiaPolygonPtr)yymsp[-1].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 118: /* multipolygon_textz ::= GEOJSON_OPEN_BRACKET polygon_textz multipolygon_textz2 GEOJSON_CLOSE_BRACKET */ { ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multipolygon_xyz(p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); } break; case 127: /* geocollz ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz */ { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 133: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_point geocoll_text2 GEOJSON_CLOSE_BRACKET */ case 134: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_linestring geocoll_text2 GEOJSON_CLOSE_BRACKET */ yytestcase(yyruleno==134); case 135: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_polygon geocoll_text2 GEOJSON_CLOSE_BRACKET */ yytestcase(yyruleno==135); { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_geomColl_xy(p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 137: /* geocoll_text2 ::= GEOJSON_COMMA coll_point geocoll_text2 */ case 138: /* geocoll_text2 ::= GEOJSON_COMMA coll_linestring geocoll_text2 */ yytestcase(yyruleno==138); case 139: /* geocoll_text2 ::= GEOJSON_COMMA coll_polygon geocoll_text2 */ yytestcase(yyruleno==139); case 144: /* geocoll_textz2 ::= GEOJSON_COMMA coll_pointz geocoll_textz2 */ yytestcase(yyruleno==144); case 145: /* geocoll_textz2 ::= GEOJSON_COMMA coll_linestringz geocoll_textz2 */ yytestcase(yyruleno==145); case 146: /* geocoll_textz2 ::= GEOJSON_COMMA coll_polygonz geocoll_textz2 */ yytestcase(yyruleno==146); { ((gaiaGeomCollPtr)yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 140: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_pointz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ case 141: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_linestringz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ yytestcase(yyruleno==141); case 142: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_polygonz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ yytestcase(yyruleno==142); { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_geomColl_xyz(p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 147: /* coll_point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ case 148: /* coll_pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==148); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromPoint(p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } break; case 149: /* coll_linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ case 150: /* coll_linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==150); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromLinestring(p_data, (gaiaLinestringPtr)yymsp[-1].minor.yy0); } break; case 151: /* coll_polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ case 152: /* coll_polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==152); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromPolygon(p_data, (gaiaPolygonPtr)yymsp[-1].minor.yy0); } break; default: /* (153) main ::= in */ yytestcase(yyruleno==153); /* (154) in ::= */ yytestcase(yyruleno==154); /* (155) in ::= in state GEOJSON_NEWLINE */ yytestcase(yyruleno==155); /* (156) state ::= program (OPTIMIZED OUT) */ assert(yyruleno!=156); /* (157) program ::= geo_text (OPTIMIZED OUT) */ assert(yyruleno!=157); /* (158) bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord */ yytestcase(yyruleno==158); break; /********** End reduce actions ************************************************/ }; assert( yyruleno<sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0]) ); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto); /* There are no SHIFTREDUCE actions on nonterminals because the table ** generator has simplified them to pure REDUCE actions. */ assert( !(yyact>YY_MAX_SHIFT && yyact<=YY_MAX_SHIFTREDUCE) ); /* It is not possible for a REDUCE to be followed by an error */ assert( yyact!=YY_ERROR_ACTION ); yymsp += yysize+1; yypParser->yytos = yymsp; yymsp->stateno = (YYACTIONTYPE)yyact; yymsp->major = (YYCODETYPE)yygoto; yyTraceShift(yypParser, yyact, "... then shift"); } /* ** The following code executes when the parse fails */ #ifndef YYNOERRORRECOVERY static void yy_parse_failed( yyParser *yypParser /* The parser */ ){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); } #endif while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } #endif /* YYNOERRORRECOVERY */ /* ** The following code executes when a syntax error first occurs. */ static void yy_syntax_error( yyParser *yypParser, /* The parser */ int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ){ ParseARG_FETCH; #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ /* ** when the LEMON parser encounters an error ** then this global variable is set */ p_data->geoJson_parse_error = 1; p_data->result = NULL; /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* ** The following is executed when the parser accepts */ static void yy_accept( yyParser *yypParser /* The parser */ ){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); } #endif #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif assert( yypParser->yytos==yypParser->yystack ); /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ /*********** End %parse_accept code *******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* The main parser program. ** The first argument is a pointer to a structure obtained from ** "ParseAlloc" which describes the current state of the parser. ** The second argument is the major token number. The third is ** the minor token. The fourth optional argument is whatever the ................................................................................ ** <li> The minor token number. ** <li> An option argument of a grammar-specified type. ** </ul> ** ** Outputs: ** None. */ void Parse( void *yyp, /* The parser */ int yymajor, /* The major token code number */ ParseTOKENTYPE yyminor /* The value for the token */ ParseARG_PDECL /* Optional %extra_argument parameter */ ){ YYMINORTYPE yyminorunion; unsigned int yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif yyParser *yypParser; /* The parser */ yypParser = (yyParser*)yyp; assert( yypParser->yytos!=0 ); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor==0); #endif ParseARG_STORE; #ifndef NDEBUG if( yyTraceFILE ){ int stateno = yypParser->yytos->stateno; if( stateno < YY_MIN_REDUCE ){ fprintf(yyTraceFILE,"%sInput '%s' in state %d\n", yyTracePrompt,yyTokenName[yymajor],stateno); }else{ fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n", yyTracePrompt,yyTokenName[yymajor],stateno-YY_MIN_REDUCE); } } #endif do{ yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); if( yyact >= YY_MIN_REDUCE ){ yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor,yyminor); }else if( yyact <= YY_MAX_SHIFTREDUCE ){ yy_shift(yypParser,yyact,yymajor,yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif yymajor = YYNOCODE; }else if( yyact==YY_ACCEPT_ACTION ){ yypParser->yytos--; yy_accept(yypParser); return; }else{ assert( yyact == YY_ERROR_ACTION ); yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); } #endif #ifdef YYERRORSYMBOL /* A syntax error has occurred. ** The response to an error depends upon whether or not the ** grammar defines an error token "ERROR". ** ** This is what we do if the grammar does define ERROR: ** ** * Call the %syntax_error function. ** ** * Begin popping the stack until we enter a state where ** it is legal to shift the error symbol, then shift ** the error symbol. ** ** * Set the error count to three. ** ** * Begin accepting and shifting new tokens. No new error ** processing will occur until three tokens have been ** shifted successfully. ** */ if( yypParser->yyerrcnt<0 ){ yy_syntax_error(yypParser,yymajor,yyminor); } yymx = yypParser->yytos->major; if( yymx==YYERRORSYMBOL || yyerrorhit ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sDiscard input token %s\n", yyTracePrompt,yyTokenName[yymajor]); } #endif yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion); yymajor = YYNOCODE; }else{ while( yypParser->yytos >= yypParser->yystack && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action( yypParser->yytos->stateno, YYERRORSYMBOL)) >= YY_MIN_REDUCE ){ yy_pop_parser_stack(yypParser); } if( yypParser->yytos < yypParser->yystack || yymajor==0 ){ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif yymajor = YYNOCODE; }else if( yymx!=YYERRORSYMBOL ){ yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax ** error routine and continue going as if nothing had happened. ** ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ yy_syntax_error(yypParser,yymajor, yyminor); yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yymajor = YYNOCODE; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** ** * Report an error message, and throw away the input token. ** ** * If the input token is $, then fail the parse. ** ** As before, subsequent error messages are suppressed until ** three input tokens have been successfully shifted. */ if( yypParser->yyerrcnt<=0 ){ yy_syntax_error(yypParser,yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); if( yyendofinput ){ yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif } yymajor = YYNOCODE; #endif } }while( yymajor!=YYNOCODE && yypParser->yytos>yypParser->yystack ); #ifndef NDEBUG if( yyTraceFILE ){ yyStackEntry *i; char cDiv = '['; fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt); for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){ fprintf(yyTraceFILE,"%c%s", cDiv, yyTokenName[i->major]); cDiv = ' '; } fprintf(yyTraceFILE,"]\n"); } #endif return; } |
| | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > | > < < < | | | | | | | | | | | | | > > > > < < < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > | > | > | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | > | > | | | | | | > | | | | | | | | > | > | < > | > | | | | | < > > | | > | | | | | | | | | | > | | > | > | | | | | > | < | | | | > > | > | > | | | | < > > > | | | > | > | | > | > | | | > | | < > > > | < > > > | | | > | | | | | | | < > > | | | > | | | | > | | < < > > > | | | > | < > | > | > | | > | | | | | | | | | | | < > | > | | | | | | | | > | > | | > | | | | < > > | | > | | | | < > | | > | | | | | | > > | | > | | < > > | | | | > | > | > | > | > | < > | > | > | | | | | | | | | | < > > | | | > | > | | | < > > | | | | | > | > | | | | | | > | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | < > > | | < > > | < > > | | | | | | | < > > | | | | | | < > > | | < > > | | < > | | | | | | | | < > > | | | | | | | | | | > | | > | | > | > | | > | | | > | | < > > > | < > > | | > | > | | | > | > | | | | < > > | | | | | | | | | | | | | | | | | | | | | < > > | | | > | > | | | | > | > | > | | > | | | < > > | | | > > | | | | > | < > > | | | | | | | | | | | < < > > | | | | | | | | | | | | | < > > | | < > | > | | | | | > | | > | | < > | > | | | | | | |
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 ... 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 ... 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 ... 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 ... 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 .... 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 .... 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 .... 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 |
** YY_ERROR_ACTION The yy_action[] code for syntax error ** YY_ACCEPT_ACTION The yy_action[] code for accept ** YY_NO_ACTION The yy_action[] code for no-op ** YY_MIN_REDUCE Minimum value for reduce actions ** YY_MAX_REDUCE Maximum value for reduce actions */ #ifndef INTERFACE #define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char #define YYNOCODE 84 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE void * typedef union { int yyinit; ParseTOKENTYPE yy0; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 1000000 #endif #define ParseARG_SDECL struct geoJson_data *p_data ; #define ParseARG_PDECL , struct geoJson_data *p_data #define ParseARG_FETCH struct geoJson_data *p_data = yypParser->p_data #define ParseARG_STORE yypParser->p_data = p_data #define YYNSTATE 532 #define YYNRULE 159 #define YYNTOKEN 25 #define YY_MAX_SHIFT 531 #define YY_MIN_SHIFTREDUCE 679 #define YY_MAX_SHIFTREDUCE 837 #define YY_ERROR_ACTION 838 ................................................................................ ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production ** code the yytestcase() macro should be turned off. But it is useful ** for testing. */ #ifndef yytestcase #define yytestcase(X) #endif /* Next are the tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement ** functions that take a state number and lookahead value and return an ** action integer. ................................................................................ ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (820) static const YYACTIONTYPE yy_action[] = { /* 0 */ 531, 531, 531, 841, 842, 843, 844, 845, 846, 847, /* 10 */ 848, 849, 850, 851, 852, 853, 854, 528, 104, 219, /* 20 */ 97, 96, 95, 189, 88, 87, 994, 514, 530, 2, /* 30 */ 473, 428, 381, 342, 303, 264, 95, 709, 88, 87, /* 40 */ 94, 217, 93, 92, 103, 233, 102, 101, 104, 86, /* 50 */ 97, 96, 258, 244, 214, 211, 208, 968, 229, 225, /* 60 */ 839, 1, 302, 235, 297, 254, 250, 289, 263, 139, /* 70 */ 341, 131, 336, 201, 380, 328, 375, 514, 427, 367, /* 80 */ 414, 242, 472, 406, 461, 514, 527, 453, 522, 710, /* 90 */ 711, 511, 477, 475, 185, 184, 193, 192, 197, 196, /* 100 */ 260, 205, 204, 207, 195, 247, 222, 251, 226, 275, /* 110 */ 255, 272, 238, 237, 230, 266, 265, 469, 274, 273, /* 120 */ 270, 465, 278, 277, 514, 287, 282, 284, 286, 285, /* 130 */ 514, 288, 276, 295, 486, 291, 290, 514, 113, 109, /* 140 */ 309, 63, 305, 304, 514, 301, 300, 313, 312, 321, /* 150 */ 317, 316, 74, 514, 325, 324, 327, 315, 330, 329, /* 160 */ 334, 121, 117, 157, 514, 340, 339, 344, 343, 348, /* 170 */ 352, 351, 220, 514, 356, 355, 360, 221, 364, 363, /* 180 */ 514, 366, 354, 369, 368, 373, 123, 379, 378, 514, /* 190 */ 122, 387, 399, 383, 382, 514, 514, 391, 390, 29, /* 200 */ 395, 394, 405, 393, 403, 402, 408, 407, 412, 4, /* 210 */ 423, 40, 514, 434, 418, 426, 425, 514, 430, 429, /* 220 */ 107, 438, 437, 442, 441, 446, 450, 449, 51, 514, /* 230 */ 452, 440, 455, 454, 459, 471, 470, 488, 514, 492, /* 240 */ 496, 487, 500, 514, 495, 504, 499, 508, 62, 514, /* 250 */ 191, 507, 510, 498, 516, 203, 222, 520, 515, 526, /* 260 */ 314, 514, 311, 525, 3, 194, 326, 353, 323, 350, /* 270 */ 206, 365, 115, 362, 392, 404, 389, 401, 439, 451, /* 280 */ 436, 448, 497, 509, 494, 506, 155, 226, 144, 230, /* 290 */ 5, 707, 987, 986, 247, 985, 236, 245, 246, 111, /* 300 */ 119, 150, 251, 255, 980, 979, 978, 6, 261, 262, /* 310 */ 108, 961, 129, 131, 106, 298, 112, 137, 116, 958, /* 320 */ 139, 299, 110, 943, 120, 114, 465, 469, 118, 141, /* 330 */ 147, 337, 377, 940, 130, 376, 911, 338, 138, 415, /* 340 */ 420, 125, 416, 417, 418, 419, 133, 124, 908, 463, /* 350 */ 421, 422, 140, 423, 877, 132, 811, 805, 424, 8, /* 360 */ 146, 464, 142, 462, 148, 186, 187, 875, 188, 466, /* 370 */ 467, 468, 999, 9, 190, 512, 513, 523, 169, 183, /* 380 */ 524, 809, 803, 810, 10, 804, 11, 199, 198, 200, /* 390 */ 202, 170, 808, 12, 13, 802, 14, 15, 209, 16, /* 400 */ 210, 17, 478, 212, 213, 218, 215, 216, 159, 482, /* 410 */ 840, 821, 89, 224, 831, 840, 820, 829, 90, 223, /* 420 */ 227, 228, 91, 483, 160, 827, 231, 232, 234, 840, /* 430 */ 490, 807, 18, 819, 801, 240, 840, 243, 840, 840, /* 440 */ 840, 77, 98, 241, 19, 840, 814, 813, 181, 99, /* 450 */ 248, 239, 830, 249, 840, 502, 828, 252, 253, 826, /* 460 */ 256, 100, 800, 161, 257, 259, 80, 105, 840, 793, /* 470 */ 162, 812, 20, 787, 840, 701, 21, 267, 268, 171, /* 480 */ 280, 271, 269, 840, 695, 283, 791, 785, 792, 81, /* 490 */ 786, 22, 23, 292, 281, 840, 279, 25, 296, 840, /* 500 */ 790, 24, 840, 784, 172, 26, 840, 788, 294, 27, /* 510 */ 789, 840, 783, 840, 163, 840, 293, 797, 840, 28, /* 520 */ 840, 782, 794, 775, 30, 769, 31, 840, 840, 308, /* 530 */ 306, 307, 173, 319, 32, 310, 840, 840, 773, 33, /* 540 */ 767, 774, 840, 34, 768, 320, 322, 318, 840, 840, /* 550 */ 36, 35, 772, 766, 174, 37, 840, 39, 38, 840, /* 560 */ 771, 765, 331, 840, 840, 332, 335, 333, 840, 779, /* 570 */ 840, 770, 776, 164, 764, 345, 41, 840, 761, 42, /* 580 */ 346, 755, 840, 840, 349, 759, 840, 347, 357, 43, /* 590 */ 753, 175, 44, 840, 760, 45, 840, 840, 754, 358, /* 600 */ 359, 176, 46, 361, 758, 47, 48, 840, 752, 49, /* 610 */ 840, 757, 751, 370, 840, 371, 374, 840, 372, 840, /* 620 */ 50, 52, 165, 840, 763, 762, 840, 756, 840, 750, /* 630 */ 741, 735, 53, 384, 840, 54, 385, 388, 55, 840, /* 640 */ 739, 840, 386, 177, 733, 56, 740, 734, 840, 840, /* 650 */ 396, 397, 400, 178, 840, 398, 57, 58, 59, 738, /* 660 */ 732, 840, 60, 840, 737, 731, 409, 410, 840, 413, /* 670 */ 840, 411, 840, 61, 126, 736, 127, 747, 128, 840, /* 680 */ 64, 840, 840, 134, 135, 743, 744, 730, 840, 727, /* 690 */ 136, 840, 166, 840, 65, 721, 742, 840, 431, 432, /* 700 */ 435, 840, 481, 67, 840, 840, 433, 66, 725, 719, /* 710 */ 179, 704, 840, 68, 840, 726, 720, 443, 840, 489, /* 720 */ 444, 447, 445, 840, 180, 840, 69, 70, 702, 724, /* 730 */ 718, 71, 840, 723, 72, 840, 717, 696, 456, 840, /* 740 */ 457, 460, 78, 458, 840, 73, 840, 155, 143, 840, /* 750 */ 729, 703, 145, 75, 840, 728, 79, 149, 840, 707, /* 760 */ 167, 722, 151, 840, 501, 840, 716, 840, 706, 474, /* 770 */ 705, 476, 479, 7, 840, 480, 484, 485, 491, 840, /* 780 */ 76, 698, 493, 840, 840, 697, 505, 182, 840, 152, /* 790 */ 503, 82, 153, 840, 154, 840, 83, 840, 700, 694, /* 800 */ 517, 518, 840, 840, 521, 840, 840, 840, 519, 84, /* 810 */ 699, 156, 708, 840, 85, 158, 529, 693, 168, 834, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, /* 10 */ 38, 39, 40, 41, 42, 43, 44, 5, 75, 2, /* 20 */ 77, 78, 79, 46, 81, 82, 0, 50, 2, 10, /* 30 */ 18, 19, 20, 21, 22, 23, 79, 15, 81, 82, /* 40 */ 79, 5, 81, 82, 75, 5, 77, 78, 75, 23, /* 50 */ 77, 78, 5, 9, 18, 19, 12, 74, 18, 19, /* 60 */ 26, 27, 7, 2, 9, 18, 19, 12, 24, 59, /* 70 */ 7, 61, 9, 46, 7, 12, 9, 50, 7, 12, /* 80 */ 9, 46, 7, 12, 9, 50, 7, 12, 9, 16, /* 90 */ 17, 12, 51, 52, 73, 74, 73, 74, 73, 74, /* 100 */ 2, 73, 74, 47, 48, 57, 58, 55, 56, 7, /* 110 */ 45, 9, 73, 74, 49, 69, 70, 45, 69, 70, /* 120 */ 46, 49, 69, 70, 50, 7, 46, 9, 69, 70, /* 130 */ 50, 47, 48, 46, 2, 69, 70, 50, 57, 58, /* 140 */ 46, 10, 65, 66, 50, 69, 70, 65, 66, 46, /* 150 */ 65, 66, 10, 50, 65, 66, 47, 48, 65, 66, /* 160 */ 46, 55, 56, 10, 50, 65, 66, 63, 64, 46, /* 170 */ 63, 64, 80, 50, 63, 64, 46, 80, 63, 64, /* 180 */ 50, 47, 48, 63, 64, 46, 45, 63, 64, 50, /* 190 */ 49, 46, 46, 57, 58, 50, 50, 57, 58, 10, /* 200 */ 57, 58, 47, 48, 57, 58, 57, 58, 46, 6, /* 210 */ 45, 10, 50, 46, 49, 57, 58, 50, 55, 56, /* 220 */ 10, 55, 56, 55, 56, 46, 55, 56, 10, 50, /* 230 */ 47, 48, 55, 56, 46, 55, 56, 45, 50, 46, /* 240 */ 45, 49, 45, 50, 49, 46, 49, 45, 10, 50, /* 250 */ 9, 49, 47, 48, 45, 9, 58, 46, 49, 45, /* 260 */ 7, 50, 9, 49, 10, 24, 7, 7, 9, 9, /* 270 */ 24, 7, 10, 9, 7, 7, 9, 9, 7, 7, /* 280 */ 9, 9, 7, 7, 9, 9, 6, 56, 10, 49, /* 290 */ 6, 11, 80, 80, 57, 80, 80, 76, 76, 10, /* 300 */ 10, 10, 55, 45, 76, 76, 76, 10, 76, 73, /* 310 */ 6, 72, 10, 61, 58, 72, 6, 10, 6, 71, /* 320 */ 59, 71, 57, 68, 6, 56, 49, 45, 55, 6, /* 330 */ 6, 68, 53, 67, 6, 54, 62, 67, 6, 54, /* 340 */ 53, 49, 49, 49, 49, 62, 45, 61, 60, 50, /* 350 */ 45, 45, 49, 45, 54, 59, 8, 8, 60, 4, /* 360 */ 45, 50, 49, 54, 45, 24, 6, 53, 11, 53, /* 370 */ 50, 50, 50, 10, 4, 50, 50, 50, 6, 50, /* 380 */ 50, 8, 8, 8, 4, 8, 4, 6, 24, 11, /* 390 */ 4, 6, 8, 10, 4, 8, 4, 4, 7, 4, /* 400 */ 6, 4, 13, 7, 6, 3, 7, 6, 4, 6, /* 410 */ 83, 11, 4, 6, 8, 83, 11, 8, 4, 7, /* 420 */ 7, 6, 4, 13, 4, 8, 7, 6, 3, 83, /* 430 */ 6, 8, 4, 11, 8, 6, 83, 4, 83, 83, /* 440 */ 83, 10, 4, 11, 10, 83, 11, 11, 6, 4, /* 450 */ 7, 24, 8, 6, 83, 6, 8, 7, 6, 8, /* 460 */ 7, 4, 8, 4, 6, 3, 10, 4, 83, 8, /* 470 */ 6, 11, 4, 8, 83, 8, 10, 7, 6, 6, /* 480 */ 6, 4, 11, 83, 8, 4, 8, 8, 8, 4, /* 490 */ 8, 4, 4, 7, 11, 83, 7, 4, 4, 83, /* 500 */ 8, 10, 83, 8, 6, 4, 83, 8, 11, 4, /* 510 */ 8, 83, 8, 83, 6, 83, 6, 11, 83, 10, /* 520 */ 83, 8, 11, 8, 4, 8, 4, 83, 83, 11, /* 530 */ 7, 6, 6, 6, 10, 4, 83, 83, 8, 4, /* 540 */ 8, 8, 83, 4, 8, 11, 4, 7, 83, 83, /* 550 */ 4, 10, 8, 8, 6, 4, 83, 10, 4, 83, /* 560 */ 8, 8, 7, 83, 83, 6, 4, 11, 83, 11, /* 570 */ 83, 8, 11, 6, 8, 7, 4, 83, 8, 4, /* 580 */ 6, 8, 83, 83, 4, 8, 83, 11, 7, 10, /* 590 */ 8, 6, 4, 83, 8, 4, 83, 83, 8, 6, /* 600 */ 11, 6, 10, 4, 8, 4, 4, 83, 8, 4, /* 610 */ 83, 8, 8, 7, 83, 6, 4, 83, 11, 83, /* 620 */ 10, 4, 6, 83, 11, 11, 83, 8, 83, 8, /* 630 */ 8, 8, 4, 7, 83, 10, 6, 4, 4, 83, /* 640 */ 8, 83, 11, 6, 8, 4, 8, 8, 83, 83, /* 650 */ 7, 6, 4, 6, 83, 11, 10, 4, 4, 8, /* 660 */ 8, 83, 4, 83, 8, 8, 7, 6, 83, 4, /* 670 */ 83, 11, 83, 10, 6, 8, 6, 11, 6, 83, /* 680 */ 4, 83, 83, 6, 6, 11, 11, 8, 83, 8, /* 690 */ 6, 83, 6, 83, 4, 8, 11, 83, 7, 6, /* 700 */ 4, 83, 14, 4, 83, 83, 11, 10, 8, 8, /* 710 */ 6, 8, 83, 4, 83, 8, 8, 7, 83, 7, /* 720 */ 6, 4, 11, 83, 6, 83, 10, 4, 8, 8, /* 730 */ 8, 4, 83, 8, 4, 83, 8, 8, 7, 83, /* 740 */ 6, 4, 4, 11, 83, 10, 83, 6, 6, 83, /* 750 */ 11, 8, 6, 4, 83, 11, 4, 6, 83, 11, /* 760 */ 6, 8, 6, 83, 7, 83, 8, 83, 8, 8, /* 770 */ 8, 8, 2, 4, 83, 4, 4, 3, 11, 83, /* 780 */ 4, 8, 4, 83, 83, 8, 4, 6, 83, 6, /* 790 */ 11, 4, 6, 83, 6, 83, 4, 83, 8, 8, /* 800 */ 7, 6, 83, 83, 4, 83, 83, 83, 11, 10, /* 810 */ 8, 6, 11, 83, 4, 4, 3, 8, 6, 1, /* 820 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, /* 830 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, /* 840 */ 83, 83, 83, 83, 83, }; #define YY_SHIFT_COUNT (531) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (818) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 820, 26, 17, 61, 61, 98, 98, 73, 19, 22, /* 10 */ 19, 19, 22, 19, 132, 131, 142, 153, 19, 22, /* 20 */ 189, 22, 189, 189, 22, 189, 132, 189, 22, 131, /* 30 */ 189, 201, 22, 201, 201, 22, 201, 132, 201, 22, /* 40 */ 142, 201, 218, 22, 218, 218, 22, 218, 132, 218, /* 50 */ 22, 153, 218, 131, 22, 131, 131, 22, 131, 132, /* 60 */ 131, 22, 153, 238, 131, 142, 22, 142, 142, 22, /* 70 */ 142, 132, 142, 22, 153, 142, 153, 22, 153, 153, /* 80 */ 22, 153, 132, 153, 22, 153, 254, 203, 203, 210, /* 90 */ 262, 278, 203, 203, 203, 203, 284, 284, 289, 290, /* 100 */ 291, 284, 284, 284, 284, 297, 304, 302, 210, 304, /* 110 */ 310, 307, 289, 310, 312, 278, 262, 312, 318, 291, /* 120 */ 290, 318, 323, 324, 328, 323, 278, 278, 278, 278, /* 130 */ 302, 328, 332, 324, 291, 291, 291, 291, 307, 332, /* 140 */ 323, 278, 323, 22, 22, 278, 324, 291, 324, 22, /* 150 */ 22, 291, 22, 22, 22, 22, 22, 22, 12, 36, /* 160 */ 40, 47, 44, 55, 63, 67, 71, 75, 79, 241, /* 170 */ 246, 102, 118, 253, 259, 260, 264, 267, 268, 271, /* 180 */ 272, 275, 276, 280, 348, 349, 355, 341, 360, 357, /* 190 */ 363, 370, 373, 374, 380, 372, 375, 377, 382, 364, /* 200 */ 381, 378, 383, 386, 384, 387, 390, 385, 392, 393, /* 210 */ 391, 394, 395, 396, 398, 397, 399, 401, 404, 402, /* 220 */ 400, 405, 406, 408, 412, 407, 409, 414, 413, 415, /* 230 */ 417, 418, 419, 421, 420, 425, 422, 423, 426, 428, /* 240 */ 427, 429, 432, 434, 433, 435, 436, 444, 438, 443, /* 250 */ 447, 448, 445, 450, 452, 451, 457, 453, 458, 459, /* 260 */ 462, 460, 454, 463, 464, 461, 465, 468, 470, 472, /* 270 */ 471, 466, 477, 478, 479, 487, 473, 480, 482, 488, /* 280 */ 489, 474, 483, 491, 481, 492, 495, 493, 498, 501, /* 290 */ 502, 504, 505, 486, 510, 497, 509, 494, 506, 511, /* 300 */ 499, 513, 520, 508, 515, 517, 522, 523, 525, 518, /* 310 */ 524, 531, 530, 532, 535, 526, 533, 536, 539, 540, /* 320 */ 527, 534, 541, 542, 544, 545, 546, 548, 551, 552, /* 330 */ 553, 554, 555, 559, 556, 547, 562, 558, 561, 563, /* 340 */ 566, 572, 567, 570, 573, 575, 568, 574, 576, 579, /* 350 */ 580, 577, 582, 588, 585, 586, 590, 591, 581, 593, /* 360 */ 589, 592, 599, 596, 600, 601, 595, 602, 603, 604, /* 370 */ 605, 606, 609, 607, 610, 612, 613, 614, 619, 621, /* 380 */ 617, 616, 622, 623, 628, 626, 630, 631, 625, 633, /* 390 */ 632, 636, 634, 637, 638, 639, 641, 643, 645, 644, /* 400 */ 646, 648, 651, 652, 653, 647, 654, 656, 657, 658, /* 410 */ 659, 661, 660, 663, 665, 666, 668, 670, 672, 674, /* 420 */ 675, 677, 678, 684, 685, 667, 679, 676, 686, 681, /* 430 */ 687, 690, 691, 693, 695, 697, 696, 700, 701, 699, /* 440 */ 704, 707, 708, 709, 710, 714, 711, 716, 717, 721, /* 450 */ 722, 723, 718, 727, 725, 728, 730, 731, 734, 732, /* 460 */ 735, 737, 739, 741, 742, 746, 744, 748, 751, 756, /* 470 */ 753, 758, 749, 754, 760, 761, 762, 763, 769, 389, /* 480 */ 770, 771, 688, 403, 410, 772, 774, 703, 773, 776, /* 490 */ 712, 424, 767, 431, 778, 720, 729, 738, 442, 743, /* 500 */ 777, 752, 757, 449, 779, 456, 782, 467, 476, 485, /* 510 */ 781, 787, 783, 786, 788, 790, 791, 792, 793, 795, /* 520 */ 797, 799, 800, 801, 805, 802, 809, 810, 812, 811, /* 530 */ 813, 818, }; #define YY_REDUCE_COUNT (157) #define YY_REDUCE_MIN (-57) #define YY_REDUCE_MAX (330) static const short yy_reduce_ofst[] = { /* 0 */ 34, -28, -57, -43, -39, -31, -27, 41, 21, -23, /* 10 */ 23, 25, 27, 28, 56, 48, 52, 65, 39, 35, /* 20 */ 46, 74, 49, 53, 80, 59, 84, 66, 87, 81, /* 30 */ 76, 77, 94, 82, 85, 103, 89, 109, 93, 114, /* 40 */ 106, 100, 104, 123, 107, 111, 130, 115, 134, 120, /* 50 */ 139, 141, 124, 136, 145, 140, 143, 146, 147, 155, /* 60 */ 149, 162, 165, 10, 158, 163, 167, 166, 168, 179, /* 70 */ 171, 183, 177, 188, 72, 180, 192, 193, 195, 197, /* 80 */ 199, 202, 205, 209, 211, 214, -17, 92, 97, 198, /* 90 */ 231, 240, 212, 213, 215, 216, 221, 222, 237, 247, /* 100 */ 258, 228, 229, 230, 232, 236, 239, 252, 256, 243, /* 110 */ 248, 261, 265, 250, 255, 277, 269, 263, 266, 282, /* 120 */ 273, 270, 281, 279, 274, 285, 292, 293, 294, 295, /* 130 */ 286, 283, 288, 287, 301, 305, 306, 308, 296, 298, /* 140 */ 300, 303, 309, 299, 311, 313, 314, 315, 316, 320, /* 150 */ 321, 319, 322, 325, 326, 327, 329, 330, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 995, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 10 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 20 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 30 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 40 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 50 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 60 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 70 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 80 */ 838, 838, 838, 838, 838, 838, 838, 984, 984, 838, /* 90 */ 838, 838, 984, 984, 984, 984, 977, 977, 838, 838, /* 100 */ 838, 977, 977, 977, 977, 838, 960, 838, 838, 960, /* 110 */ 957, 838, 838, 957, 942, 838, 838, 942, 939, 838, /* 120 */ 838, 939, 876, 874, 910, 876, 838, 838, 838, 838, /* 130 */ 838, 910, 907, 874, 838, 838, 838, 838, 838, 907, /* 140 */ 876, 838, 876, 838, 838, 838, 874, 838, 874, 838, /* 150 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 160 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 170 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 180 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 190 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 200 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 210 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 220 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 230 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 240 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 250 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 260 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 270 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 280 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 290 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 300 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 310 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 320 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 330 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 340 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 350 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 360 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 370 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 380 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 390 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 400 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 410 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 420 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 430 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 440 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 450 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 460 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 470 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 480 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 490 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 500 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 510 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 520 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, /* 530 */ 838, 838, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. ** ................................................................................ ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. ** ** After the "shift" half of a SHIFTREDUCE action, the stateno field ** actually contains the reduce action for the second half of the ** SHIFTREDUCE. */ struct yyStackEntry { YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */ }; typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH int yyhwm; /* High-water mark of the stack */ #endif #ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; #ifndef NDEBUG #include <stdio.h> static FILE *yyTraceFILE = 0; ................................................................................ ** line of trace output. If NULL, then tracing is ** turned off. ** </ul> ** ** Outputs: ** None. */ void ParseTrace (FILE * TraceFILE, char *zTracePrompt) { yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if (yyTraceFILE == 0) yyTracePrompt = 0; else if (yyTracePrompt == 0) yyTraceFILE = 0; } #endif /* NDEBUG */ #if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { /* 0 */ "$", /* 1 */ "GEOJSON_NEWLINE", /* 2 */ "GEOJSON_OPEN_BRACE", /* 3 */ "GEOJSON_TYPE", /* 4 */ "GEOJSON_COLON", /* 5 */ "GEOJSON_POINT", /* 6 */ "GEOJSON_COMMA", /* 7 */ "GEOJSON_COORDS", /* 8 */ "GEOJSON_CLOSE_BRACE", /* 9 */ "GEOJSON_BBOX", /* 10 */ "GEOJSON_OPEN_BRACKET", /* 11 */ "GEOJSON_CLOSE_BRACKET", /* 12 */ "GEOJSON_CRS", /* 13 */ "GEOJSON_NAME", /* 14 */ "GEOJSON_PROPS", /* 15 */ "GEOJSON_NUM", /* 16 */ "GEOJSON_SHORT_SRID", /* 17 */ "GEOJSON_LONG_SRID", /* 18 */ "GEOJSON_LINESTRING", /* 19 */ "GEOJSON_POLYGON", /* 20 */ "GEOJSON_MULTIPOINT", /* 21 */ "GEOJSON_MULTILINESTRING", /* 22 */ "GEOJSON_MULTIPOLYGON", /* 23 */ "GEOJSON_GEOMETRYCOLLECTION", /* 24 */ "GEOJSON_GEOMS", /* 25 */ "error", /* 26 */ "main", /* 27 */ "in", /* 28 */ "state", /* 29 */ "program", /* 30 */ "geo_text", /* 31 */ "point", /* 32 */ "pointz", /* 33 */ "linestring", /* 34 */ "linestringz", /* 35 */ "polygon", /* 36 */ "polygonz", /* 37 */ "multipoint", /* 38 */ "multipointz", /* 39 */ "multilinestring", /* 40 */ "multilinestringz", /* 41 */ "multipolygon", /* 42 */ "multipolygonz", /* 43 */ "geocoll", /* 44 */ "geocollz", /* 45 */ "point_coordxy", /* 46 */ "bbox", /* 47 */ "short_crs", /* 48 */ "long_crs", /* 49 */ "point_coordxyz", /* 50 */ "coord", /* 51 */ "short_srid", /* 52 */ "long_srid", /* 53 */ "extra_pointsxy", /* 54 */ "extra_pointsxyz", /* 55 */ "linestring_text", /* 56 */ "linestring_textz", /* 57 */ "polygon_text", /* 58 */ "polygon_textz", /* 59 */ "ring", /* 60 */ "extra_rings", /* 61 */ "ringz", /* 62 */ "extra_ringsz", /* 63 */ "multipoint_text", /* 64 */ "multipoint_textz", /* 65 */ "multilinestring_text", /* 66 */ "multilinestring_textz", /* 67 */ "multilinestring_text2", /* 68 */ "multilinestring_textz2", /* 69 */ "multipolygon_text", /* 70 */ "multipolygon_textz", /* 71 */ "multipolygon_text2", /* 72 */ "multipolygon_textz2", /* 73 */ "geocoll_text", /* 74 */ "geocoll_textz", /* 75 */ "coll_point", /* 76 */ "geocoll_text2", /* 77 */ "coll_linestring", /* 78 */ "coll_polygon", /* 79 */ "coll_pointz", /* 80 */ "geocoll_textz2", /* 81 */ "coll_linestringz", /* 82 */ "coll_polygonz", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "geo_text ::= point", /* 1 */ "geo_text ::= pointz", /* 2 */ "geo_text ::= linestring", /* 3 */ "geo_text ::= linestringz", /* 4 */ "geo_text ::= polygon", /* 5 */ "geo_text ::= polygonz", /* 6 */ "geo_text ::= multipoint", /* 7 */ "geo_text ::= multipointz", /* 8 */ "geo_text ::= multilinestring", /* 9 */ "geo_text ::= multilinestringz", /* 10 */ "geo_text ::= multipolygon", /* 11 */ "geo_text ::= multipolygonz", /* 12 */ "geo_text ::= geocoll", /* 13 */ "geo_text ::= geocollz", /* 14 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 15 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 16 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 17 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 18 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 19 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 20 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 21 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 22 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 23 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 24 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 25 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 26 */ "short_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON short_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE", /* 27 */ "long_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON long_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE", /* 28 */ "point_coordxy ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET", /* 29 */ "point_coordxyz ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET", /* 30 */ "coord ::= GEOJSON_NUM", /* 31 */ "short_srid ::= GEOJSON_SHORT_SRID", /* 32 */ "long_srid ::= GEOJSON_LONG_SRID", /* 33 */ "extra_pointsxy ::=", /* 34 */ "extra_pointsxy ::= GEOJSON_COMMA point_coordxy extra_pointsxy", /* 35 */ "extra_pointsxyz ::=", /* 36 */ "extra_pointsxyz ::= GEOJSON_COMMA point_coordxyz extra_pointsxyz", /* 37 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 38 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 39 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 40 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 41 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 42 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 43 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 44 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 45 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 46 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 47 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 48 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 49 */ "linestring_text ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", /* 50 */ "linestring_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", /* 51 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 52 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 53 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 54 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 55 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 56 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 57 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 58 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 59 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 60 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 61 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 62 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 63 */ "polygon_text ::= GEOJSON_OPEN_BRACKET ring extra_rings GEOJSON_CLOSE_BRACKET", /* 64 */ "polygon_textz ::= GEOJSON_OPEN_BRACKET ringz extra_ringsz GEOJSON_CLOSE_BRACKET", /* 65 */ "ring ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", /* 66 */ "extra_rings ::=", /* 67 */ "extra_rings ::= GEOJSON_COMMA ring extra_rings", /* 68 */ "ringz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", /* 69 */ "extra_ringsz ::=", /* 70 */ "extra_ringsz ::= GEOJSON_COMMA ringz extra_ringsz", /* 71 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 72 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 73 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 74 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 75 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 76 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", /* 77 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 78 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 79 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 80 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 81 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 82 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", /* 83 */ "multipoint_text ::= GEOJSON_OPEN_BRACKET point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", /* 84 */ "multipoint_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", /* 85 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 86 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 87 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 88 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 89 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 90 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", /* 91 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 92 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 93 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 94 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 95 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 96 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", /* 97 */ "multilinestring_text ::= GEOJSON_OPEN_BRACKET linestring_text multilinestring_text2 GEOJSON_CLOSE_BRACKET", /* 98 */ "multilinestring_text2 ::=", /* 99 */ "multilinestring_text2 ::= GEOJSON_COMMA linestring_text multilinestring_text2", /* 100 */ "multilinestring_textz ::= GEOJSON_OPEN_BRACKET linestring_textz multilinestring_textz2 GEOJSON_CLOSE_BRACKET", /* 101 */ "multilinestring_textz2 ::=", /* 102 */ "multilinestring_textz2 ::= GEOJSON_COMMA linestring_textz multilinestring_textz2", /* 103 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 104 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 105 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 106 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 107 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 108 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", /* 109 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 110 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 111 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 112 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 113 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 114 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", /* 115 */ "multipolygon_text ::= GEOJSON_OPEN_BRACKET polygon_text multipolygon_text2 GEOJSON_CLOSE_BRACKET", /* 116 */ "multipolygon_text2 ::=", /* 117 */ "multipolygon_text2 ::= GEOJSON_COMMA polygon_text multipolygon_text2", /* 118 */ "multipolygon_textz ::= GEOJSON_OPEN_BRACKET polygon_textz multipolygon_textz2 GEOJSON_CLOSE_BRACKET", /* 119 */ "multipolygon_textz2 ::=", /* 120 */ "multipolygon_textz2 ::= GEOJSON_COMMA polygon_textz multipolygon_textz2", /* 121 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 122 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 123 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 124 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 125 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 126 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", /* 127 */ "geocollz ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz", /* 128 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", /* 129 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", /* 130 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", /* 131 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", /* 132 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", /* 133 */ "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_point geocoll_text2 GEOJSON_CLOSE_BRACKET", /* 134 */ "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_linestring geocoll_text2 GEOJSON_CLOSE_BRACKET", /* 135 */ "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_polygon geocoll_text2 GEOJSON_CLOSE_BRACKET", /* 136 */ "geocoll_text2 ::=", /* 137 */ "geocoll_text2 ::= GEOJSON_COMMA coll_point geocoll_text2", /* 138 */ "geocoll_text2 ::= GEOJSON_COMMA coll_linestring geocoll_text2", /* 139 */ "geocoll_text2 ::= GEOJSON_COMMA coll_polygon geocoll_text2", /* 140 */ "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_pointz geocoll_textz2 GEOJSON_CLOSE_BRACKET", /* 141 */ "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_linestringz geocoll_textz2 GEOJSON_CLOSE_BRACKET", /* 142 */ "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_polygonz geocoll_textz2 GEOJSON_CLOSE_BRACKET", /* 143 */ "geocoll_textz2 ::=", /* 144 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_pointz geocoll_textz2", /* 145 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_linestringz geocoll_textz2", /* 146 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_polygonz geocoll_textz2", /* 147 */ "coll_point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", /* 148 */ "coll_pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", /* 149 */ "coll_linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", /* 150 */ "coll_linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", /* 151 */ "coll_polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", /* 152 */ "coll_polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", /* 153 */ "main ::= in", /* 154 */ "in ::=", /* 155 */ "in ::= in state GEOJSON_NEWLINE", /* 156 */ "state ::= program", /* 157 */ "program ::= geo_text", /* 158 */ "bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number ** of errors. Return 0 on success. */ static int yyGrowStack (yyParser * p) { int newSize; int idx; yyStackEntry *pNew; newSize = p->yystksz * 2 + 100; idx = p->yytos ? (int) (p->yytos - p->yystack) : 0; if (p->yystack == &p->yystk0) { pNew = malloc (newSize * sizeof (pNew[0])); if (pNew) pNew[0] = p->yystk0; } else { pNew = realloc (p->yystack, newSize * sizeof (pNew[0])); } if (pNew) { p->yystack = pNew; p->yytos = &p->yystack[idx]; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sStack grows from %d to %d entries.\n", yyTracePrompt, p->yystksz, newSize); } #endif p->yystksz = newSize; } return pNew == 0; } #endif /* Datatype of the argument to the memory allocated passed as the ** second argument to ParseAlloc() below. This can be changed by ** putting an appropriate #define in the %include section of the input ** grammar. */ #ifndef YYMALLOCARGTYPE #define YYMALLOCARGTYPE size_t #endif /* Initialize a new parser that has already been allocated. */ static void ParseInit (void *yypParser) { yyParser *pParser = (yyParser *) yypParser; #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 pParser->yytos = NULL; pParser->yystack = NULL; pParser->yystksz = 0; if (yyGrowStack (pParser)) { pParser->yystack = &pParser->yystk0; pParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY pParser->yyerrcnt = -1; #endif pParser->yytos = pParser->yystack; pParser->yystack[0].stateno = 0; pParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH - 1]; #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like ................................................................................ ** Inputs: ** A pointer to the function used to allocate memory. ** ** Outputs: ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ void * ParseAlloc (void *(*mallocProc) (YYMALLOCARGTYPE)) { yyParser *pParser; pParser = (yyParser *) (*mallocProc) ((YYMALLOCARGTYPE) sizeof (yyParser)); if (pParser) ParseInit (pParser); return pParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ /* The following function deletes the "minor type" or semantic value ** associated with a symbol. The symbol can be either a terminal ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is ** a pointer to the value to be deleted. The code used to do the ** deletions is derived from the %destructor and/or %token_destructor ** directives of the input grammar. */ static void yy_destructor (yyParser * yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE * yypminor /* The object to be destroyed */ ) { ParseARG_FETCH; switch (yymajor) { /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen ** when the symbol is popped from the stack during a ** reduce or during error processing or when a parser is ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ /********* Begin destructor definitions ***************************************/ /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } /* ** Pop the parser's stack once. ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. */ static void yy_pop_parser_stack (yyParser * pParser) { yyStackEntry *yytos; assert (pParser->yytos != 0); assert (pParser->yytos > pParser->yystack); yytos = pParser->yytos--; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif yy_destructor (pParser, yytos->major, &yytos->minor); } /* ** Clear all secondary memory allocations from the parser */ static void ParseFinalize (void *p) { yyParser *pParser = (yyParser *) p; while (pParser->yytos > pParser->yystack) yy_pop_parser_stack (pParser); #if YYSTACKDEPTH<=0 if (pParser->yystack != &pParser->yystk0) free (pParser->yystack); #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** ** If the YYPARSEFREENEVERNULL macro exists (for example because it ** is defined in a %include section of the input grammar) then it is ** assumed that the input pointer is never NULL. */ void ParseFree (void *p, /* The parser to be deleted */ void (*freeProc) (void *) /* Function used to reclaim memory */ ) { #ifndef YYPARSEFREENEVERNULL if (p == 0) return; #endif ParseFinalize (p); (*freeProc) (p); } #endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. */ #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak (void *p) { yyParser *pParser = (yyParser *) p; return pParser->yyhwm; } #endif /* This array of booleans keeps track of the parser statement ** coverage. The element yycoverage[X][Y] is set when the parser ** is in state X and has a lookahead token Y. In a well-tested ** systems, every element of this matrix should end up being set. ................................................................................ ** ** (1) has not been used by the parser, and ** (2) is not a syntax error. ** ** Return the number of missed state/lookahead combinations. */ #if defined(YYCOVERAGE) int ParseCoverage (FILE * out) { int stateno, iLookAhead, i; int nMissed = 0; for (stateno = 0; stateno < YYNSTATE; stateno++) { i = yy_shift_ofst[stateno]; for (iLookAhead = 0; iLookAhead < YYNTOKEN; iLookAhead++) { if (yy_lookahead[i + iLookAhead] != iLookAhead) continue; if (yycoverage[stateno][iLookAhead] == 0) nMissed++; if (out) { fprintf (out, "State %d lookahead %s %s\n", stateno, yyTokenName[iLookAhead], yycoverage[stateno][iLookAhead] ? "ok" : "missed"); } } } return nMissed; } #endif /* ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ static unsigned int yy_find_shift_action (yyParser * pParser, /* The parser */ YYCODETYPE iLookAhead /* The look-ahead token */ ) { int i; int stateno = pParser->yytos->stateno; if (stateno > YY_MAX_SHIFT) return stateno; assert (stateno <= YY_SHIFT_COUNT); #if defined(YYCOVERAGE) yycoverage[stateno][iLookAhead] = 1; #endif do { i = yy_shift_ofst[stateno]; assert (i >= 0); assert (i + YYNTOKEN <= (int) sizeof (yy_lookahead) / sizeof (yy_lookahead[0])); assert (iLookAhead != YYNOCODE); assert (iLookAhead < YYNTOKEN); i += iLookAhead; if (yy_lookahead[i] != iLookAhead) { #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0]) && (iFallback = yyFallback[iLookAhead]) != 0) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); } #endif assert (yyFallback[iFallback] == 0); /* Fallback loop must terminate */ iLookAhead = iFallback; continue; } #endif #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; if ( #if YY_SHIFT_MIN+YYWILDCARD<0 j >= 0 && #endif #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT j < YY_ACTTAB_COUNT && #endif yy_lookahead[j] == YYWILDCARD && iLookAhead > 0) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ return yy_default[stateno]; } else { return yy_action[i]; } } while (1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ static int yy_find_reduce_action (int stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ) { int i; #ifdef YYERRORSYMBOL if (stateno > YY_REDUCE_COUNT) { return yy_default[stateno]; } #else assert (stateno <= YY_REDUCE_COUNT); #endif i = yy_reduce_ofst[stateno]; assert (iLookAhead != YYNOCODE); i += iLookAhead; #ifdef YYERRORSYMBOL if (i < 0 || i >= YY_ACTTAB_COUNT || yy_lookahead[i] != iLookAhead) { return yy_default[stateno]; } #else assert (i >= 0 && i < YY_ACTTAB_COUNT); assert (yy_lookahead[i] == iLookAhead); #endif return yy_action[i]; } /* ** The following routine is called if the stack overflows. */ static void yyStackOverflow (yyParser * yypParser) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt); } #endif while (yypParser->yytos > yypParser->yystack) yy_pop_parser_stack (yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ /******** Begin %stack_overflow code ******************************************/ spatialite_e ("Giving up. Parser stack overflow\n"); /******** End %stack_overflow code ********************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ } /* ** Print tracing information for a SHIFT action */ #ifndef NDEBUG static void yyTraceShift (yyParser * yypParser, int yyNewState, const char *zTag) { if (yyTraceFILE) { if (yyNewState < YYNSTATE) { fprintf (yyTraceFILE, "%s%s '%s', go to state %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState); } else { fprintf (yyTraceFILE, "%s%s '%s', pending reduce %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState - YY_MIN_REDUCE); } } } #else #define yyTraceShift(X,Y,Z) #endif /* ** Perform a shift action. */ static void yy_shift (yyParser * yypParser, /* The parser to be shifted */ int yyNewState, /* The new state to shift in */ int yyMajor, /* The major token to shift in */ ParseTOKENTYPE yyMinor /* The minor token to shift in */ ) { yyStackEntry *yytos; yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH if ((int) (yypParser->yytos - yypParser->yystack) > yypParser->yyhwm) { yypParser->yyhwm++; assert (yypParser->yyhwm == (int) (yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if (yypParser->yytos > yypParser->yystackEnd) { yypParser->yytos--; yyStackOverflow (yypParser); return; } #else if (yypParser->yytos >= &yypParser->yystack[yypParser->yystksz]) { if (yyGrowStack (yypParser)) { yypParser->yytos--; yyStackOverflow (yypParser); return; } } #endif if (yyNewState > YY_MAX_SHIFT) { yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } yytos = yypParser->yytos; yytos->stateno = (YYACTIONTYPE) yyNewState; yytos->major = (YYCODETYPE) yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift (yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { {30, -1}, /* (0) geo_text ::= point */ {30, -1}, /* (1) geo_text ::= pointz */ {30, -1}, /* (2) geo_text ::= linestring */ {30, -1}, /* (3) geo_text ::= linestringz */ {30, -1}, /* (4) geo_text ::= polygon */ {30, -1}, /* (5) geo_text ::= polygonz */ {30, -1}, /* (6) geo_text ::= multipoint */ {30, -1}, /* (7) geo_text ::= multipointz */ {30, -1}, /* (8) geo_text ::= multilinestring */ {30, -1}, /* (9) geo_text ::= multilinestringz */ {30, -1}, /* (10) geo_text ::= multipolygon */ {30, -1}, /* (11) geo_text ::= multipolygonz */ {30, -1}, /* (12) geo_text ::= geocoll */ {30, -1}, /* (13) geo_text ::= geocollz */ {31, -9}, /* (14) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ {31, -15}, /* (15) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ {31, -13}, /* (16) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ {31, -13}, /* (17) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ {31, -19}, /* (18) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ {31, -19}, /* (19) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ {32, -9}, /* (20) pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ {32, -15}, /* (21) pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ {32, -13}, /* (22) pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ {32, -13}, /* (23) pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ {31, -19}, /* (24) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ {31, -19}, /* (25) point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ {47, -13}, /* (26) short_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON short_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ {48, -13}, /* (27) long_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON long_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ {45, -5}, /* (28) point_coordxy ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ {49, -7}, /* (29) point_coordxyz ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ {50, -1}, /* (30) coord ::= GEOJSON_NUM */ {51, -1}, /* (31) short_srid ::= GEOJSON_SHORT_SRID */ {52, -1}, /* (32) long_srid ::= GEOJSON_LONG_SRID */ {53, 0}, /* (33) extra_pointsxy ::= */ {53, -3}, /* (34) extra_pointsxy ::= GEOJSON_COMMA point_coordxy extra_pointsxy */ {54, 0}, /* (35) extra_pointsxyz ::= */ {54, -3}, /* (36) extra_pointsxyz ::= GEOJSON_COMMA point_coordxyz extra_pointsxyz */ {33, -9}, /* (37) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ {33, -15}, /* (38) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ {33, -13}, /* (39) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ {33, -13}, /* (40) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ {33, -19}, /* (41) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ {33, -19}, /* (42) linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ {34, -9}, /* (43) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ {34, -15}, /* (44) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ {34, -13}, /* (45) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ {34, -13}, /* (46) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ {34, -19}, /* (47) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ {34, -19}, /* (48) linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ {55, -6}, /* (49) linestring_text ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ {56, -6}, /* (50) linestring_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ {35, -9}, /* (51) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ {35, -15}, /* (52) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ {35, -13}, /* (53) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ {35, -13}, /* (54) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ {35, -19}, /* (55) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ {35, -19}, /* (56) polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ {36, -9}, /* (57) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ {36, -15}, /* (58) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ {36, -13}, /* (59) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ {36, -13}, /* (60) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ {36, -19}, /* (61) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ {36, -19}, /* (62) polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ {57, -4}, /* (63) polygon_text ::= GEOJSON_OPEN_BRACKET ring extra_rings GEOJSON_CLOSE_BRACKET */ {58, -4}, /* (64) polygon_textz ::= GEOJSON_OPEN_BRACKET ringz extra_ringsz GEOJSON_CLOSE_BRACKET */ {59, -10}, /* (65) ring ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ {60, 0}, /* (66) extra_rings ::= */ {60, -3}, /* (67) extra_rings ::= GEOJSON_COMMA ring extra_rings */ {61, -10}, /* (68) ringz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ {62, 0}, /* (69) extra_ringsz ::= */ {62, -3}, /* (70) extra_ringsz ::= GEOJSON_COMMA ringz extra_ringsz */ {37, -9}, /* (71) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ {37, -15}, /* (72) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ {37, -13}, /* (73) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ {37, -13}, /* (74) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ {37, -19}, /* (75) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ {37, -19}, /* (76) multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ {38, -9}, /* (77) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ {38, -15}, /* (78) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ {38, -13}, /* (79) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ {38, -13}, /* (80) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ {38, -19}, /* (81) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ {38, -19}, /* (82) multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ {63, -4}, /* (83) multipoint_text ::= GEOJSON_OPEN_BRACKET point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ {64, -4}, /* (84) multipoint_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ {39, -9}, /* (85) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ {39, -15}, /* (86) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ {39, -13}, /* (87) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ {39, -13}, /* (88) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ {39, -19}, /* (89) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ {39, -19}, /* (90) multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ {40, -9}, /* (91) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ {40, -15}, /* (92) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ {40, -13}, /* (93) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ {40, -13}, /* (94) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ {40, -19}, /* (95) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ {40, -19}, /* (96) multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ {65, -4}, /* (97) multilinestring_text ::= GEOJSON_OPEN_BRACKET linestring_text multilinestring_text2 GEOJSON_CLOSE_BRACKET */ {67, 0}, /* (98) multilinestring_text2 ::= */ {67, -3}, /* (99) multilinestring_text2 ::= GEOJSON_COMMA linestring_text multilinestring_text2 */ {66, -4}, /* (100) multilinestring_textz ::= GEOJSON_OPEN_BRACKET linestring_textz multilinestring_textz2 GEOJSON_CLOSE_BRACKET */ {68, 0}, /* (101) multilinestring_textz2 ::= */ {68, -3}, /* (102) multilinestring_textz2 ::= GEOJSON_COMMA linestring_textz multilinestring_textz2 */ {41, -9}, /* (103) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ {41, -15}, /* (104) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ {41, -13}, /* (105) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ {41, -13}, /* (106) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ {41, -19}, /* (107) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ {41, -19}, /* (108) multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ {42, -9}, /* (109) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ {42, -15}, /* (110) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ {42, -13}, /* (111) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ {42, -13}, /* (112) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ {42, -19}, /* (113) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ {42, -19}, /* (114) multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ {69, -4}, /* (115) multipolygon_text ::= GEOJSON_OPEN_BRACKET polygon_text multipolygon_text2 GEOJSON_CLOSE_BRACKET */ {71, 0}, /* (116) multipolygon_text2 ::= */ {71, -3}, /* (117) multipolygon_text2 ::= GEOJSON_COMMA polygon_text multipolygon_text2 */ {70, -4}, /* (118) multipolygon_textz ::= GEOJSON_OPEN_BRACKET polygon_textz multipolygon_textz2 GEOJSON_CLOSE_BRACKET */ {72, 0}, /* (119) multipolygon_textz2 ::= */ {72, -3}, /* (120) multipolygon_textz2 ::= GEOJSON_COMMA polygon_textz multipolygon_textz2 */ {43, -9}, /* (121) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ {43, -15}, /* (122) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ {43, -13}, /* (123) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ {43, -13}, /* (124) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ {43, -19}, /* (125) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ {43, -19}, /* (126) geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ {44, -2}, /* (127) geocollz ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz */ {44, -15}, /* (128) geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ {44, -13}, /* (129) geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ {44, -13}, /* (130) geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ {44, -19}, /* (131) geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ {44, -19}, /* (132) geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ {73, -4}, /* (133) geocoll_text ::= GEOJSON_OPEN_BRACKET coll_point geocoll_text2 GEOJSON_CLOSE_BRACKET */ {73, -4}, /* (134) geocoll_text ::= GEOJSON_OPEN_BRACKET coll_linestring geocoll_text2 GEOJSON_CLOSE_BRACKET */ {73, -4}, /* (135) geocoll_text ::= GEOJSON_OPEN_BRACKET coll_polygon geocoll_text2 GEOJSON_CLOSE_BRACKET */ {76, 0}, /* (136) geocoll_text2 ::= */ {76, -3}, /* (137) geocoll_text2 ::= GEOJSON_COMMA coll_point geocoll_text2 */ {76, -3}, /* (138) geocoll_text2 ::= GEOJSON_COMMA coll_linestring geocoll_text2 */ {76, -3}, /* (139) geocoll_text2 ::= GEOJSON_COMMA coll_polygon geocoll_text2 */ {74, -4}, /* (140) geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_pointz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ {74, -4}, /* (141) geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_linestringz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ {74, -4}, /* (142) geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_polygonz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ {80, 0}, /* (143) geocoll_textz2 ::= */ {80, -3}, /* (144) geocoll_textz2 ::= GEOJSON_COMMA coll_pointz geocoll_textz2 */ {80, -3}, /* (145) geocoll_textz2 ::= GEOJSON_COMMA coll_linestringz geocoll_textz2 */ {80, -3}, /* (146) geocoll_textz2 ::= GEOJSON_COMMA coll_polygonz geocoll_textz2 */ {75, -9}, /* (147) coll_point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ {79, -9}, /* (148) coll_pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ {77, -9}, /* (149) coll_linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ {81, -9}, /* (150) coll_linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ {78, -9}, /* (151) coll_polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ {82, -9}, /* (152) coll_polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ {26, -1}, /* (153) main ::= in */ {27, 0}, /* (154) in ::= */ {27, -3}, /* (155) in ::= in state GEOJSON_NEWLINE */ {28, -1}, /* (156) state ::= program */ {29, -1}, /* (157) program ::= geo_text */ {46, -7}, /* (158) bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord */ }; static void yy_accept (yyParser *); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. ** ** The yyLookahead and yyLookaheadToken parameters provide reduce actions ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE ** if the lookahead token has already been consumed. As this procedure is ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ static void yy_reduce (yyParser * yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ ) { int yygoto; /* The next state */ int yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ ParseARG_FETCH; (void) yyLookahead; (void) yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if (yyTraceFILE && yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0]))) { yysize = yyRuleInfo[yyruleno].nrhs; if (yysize) { fprintf (yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); } else { fprintf (yyTraceFILE, "%sReduce %d [%s].\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno]); } } #endif /* NDEBUG */ /* Check that the stack is large enough to grow by a single entry ** if the RHS of the rule is empty. This ensures that there is room ** enough on the stack to push the LHS value */ if (yyRuleInfo[yyruleno].nrhs == 0) { #ifdef YYTRACKMAXSTACKDEPTH if ((int) (yypParser->yytos - yypParser->yystack) > yypParser->yyhwm) { yypParser->yyhwm++; assert (yypParser->yyhwm == (int) (yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if (yypParser->yytos >= yypParser->yystackEnd) { yyStackOverflow (yypParser); return; } #else if (yypParser->yytos >= &yypParser->yystack[yypParser->yystksz - 1]) { if (yyGrowStack (yypParser)) { yyStackOverflow (yypParser); return; } yymsp = yypParser->yytos; } #endif } switch (yyruleno) { /* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* geo_text ::= point */ case 1: /* geo_text ::= pointz */ yytestcase (yyruleno == 1); case 2: /* geo_text ::= linestring */ yytestcase (yyruleno == 2); case 3: /* geo_text ::= linestringz */ yytestcase (yyruleno == 3); case 4: /* geo_text ::= polygon */ yytestcase (yyruleno == 4); case 5: /* geo_text ::= polygonz */ yytestcase (yyruleno == 5); case 6: /* geo_text ::= multipoint */ yytestcase (yyruleno == 6); case 7: /* geo_text ::= multipointz */ yytestcase (yyruleno == 7); case 8: /* geo_text ::= multilinestring */ yytestcase (yyruleno == 8); case 9: /* geo_text ::= multilinestringz */ yytestcase (yyruleno == 9); case 10: /* geo_text ::= multipolygon */ yytestcase (yyruleno == 10); case 11: /* geo_text ::= multipolygonz */ yytestcase (yyruleno == 11); case 12: /* geo_text ::= geocoll */ yytestcase (yyruleno == 12); case 13: /* geo_text ::= geocollz */ yytestcase (yyruleno == 13); { p_data->result = yymsp[0].minor.yy0; } break; case 14: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ case 20: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 20); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromPoint (p_data, (gaiaPointPtr) yymsp[-1]. minor.yy0); } break; case 15: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ case 21: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 21); { yymsp[-14].minor.yy0 = geoJSON_buildGeomFromPoint (p_data, (gaiaPointPtr) yymsp[-1]. minor.yy0); } break; case 16: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ case 17: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 17); case 22: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 22); case 23: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 23); { yymsp[-12].minor.yy0 = geoJSON_buildGeomFromPointSrid (p_data, (gaiaPointPtr) yymsp[-1].minor.yy0, (int *) yymsp[-5].minor.yy0); } break; case 18: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ case 19: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 19); case 24: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 24); case 25: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 25); { yymsp[-18].minor.yy0 = geoJSON_buildGeomFromPointSrid (p_data, (gaiaPointPtr) yymsp[-1].minor.yy0, (int *) yymsp[-11].minor.yy0); } break; case 26: /* short_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON short_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ case 27: /* long_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON long_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 27); { yymsp[-12].minor.yy0 = yymsp[-2].minor.yy0; } break; case 28: /* point_coordxy ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ { yymsp[-4].minor.yy0 = (void *) geoJSON_point_xy (p_data, (double *) yymsp[-3].minor.yy0, (double *) yymsp[-1].minor.yy0); } break; case 29: /* point_coordxyz ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ { yymsp[-6].minor.yy0 = (void *) geoJSON_point_xyz (p_data, (double *) yymsp[-5].minor.yy0, (double *) yymsp[-3].minor.yy0, (double *) yymsp[-1].minor.yy0); } break; case 30: /* coord ::= GEOJSON_NUM */ case 31: /* short_srid ::= GEOJSON_SHORT_SRID */ yytestcase (yyruleno == 31); case 32: /* long_srid ::= GEOJSON_LONG_SRID */ yytestcase (yyruleno == 32); { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 33: /* extra_pointsxy ::= */ case 35: /* extra_pointsxyz ::= */ yytestcase (yyruleno == 35); case 66: /* extra_rings ::= */ yytestcase (yyruleno == 66); case 69: /* extra_ringsz ::= */ yytestcase (yyruleno == 69); case 98: /* multilinestring_text2 ::= */ yytestcase (yyruleno == 98); case 101: /* multilinestring_textz2 ::= */ yytestcase (yyruleno == 101); case 116: /* multipolygon_text2 ::= */ yytestcase (yyruleno == 116); case 119: /* multipolygon_textz2 ::= */ yytestcase (yyruleno == 119); case 136: /* geocoll_text2 ::= */ yytestcase (yyruleno == 136); case 143: /* geocoll_textz2 ::= */ yytestcase (yyruleno == 143); { yymsp[1].minor.yy0 = NULL; } break; case 34: /* extra_pointsxy ::= GEOJSON_COMMA point_coordxy extra_pointsxy */ case 36: /* extra_pointsxyz ::= GEOJSON_COMMA point_coordxyz extra_pointsxyz */ yytestcase (yyruleno == 36); { ((gaiaPointPtr) yymsp[-1].minor.yy0)->Next = (gaiaPointPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 37: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ case 43: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 43); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromLinestring (p_data, (gaiaLinestringPtr) yymsp[-1].minor.yy0); } break; case 38: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ case 44: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 44); { yymsp[-14].minor.yy0 = geoJSON_buildGeomFromLinestring (p_data, (gaiaLinestringPtr) yymsp[-1].minor.yy0); } break; case 39: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ case 40: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 40); case 45: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 45); case 46: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 46); { yymsp[-12].minor.yy0 = geoJSON_buildGeomFromLinestringSrid (p_data, (gaiaLinestringPtr) yymsp[-1].minor.yy0, (int *) yymsp[-5]. minor.yy0); } break; case 41: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ case 42: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 42); case 47: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 47); case 48: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 48); { yymsp[-18].minor.yy0 = geoJSON_buildGeomFromLinestringSrid (p_data, (gaiaLinestringPtr) yymsp[-1].minor.yy0, (int *) yymsp[-11]. minor.yy0); } break; case 49: /* linestring_text ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) geoJSON_linestring_xy (p_data, (gaiaPointPtr) yymsp[-4].minor.yy0); } break; case 50: /* linestring_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) geoJSON_linestring_xyz (p_data, (gaiaPointPtr) yymsp[-4].minor.yy0); } break; case 51: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ case 57: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 57); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromPolygon (p_data, (gaiaPolygonPtr) yymsp[-1].minor.yy0); } break; case 52: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ case 58: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 58); { yymsp[-14].minor.yy0 = geoJSON_buildGeomFromPolygon (p_data, (gaiaPolygonPtr) yymsp[-1].minor.yy0); } break; case 53: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ case 54: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 54); case 59: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 59); case 60: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 60); { yymsp[-12].minor.yy0 = geoJSON_buildGeomFromPolygonSrid (p_data, (gaiaPolygonPtr) yymsp[-1].minor.yy0, (int *) yymsp[-5]. minor.yy0); } break; case 55: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ case 56: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 56); case 61: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 61); case 62: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 62); { yymsp[-18].minor.yy0 = geoJSON_buildGeomFromPolygonSrid (p_data, (gaiaPolygonPtr) yymsp[-1].minor.yy0, (int *) yymsp[-11]. minor.yy0); } break; case 63: /* polygon_text ::= GEOJSON_OPEN_BRACKET ring extra_rings GEOJSON_CLOSE_BRACKET */ { ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = (gaiaRingPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_polygon_xy (p_data, (gaiaRingPtr) yymsp[-2]. minor.yy0); } break; case 64: /* polygon_textz ::= GEOJSON_OPEN_BRACKET ringz extra_ringsz GEOJSON_CLOSE_BRACKET */ { ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = (gaiaRingPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_polygon_xyz (p_data, (gaiaRingPtr) yymsp[-2]. minor.yy0); } break; case 65: /* ring ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = (gaiaPointPtr) yymsp[-6].minor.yy0; ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = (gaiaPointPtr) yymsp[-4].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) geoJSON_ring_xy (p_data, (gaiaPointPtr) yymsp[-8].minor.yy0); } break; case 67: /* extra_rings ::= GEOJSON_COMMA ring extra_rings */ case 70: /* extra_ringsz ::= GEOJSON_COMMA ringz extra_ringsz */ yytestcase (yyruleno == 70); { ((gaiaRingPtr) yymsp[-1].minor.yy0)->Next = (gaiaRingPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 68: /* ringz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = (gaiaPointPtr) yymsp[-6].minor.yy0; ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = (gaiaPointPtr) yymsp[-4].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) geoJSON_ring_xyz (p_data, (gaiaPointPtr) yymsp[-8]. minor.yy0); } break; case 71: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ case 77: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 77); case 85: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 85); case 91: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 91); case 103: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 103); case 109: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 109); case 121: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 121); { yymsp[-8].minor.yy0 = yymsp[-1].minor.yy0; } break; case 72: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ case 78: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 78); case 86: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 86); case 92: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 92); case 104: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 104); case 110: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 110); case 122: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 122); case 128: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 128); { yymsp[-14].minor.yy0 = yymsp[-1].minor.yy0; } break; case 73: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ case 74: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 74); case 79: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 79); case 80: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 80); case 87: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 87); case 88: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 88); case 93: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 93); case 94: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 94); case 105: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 105); case 106: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 106); case 111: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 111); case 112: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 112); case 123: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 123); case 124: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 124); case 129: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 129); case 130: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 130); { yymsp[-12].minor.yy0 = (void *) geoJSON_setSrid ((gaiaGeomCollPtr) yymsp[-1]. minor.yy0, (int *) yymsp[-5].minor.yy0); } break; case 75: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ case 76: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 76); case 81: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 81); case 82: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 82); case 89: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 89); case 90: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 90); case 95: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 95); case 96: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 96); case 107: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 107); case 108: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 108); case 113: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 113); case 114: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 114); case 125: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 125); case 126: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 126); case 131: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 131); case 132: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 132); { yymsp[-18].minor.yy0 = (void *) geoJSON_setSrid ((gaiaGeomCollPtr) yymsp[-1]. minor.yy0, (int *) yymsp[-11].minor.yy0); } break; case 83: /* multipoint_text ::= GEOJSON_OPEN_BRACKET point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multipoint_xy (p_data, (gaiaPointPtr) yymsp[-2].minor.yy0); } break; case 84: /* multipoint_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multipoint_xyz (p_data, (gaiaPointPtr) yymsp[-2].minor.yy0); } break; case 97: /* multilinestring_text ::= GEOJSON_OPEN_BRACKET linestring_text multilinestring_text2 GEOJSON_CLOSE_BRACKET */ { ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multilinestring_xy (p_data, (gaiaLinestringPtr) yymsp[-2].minor.yy0); } break; case 99: /* multilinestring_text2 ::= GEOJSON_COMMA linestring_text multilinestring_text2 */ case 102: /* multilinestring_textz2 ::= GEOJSON_COMMA linestring_textz multilinestring_textz2 */ yytestcase (yyruleno == 102); { ((gaiaLinestringPtr) yymsp[-1].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 100: /* multilinestring_textz ::= GEOJSON_OPEN_BRACKET linestring_textz multilinestring_textz2 GEOJSON_CLOSE_BRACKET */ { ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multilinestring_xyz (p_data, (gaiaLinestringPtr) yymsp[-2].minor.yy0); } break; case 115: /* multipolygon_text ::= GEOJSON_OPEN_BRACKET polygon_text multipolygon_text2 GEOJSON_CLOSE_BRACKET */ { ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multipolygon_xy (p_data, (gaiaPolygonPtr) yymsp[-2].minor.yy0); } break; case 117: /* multipolygon_text2 ::= GEOJSON_COMMA polygon_text multipolygon_text2 */ case 120: /* multipolygon_textz2 ::= GEOJSON_COMMA polygon_textz multipolygon_textz2 */ yytestcase (yyruleno == 120); { ((gaiaPolygonPtr) yymsp[-1].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 118: /* multipolygon_textz ::= GEOJSON_OPEN_BRACKET polygon_textz multipolygon_textz2 GEOJSON_CLOSE_BRACKET */ { ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_multipolygon_xyz (p_data, (gaiaPolygonPtr) yymsp[-2].minor.yy0); } break; case 127: /* geocollz ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz */ { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 133: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_point geocoll_text2 GEOJSON_CLOSE_BRACKET */ case 134: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_linestring geocoll_text2 GEOJSON_CLOSE_BRACKET */ yytestcase (yyruleno == 134); case 135: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_polygon geocoll_text2 GEOJSON_CLOSE_BRACKET */ yytestcase (yyruleno == 135); { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_geomColl_xy (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; case 137: /* geocoll_text2 ::= GEOJSON_COMMA coll_point geocoll_text2 */ case 138: /* geocoll_text2 ::= GEOJSON_COMMA coll_linestring geocoll_text2 */ yytestcase (yyruleno == 138); case 139: /* geocoll_text2 ::= GEOJSON_COMMA coll_polygon geocoll_text2 */ yytestcase (yyruleno == 139); case 144: /* geocoll_textz2 ::= GEOJSON_COMMA coll_pointz geocoll_textz2 */ yytestcase (yyruleno == 144); case 145: /* geocoll_textz2 ::= GEOJSON_COMMA coll_linestringz geocoll_textz2 */ yytestcase (yyruleno == 145); case 146: /* geocoll_textz2 ::= GEOJSON_COMMA coll_polygonz geocoll_textz2 */ yytestcase (yyruleno == 146); { ((gaiaGeomCollPtr) yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 140: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_pointz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ case 141: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_linestringz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ yytestcase (yyruleno == 141); case 142: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_polygonz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ yytestcase (yyruleno == 142); { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) geoJSON_geomColl_xyz (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; case 147: /* coll_point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ case 148: /* coll_pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 148); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromPoint (p_data, (gaiaPointPtr) yymsp[-1]. minor.yy0); } break; case 149: /* coll_linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ case 150: /* coll_linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 150); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromLinestring (p_data, (gaiaLinestringPtr) yymsp[-1].minor.yy0); } break; case 151: /* coll_polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ case 152: /* coll_polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase (yyruleno == 152); { yymsp[-8].minor.yy0 = geoJSON_buildGeomFromPolygon (p_data, (gaiaPolygonPtr) yymsp[-1].minor.yy0); } break; default: /* (153) main ::= in */ yytestcase (yyruleno == 153); /* (154) in ::= */ yytestcase (yyruleno == 154); /* (155) in ::= in state GEOJSON_NEWLINE */ yytestcase (yyruleno == 155); /* (156) state ::= program (OPTIMIZED OUT) */ assert (yyruleno != 156); /* (157) program ::= geo_text (OPTIMIZED OUT) */ assert (yyruleno != 157); /* (158) bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord */ yytestcase (yyruleno == 158); break; /********** End reduce actions ************************************************/ }; assert (yyruleno < sizeof (yyRuleInfo) / sizeof (yyRuleInfo[0])); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action (yymsp[yysize].stateno, (YYCODETYPE) yygoto); /* There are no SHIFTREDUCE actions on nonterminals because the table ** generator has simplified them to pure REDUCE actions. */ assert (!(yyact > YY_MAX_SHIFT && yyact <= YY_MAX_SHIFTREDUCE)); /* It is not possible for a REDUCE to be followed by an error */ assert (yyact != YY_ERROR_ACTION); yymsp += yysize + 1; yypParser->yytos = yymsp; yymsp->stateno = (YYACTIONTYPE) yyact; yymsp->major = (YYCODETYPE) yygoto; yyTraceShift (yypParser, yyact, "... then shift"); } /* ** The following code executes when the parse fails */ #ifndef YYNOERRORRECOVERY static void yy_parse_failed (yyParser * yypParser /* The parser */ ) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt); } #endif while (yypParser->yytos > yypParser->yystack) yy_pop_parser_stack (yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } #endif /* YYNOERRORRECOVERY */ /* ** The following code executes when a syntax error first occurs. */ static void yy_syntax_error (yyParser * yypParser, /* The parser */ int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ) { ParseARG_FETCH; #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ /* ** when the LEMON parser encounters an error ** then this global variable is set */ p_data->geoJson_parse_error = 1; p_data->result = NULL; /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* ** The following is executed when the parser accepts */ static void yy_accept (yyParser * yypParser /* The parser */ ) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt); } #endif #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif assert (yypParser->yytos == yypParser->yystack); /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ /*********** End %parse_accept code *******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* The main parser program. ** The first argument is a pointer to a structure obtained from ** "ParseAlloc" which describes the current state of the parser. ** The second argument is the major token number. The third is ** the minor token. The fourth optional argument is whatever the ................................................................................ ** <li> The minor token number. ** <li> An option argument of a grammar-specified type. ** </ul> ** ** Outputs: ** None. */ void Parse (void *yyp, /* The parser */ int yymajor, /* The major token code number */ ParseTOKENTYPE yyminor /* The value for the token */ ParseARG_PDECL /* Optional %extra_argument parameter */ ) { YYMINORTYPE yyminorunion; unsigned int yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif yyParser *yypParser; /* The parser */ yypParser = (yyParser *) yyp; assert (yypParser->yytos != 0); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor == 0); #endif ParseARG_STORE; #ifndef NDEBUG if (yyTraceFILE) { int stateno = yypParser->yytos->stateno; if (stateno < YY_MIN_REDUCE) { fprintf (yyTraceFILE, "%sInput '%s' in state %d\n", yyTracePrompt, yyTokenName[yymajor], stateno); } else { fprintf (yyTraceFILE, "%sInput '%s' with pending reduce %d\n", yyTracePrompt, yyTokenName[yymajor], stateno - YY_MIN_REDUCE); } } #endif do { yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor); if (yyact >= YY_MIN_REDUCE) { yy_reduce (yypParser, yyact - YY_MIN_REDUCE, yymajor, yyminor); } else if (yyact <= YY_MAX_SHIFTREDUCE) { yy_shift (yypParser, yyact, yymajor, yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif yymajor = YYNOCODE; } else if (yyact == YY_ACCEPT_ACTION) { yypParser->yytos--; yy_accept (yypParser); return; } else { assert (yyact == YY_ERROR_ACTION); yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt); } #endif #ifdef YYERRORSYMBOL /* A syntax error has occurred. ** The response to an error depends upon whether or not the ** grammar defines an error token "ERROR". ** ** This is what we do if the grammar does define ERROR: ** ** * Call the %syntax_error function. ** ** * Begin popping the stack until we enter a state where ** it is legal to shift the error symbol, then shift ** the error symbol. ** ** * Set the error count to three. ** ** * Begin accepting and shifting new tokens. No new error ** processing will occur until three tokens have been ** shifted successfully. ** */ if (yypParser->yyerrcnt < 0) { yy_syntax_error (yypParser, yymajor, yyminor); } yymx = yypParser->yytos->major; if (yymx == YYERRORSYMBOL || yyerrorhit) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sDiscard input token %s\n", yyTracePrompt, yyTokenName[yymajor]); } #endif yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yymajor = YYNOCODE; } else { while (yypParser->yytos >= yypParser->yystack && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action (yypParser-> yytos->stateno, YYERRORSYMBOL)) >= YY_MIN_REDUCE) { yy_pop_parser_stack (yypParser); } if (yypParser->yytos < yypParser->yystack || yymajor == 0) { yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yy_parse_failed (yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif yymajor = YYNOCODE; } else if (yymx != YYERRORSYMBOL) { yy_shift (yypParser, yyact, YYERRORSYMBOL, yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax ** error routine and continue going as if nothing had happened. ** ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ yy_syntax_error (yypParser, yymajor, yyminor); yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yymajor = YYNOCODE; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** ** * Report an error message, and throw away the input token. ** ** * If the input token is $, then fail the parse. ** ** As before, subsequent error messages are suppressed until ** three input tokens have been successfully shifted. */ if (yypParser->yyerrcnt <= 0) { yy_syntax_error (yypParser, yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); if (yyendofinput) { yy_parse_failed (yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif } yymajor = YYNOCODE; #endif } } while (yymajor != YYNOCODE && yypParser->yytos > yypParser->yystack); #ifndef NDEBUG if (yyTraceFILE) { yyStackEntry *i; char cDiv = '['; fprintf (yyTraceFILE, "%sReturn. Stack=", yyTracePrompt); for (i = &yypParser->yystack[1]; i <= yypParser->yytos; i++) { fprintf (yyTraceFILE, "%c%s", cDiv, yyTokenName[i->major]); cDiv = ' '; } fprintf (yyTraceFILE, "]\n"); } #endif return; } |
Changes to src/gaiageo/gg_advanced.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_advanced.c -- Gaia advanced geometric operations version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_advanced.c -- Gaia advanced geometric operations version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_endian.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_endian.c -- Gaia functions for litte/big endian values handling version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_endian.c -- Gaia functions for litte/big endian values handling version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_ewkt.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 |
/* gg_ewkt.c -- EWKT parser/lexer version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2011-2015 the Initial Developer. All Rights Reserved. Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only ................................................................................ * Creates a 4D (xyz) point with an m value which is a part of the linear reference system. This is a parser helper * function which is called when *4Dcoordinates with an m value are encountered * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. * Parameter m is a pointer to a double which represents the part of the linear reference system. * Returns a gaiaPointPtr pointing the created 4D point with an m value. */ gaiaPointPtr ewkt_point_xyzm (struct ewkt_data * p_data, double *x, double *y, double *z, double *m) { gaiaPointPtr pt = gaiaAllocPointXYZM (*x, *y, *z, *m); ewktMapDynAlloc (p_data, EWKT_DYN_POINT, pt); return pt; } |
| | | |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 |
/* gg_ewkt.c -- EWKT parser/lexer version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2011-2020 the Initial Developer. All Rights Reserved. Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only ................................................................................ * Creates a 4D (xyz) point with an m value which is a part of the linear reference system. This is a parser helper * function which is called when *4Dcoordinates with an m value are encountered * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. * Parameter m is a pointer to a double which represents the part of the linear reference system. * Returns a gaiaPointPtr pointing the created 4D point with an m value. */ gaiaPointPtr ewkt_point_xyzm (struct ewkt_data *p_data, double *x, double *y, double *z, double *m) { gaiaPointPtr pt = gaiaAllocPointXYZM (*x, *y, *z, *m); ewktMapDynAlloc (p_data, EWKT_DYN_POINT, pt); return pt; } |
Changes to src/gaiageo/gg_extras.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_extras.c -- Gaia extra functions support version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2012-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_extras.c -- Gaia extra functions support version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2012-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_geoJSON.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .... 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 .... 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 |
/* gg_geoJSON.c -- GeoJSON parser/lexer version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2011-2015 the Initial Developer. All Rights Reserved. Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only ................................................................................ /* hi-priority: searching for GeometryCollection */ if (i_type < 0 && (i + 6) < len && strncmp (dirty + i, "\"type\"", 6) == 0) { if (geoJSONcheckGeomCollType (dirty, i + 6)) i_type = i; } } for (i = 0; i < len; i++) { /* searching the start index for each item */ if (*(dirty + i) == '}') i_end = i; if (i_type < 0 && (i + 6) < len ................................................................................ if (i_crs < 0 && (i + 5) < len && strncmp (dirty + i, "\"crs\"", 5) == 0) i_crs = i; if (i_bbox < 0 && (i + 6) < len && strncmp (dirty + i, "\"bbox\"", 6) == 0) i_bbox = i; } if (i_geometries >= 0) i_coordinates = i_geometries; n_type = geoJSONlen (i_type, i_coordinates, i_crs, i_bbox, i_end, len); n_coordinates = geoJSONlen (i_coordinates, i_type, i_crs, i_bbox, i_end, len); n_crs = geoJSONlen (i_crs, i_coordinates, i_type, i_bbox, i_end, len); n_bbox = geoJSONlen (i_bbox, i_coordinates, i_type, i_crs, i_end, len); clean = malloc (len + 1); |
| | | | | |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .... 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 .... 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 |
/* gg_geoJSON.c -- GeoJSON parser/lexer version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2011-2020 the Initial Developer. All Rights Reserved. Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only ................................................................................ /* hi-priority: searching for GeometryCollection */ if (i_type < 0 && (i + 6) < len && strncmp (dirty + i, "\"type\"", 6) == 0) { if (geoJSONcheckGeomCollType (dirty, i + 6)) i_type = i; } } for (i = 0; i < len; i++) { /* searching the start index for each item */ if (*(dirty + i) == '}') i_end = i; if (i_type < 0 && (i + 6) < len ................................................................................ if (i_crs < 0 && (i + 5) < len && strncmp (dirty + i, "\"crs\"", 5) == 0) i_crs = i; if (i_bbox < 0 && (i + 6) < len && strncmp (dirty + i, "\"bbox\"", 6) == 0) i_bbox = i; } if (i_geometries >= 0) i_coordinates = i_geometries; n_type = geoJSONlen (i_type, i_coordinates, i_crs, i_bbox, i_end, len); n_coordinates = geoJSONlen (i_coordinates, i_type, i_crs, i_bbox, i_end, len); n_crs = geoJSONlen (i_crs, i_coordinates, i_type, i_bbox, i_end, len); n_bbox = geoJSONlen (i_bbox, i_coordinates, i_type, i_crs, i_end, len); clean = malloc (len + 1); |
Changes to src/gaiageo/gg_geodesic.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_geodesic.c -- Gaia functions for geodesic calculations version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Charles Karney <charles@karney.com> Mark Johnson <mj10777@googlemail.com> Alternatively, the contents of this file may be used under the terms of |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_geodesic.c -- Gaia functions for geodesic calculations version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Charles Karney <charles@karney.com> Mark Johnson <mj10777@googlemail.com> Alternatively, the contents of this file may be used under the terms of |
Changes to src/gaiageo/gg_geometries.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_geometries.c -- Gaia geometric objects version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_geometries.c -- Gaia geometric objects version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_geoscvt.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_geoscvt.c -- Gaia / GEOS conversion [Geometry] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_geoscvt.c -- Gaia / GEOS conversion [Geometry] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_gml.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_gml.c -- GML parser/lexer version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2011-2015 the Initial Developer. All Rights Reserved. Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_gml.c -- GML parser/lexer version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2011-2020 the Initial Developer. All Rights Reserved. Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only |
Changes to src/gaiageo/gg_kml.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_kml.c -- KML parser/lexer version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2011-2015 the Initial Developer. All Rights Reserved. Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_kml.c -- KML parser/lexer version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2011-2020 the Initial Developer. All Rights Reserved. Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only |
Changes to src/gaiageo/gg_matrix.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_matrix.c -- Gaia Affine Transform Matrix support version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2012-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_matrix.c -- Gaia Affine Transform Matrix support version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2012-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_relations.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_relations.c -- Gaia spatial relations version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_relations.c -- Gaia spatial relations version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_relations_ext.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_relations_ext.c -- Gaia spatial relations [advanced] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_relations_ext.c -- Gaia spatial relations [advanced] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_rttopo.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_rttopo.c -- Gaia RTTOPO support version 4.5, 2016 April 18 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2012-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_rttopo.c -- Gaia RTTOPO support version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2012-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_shape.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_shape.c -- Gaia shapefile handling version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_shape.c -- Gaia shapefile handling version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_transform.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_transform.c -- Gaia PROJ.4 wrapping version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_transform.c -- Gaia PROJ.4 wrapping version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_vanuatu.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 |
/* gg_vanuatu.c -- WKT parser/lexer version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. The Vanuatu Team - University of Toronto - Supervisor: Greg Wilson gvwilson@cs.toronto.ca Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or ................................................................................ * Creates a 4D (xyz) point with an m value which is a part of the linear reference system. This is a parser helper * function which is called when *4Dcoordinates with an m value are encountered * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. * Parameter m is a pointer to a double which represents the part of the linear reference system. * Returns a gaiaPointPtr pointing the created 4D point with an m value. */ gaiaPointPtr vanuatu_point_xyzm (struct vanuatu_data * p_data, double *x, double *y, double *z, double *m) { gaiaPointPtr pt = gaiaAllocPointXYZM (*x, *y, *z, *m); vanuatuMapDynAlloc (p_data, VANUATU_DYN_POINT, pt); return pt; } |
| | | |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 |
/* gg_vanuatu.c -- WKT parser/lexer version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. The Vanuatu Team - University of Toronto - Supervisor: Greg Wilson gvwilson@cs.toronto.ca Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or ................................................................................ * Creates a 4D (xyz) point with an m value which is a part of the linear reference system. This is a parser helper * function which is called when *4Dcoordinates with an m value are encountered * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. * Parameter m is a pointer to a double which represents the part of the linear reference system. * Returns a gaiaPointPtr pointing the created 4D point with an m value. */ gaiaPointPtr vanuatu_point_xyzm (struct vanuatu_data *p_data, double *x, double *y, double *z, double *m) { gaiaPointPtr pt = gaiaAllocPointXYZM (*x, *y, *z, *m); vanuatuMapDynAlloc (p_data, VANUATU_DYN_POINT, pt); return pt; } |
Changes to src/gaiageo/gg_voronoj.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_voronoj.c -- Voronoj Diagram implementation version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_voronoj.c -- Voronoj Diagram implementation version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_wkb.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_wkb.c -- Gaia common support for WKB encoded geometries version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_wkb.c -- Gaia common support for WKB encoded geometries version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/gaiageo/gg_wkt.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_wkt.c -- Gaia common support for WKT encoded geometries version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Klaus Foerster klaus.foerster@svg.cc Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gg_wkt.c -- Gaia common support for WKT encoded geometries version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Klaus Foerster klaus.foerster@svg.cc Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/gaiageo/gg_xml.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .... 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 .... 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 .... 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 .... 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 .... 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 |
/* gg_xml.c -- XML Document implementation version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ } node = node->next; } } static void retrieve_map_config_identifiers (xmlDocPtr xml_doc, char **name, char **title, char **abstract) { /* / attempting to retrieve the Name, Title and Abstract items / from a Map Config document */ xmlNodePtr root = xmlDocGetRootElement (xml_doc); char *string; ................................................................................ retrieve_iso_identifiers (xml_doc, &fileIdentifier, &parentIdentifier, &title, &abstract, &geometry, &geometry_len); if (is_sld_style) retrieve_sld_identifiers (xml_doc, &name, &title, &abstract); else if (is_sld_se_vector_style || is_sld_se_raster_style) retrieve_sld_se_identifiers (xml_doc, &name, &title, &abstract); else if (is_map_config) retrieve_map_config_identifiers(xml_doc, &name, &title, &abstract); xmlFreeDoc (xml_doc); if (compressed) { /* compressing the XML payload */ uLong zLen = compressBound (xml_len); zip_buf = malloc (zLen); ................................................................................ int iso_metadata = 0; unsigned char flag; /* validity check */ if (!gaiaIsValidXmlBlob (blob, blob_size)) return -1; /* cannot be an XmlBLOB */ flag = *(blob + 1); if (((flag & GAIA_XML_ISO_METADATA) == GAIA_XML_ISO_METADATA) && ((flag & GAIA_XML_MAP_CONFIG) != GAIA_XML_MAP_CONFIG)) iso_metadata = 1; return iso_metadata; } GAIAGEO_DECLARE int gaiaIsSldSeVectorStyleXmlBlob (const unsigned char *blob, int blob_size) { ................................................................................ int sld_se_style = 0; unsigned char flag; /* validity check */ if (!gaiaIsValidXmlBlob (blob, blob_size)) return -1; /* cannot be an XmlBLOB */ flag = *(blob + 1); if (((flag & GAIA_XML_SLD_SE_VECTOR_STYLE) == GAIA_XML_SLD_SE_VECTOR_STYLE) && ((flag & GAIA_XML_SLD_STYLE) != GAIA_XML_SLD_STYLE)) sld_se_style = 1; return sld_se_style; } GAIAGEO_DECLARE int gaiaIsSldSeRasterStyleXmlBlob (const unsigned char *blob, int blob_size) { ................................................................................ int gpx = 0; unsigned char flag; /* validity check */ if (!gaiaIsValidXmlBlob (blob, blob_size)) return -1; /* cannot be an XmlBLOB */ flag = *(blob + 1); if (((flag & GAIA_XML_GPX) == GAIA_XML_GPX) && ((flag & GAIA_XML_MAP_CONFIG) != GAIA_XML_MAP_CONFIG)) gpx = 1; return gpx; } GAIAGEO_DECLARE int gaiaXmlBlobGetDocumentSize (const unsigned char *blob, int blob_size) { |
| | | | | | > | > > | |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .... 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 .... 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 .... 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 .... 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 .... 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 |
/* gg_xml.c -- XML Document implementation version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ } node = node->next; } } static void retrieve_map_config_identifiers (xmlDocPtr xml_doc, char **name, char **title, char **abstract) { /* / attempting to retrieve the Name, Title and Abstract items / from a Map Config document */ xmlNodePtr root = xmlDocGetRootElement (xml_doc); char *string; ................................................................................ retrieve_iso_identifiers (xml_doc, &fileIdentifier, &parentIdentifier, &title, &abstract, &geometry, &geometry_len); if (is_sld_style) retrieve_sld_identifiers (xml_doc, &name, &title, &abstract); else if (is_sld_se_vector_style || is_sld_se_raster_style) retrieve_sld_se_identifiers (xml_doc, &name, &title, &abstract); else if (is_map_config) retrieve_map_config_identifiers (xml_doc, &name, &title, &abstract); xmlFreeDoc (xml_doc); if (compressed) { /* compressing the XML payload */ uLong zLen = compressBound (xml_len); zip_buf = malloc (zLen); ................................................................................ int iso_metadata = 0; unsigned char flag; /* validity check */ if (!gaiaIsValidXmlBlob (blob, blob_size)) return -1; /* cannot be an XmlBLOB */ flag = *(blob + 1); if (((flag & GAIA_XML_ISO_METADATA) == GAIA_XML_ISO_METADATA) && ((flag & GAIA_XML_MAP_CONFIG) != GAIA_XML_MAP_CONFIG)) iso_metadata = 1; return iso_metadata; } GAIAGEO_DECLARE int gaiaIsSldSeVectorStyleXmlBlob (const unsigned char *blob, int blob_size) { ................................................................................ int sld_se_style = 0; unsigned char flag; /* validity check */ if (!gaiaIsValidXmlBlob (blob, blob_size)) return -1; /* cannot be an XmlBLOB */ flag = *(blob + 1); if (((flag & GAIA_XML_SLD_SE_VECTOR_STYLE) == GAIA_XML_SLD_SE_VECTOR_STYLE) && ((flag & GAIA_XML_SLD_STYLE) != GAIA_XML_SLD_STYLE)) sld_se_style = 1; return sld_se_style; } GAIAGEO_DECLARE int gaiaIsSldSeRasterStyleXmlBlob (const unsigned char *blob, int blob_size) { ................................................................................ int gpx = 0; unsigned char flag; /* validity check */ if (!gaiaIsValidXmlBlob (blob, blob_size)) return -1; /* cannot be an XmlBLOB */ flag = *(blob + 1); if (((flag & GAIA_XML_GPX) == GAIA_XML_GPX) && ((flag & GAIA_XML_MAP_CONFIG) != GAIA_XML_MAP_CONFIG)) gpx = 1; return gpx; } GAIAGEO_DECLARE int gaiaXmlBlobGetDocumentSize (const unsigned char *blob, int blob_size) { |
Changes to src/gaiageo/lex.Ewkt.c.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .. 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 ... 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 ... 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 ... 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 ... 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 ... 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 ... 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 ... 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 ... 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 ... 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 ... 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 ... 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 ... 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 ... 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 ... 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 .... 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 .... 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 .... 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 .... 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 .... 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 .... 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 .... 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 .... 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 .... 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 .... 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 .... 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 .... 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 .... 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 .... 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 .... 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 .... 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 .... 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 |
#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include <stdio.h> #include <string.h> #include <errno.h> ................................................................................ #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif ................................................................................ #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE Ewktrestart(yyin ,yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ................................................................................ #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; ................................................................................ * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; ................................................................................ /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via Ewktrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ ................................................................................ * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void Ewktrestart (FILE *input_file ,yyscan_t yyscanner ); void Ewkt_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE Ewkt_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void Ewkt_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void Ewkt_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void Ewktpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void Ewktpop_buffer_state (yyscan_t yyscanner ); static void Ewktensure_buffer_stack (yyscan_t yyscanner ); static void Ewkt_load_buffer_state (yyscan_t yyscanner ); static void Ewkt_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); #define YY_FLUSH_BUFFER Ewkt_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) YY_BUFFER_STATE Ewkt_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE Ewkt_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE Ewkt_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); void *Ewktalloc (yy_size_t ,yyscan_t yyscanner ); void *Ewktrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void Ewktfree (void * ,yyscan_t yyscanner ); #define yy_new_buffer Ewkt_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ Ewktensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ Ewkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ Ewktensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ Ewkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef unsigned char YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 22 #define YY_END_OF_BUFFER 23 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[150] = { 0, 0, 0, 23, 21, 19, 20, 3, 4, 21, 2, 21, 1, 1, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ................................................................................ 0, 6, 0, 1, 1, 1, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 7, 0, 11, 0, 0, 8, 0, 12, 0, 0, 0, 15, 0, 0, 16, 0, 0, 0, 13, 0, 14, 0, 17, 18, 0 } ; static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 6, 7, 8, 9, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, ................................................................................ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst YY_CHAR yy_meta[39] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_uint16_t yy_base[150] = { 0, 0, 0, 284, 285, 285, 285, 285, 285, 30, 285, 32, 273, 34, 33, 33, 25, 31, 272, 41, 271, 45, 46, 270, 56, 67, 46, 52, 55, 65, 64, 269, 79, 76, 268, 89, 90, 91, 267, 266, 265, 75, 80, 82, 90, 84, 103, 100, 264, 263, 262, 117, 104, 261, 260, 259, 258, 257, 256, 123, 255, ................................................................................ 139, 285, 142, 109, 105, 71, 42, 136, 147, 146, 164, 152, 161, 159, 168, 164, 159, 285, 166, 172, 166, 166, 176, 176, 180, 178, 188, 188, 192, 285, 188, 285, 192, 199, 198, 197, 204, 199, 285, 195, 206, 210, 212, 214, 285, 217, 219, 285, 285 } ; static yyconst flex_int16_t yy_def[150] = { 0, 149, 1, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, ................................................................................ 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 0 } ; static yyconst flex_uint16_t yy_nxt[324] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 4, 4, 14, 4, 15, 16, 4, 4, 17, 4, 4, 4, 4, 4, 4, 4, 14, 4, 15, 16, 4, 4, 17, 4, 4, 4, 4, 4, 18, 19, 20, 21, 23, 24, 26, 25, 27, 28, 29, 31, 19, 107, 32, 34, 21, 22, 35, 36, 26, 25, ................................................................................ 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149 } ; static yyconst flex_int16_t yy_chk[324] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 11, 11, 13, 13, 14, 13, 15, 16, 17, 19, 19, 107, 19, 21, 21, 22, 21, 22, 14, 13, ................................................................................ char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals (yyscan_t yyscanner ); int Ewktlex_init (yyscan_t* scanner); int Ewktlex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int Ewktlex_destroy (yyscan_t yyscanner ); int Ewktget_debug (yyscan_t yyscanner ); void Ewktset_debug (int debug_flag ,yyscan_t yyscanner ); YY_EXTRA_TYPE Ewktget_extra (yyscan_t yyscanner ); void Ewktset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *Ewktget_in (yyscan_t yyscanner ); void Ewktset_in (FILE * _in_str ,yyscan_t yyscanner ); FILE *Ewktget_out (yyscan_t yyscanner ); void Ewktset_out (FILE * _out_str ,yyscan_t yyscanner ); int Ewktget_leng (yyscan_t yyscanner ); char *Ewktget_text (yyscan_t yyscanner ); int Ewktget_lineno (yyscan_t yyscanner ); void Ewktset_lineno (int _line_number ,yyscan_t yyscanner ); int Ewktget_column (yyscan_t yyscanner ); void Ewktset_column (int _column_no ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int Ewktwrap (yyscan_t yyscanner ); #else extern int Ewktwrap (yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner ); #else static int input (yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ ................................................................................ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int Ewktlex (yyscan_t yyscanner); #define YY_DECL int Ewktlex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION ................................................................................ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { Ewktensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = Ewkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } Ewkt_load_buffer_state(yyscanner ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 150 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 285 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) ................................................................................ YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * Ewktlex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; ................................................................................ else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( Ewktwrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the ................................................................................ default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of Ewktlex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; yy_size_t number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) ................................................................................ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF ................................................................................ if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ Ewktrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ,yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( ................................................................................ } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; Ewktrestart(yyin ,yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((int) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) Ewktrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 150 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 150 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 149); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT ................................................................................ */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a ................................................................................ * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ Ewktrestart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( Ewktwrap(yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else ................................................................................ #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void Ewktrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ Ewktensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = Ewkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } Ewkt_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); Ewkt_load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void Ewkt_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * Ewktpop_buffer_state(); * Ewktpush_buffer_state(new_buffer); */ Ewktensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; Ewkt_load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during * EOF (Ewktwrap()) processing, but the only time this flag * is looked at is after Ewktwrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void Ewkt_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } ................................................................................ /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE Ewkt_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) Ewktalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in Ewkt_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) Ewktalloc((yy_size_t) (b->yy_buf_size + 2) ,yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in Ewkt_create_buffer()" ); b->yy_is_our_buffer = 1; Ewkt_init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with Ewkt_create_buffer() * @param yyscanner The scanner object. */ void Ewkt_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) Ewktfree((void *) b->yy_ch_buf ,yyscanner ); Ewktfree((void *) b ,yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a Ewktrestart() or at EOF. */ static void Ewkt_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; Ewkt_flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then Ewkt_init_buffer was _probably_ * called from Ewktrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } ................................................................................ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void Ewkt_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; ................................................................................ b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) Ewkt_load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void Ewktpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; Ewktensure_buffer_stack(yyscanner); /* This block is copied from Ewkt_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from Ewkt_switch_to_buffer. */ Ewkt_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void Ewktpop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; Ewkt_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { Ewkt_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void Ewktensure_buffer_stack (yyscan_t yyscanner) { int num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)Ewktalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in Ewktensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)Ewktrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in Ewktensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE Ewkt_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) Ewktalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in Ewkt_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; Ewkt_switch_to_buffer(b ,yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to Ewktlex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * Ewkt_scan_bytes() instead. */ YY_BUFFER_STATE Ewkt_scan_string (yyconst char * yystr , yyscan_t yyscanner) { return Ewkt_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to Ewktlex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE Ewkt_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) _yybytes_len + 2; buf = (char *) Ewktalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in Ewkt_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = Ewkt_scan_buffer(buf,n ,yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in Ewkt_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ ................................................................................ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE Ewktget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int Ewktget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int Ewktget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *Ewktget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *Ewktget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int Ewktget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *Ewktget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void Ewktset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void Ewktset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "Ewktset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void Ewktset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "Ewktset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see Ewkt_switch_to_buffer */ void Ewktset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void Ewktset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int Ewktget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void Ewktset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* Ewktlex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int Ewktlex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) Ewktalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* Ewktlex_init_extra has the same functionality as Ewktlex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to Ewktalloc in * the yyextra field. */ int Ewktlex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; Ewktset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) Ewktalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); Ewktset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from Ewktlex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; ................................................................................ yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * Ewktlex_init() */ return 0; } /* Ewktlex_destroy is for both reentrant and non-reentrant scanners. */ int Ewktlex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ Ewkt_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; Ewktpop_buffer_state(yyscanner); } /* Destroy the stack itself. */ Ewktfree(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ Ewktfree(yyg->yy_start_stack ,yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * Ewktlex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ Ewktfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *Ewktalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *Ewktrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter ................................................................................ * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void Ewktfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see Ewktrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" int Ewktwrap(yyscan_t yyscanner ) { return 1; } |
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | < < | < < < | < | | < | | < > | | | | < | | | > | | | > > < < | < < < > | | < | < > < | | < | < | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | > | | | | > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | < | | | < | < | | | | | | | | | | | | | | | | | | | | | | | | | |
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 ... 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 ... 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 ... 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 ... 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 ... 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 ... 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 ... 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 ... 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 ... 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 ... 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 ... 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 ... 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 ... 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 .... 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 .... 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 .... 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 .... 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 .... 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 .... 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 .... 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 .... 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 .... 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 .... 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 .... 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 .... 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 .... 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 .... 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 .... 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 .... 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 .... 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 .... 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 .... 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 |
#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif #ifdef yy_create_buffer #define Ewkt_create_buffer_ALREADY_DEFINED #else #define yy_create_buffer Ewkt_create_buffer #endif #ifdef yy_delete_buffer #define Ewkt_delete_buffer_ALREADY_DEFINED #else #define yy_delete_buffer Ewkt_delete_buffer #endif #ifdef yy_scan_buffer #define Ewkt_scan_buffer_ALREADY_DEFINED #else #define yy_scan_buffer Ewkt_scan_buffer #endif #ifdef yy_scan_string #define Ewkt_scan_string_ALREADY_DEFINED #else #define yy_scan_string Ewkt_scan_string #endif #ifdef yy_scan_bytes #define Ewkt_scan_bytes_ALREADY_DEFINED #else #define yy_scan_bytes Ewkt_scan_bytes #endif #ifdef yy_init_buffer #define Ewkt_init_buffer_ALREADY_DEFINED #else #define yy_init_buffer Ewkt_init_buffer #endif #ifdef yy_flush_buffer #define Ewkt_flush_buffer_ALREADY_DEFINED #else #define yy_flush_buffer Ewkt_flush_buffer #endif #ifdef yy_load_buffer_state #define Ewkt_load_buffer_state_ALREADY_DEFINED #else #define yy_load_buffer_state Ewkt_load_buffer_state #endif #ifdef yy_switch_to_buffer #define Ewkt_switch_to_buffer_ALREADY_DEFINED #else #define yy_switch_to_buffer Ewkt_switch_to_buffer #endif #ifdef yypush_buffer_state #define Ewktpush_buffer_state_ALREADY_DEFINED #else #define yypush_buffer_state Ewktpush_buffer_state #endif #ifdef yypop_buffer_state #define Ewktpop_buffer_state_ALREADY_DEFINED #else #define yypop_buffer_state Ewktpop_buffer_state #endif #ifdef yyensure_buffer_stack #define Ewktensure_buffer_stack_ALREADY_DEFINED #else #define yyensure_buffer_stack Ewktensure_buffer_stack #endif #ifdef yylex #define Ewktlex_ALREADY_DEFINED #else #define yylex Ewktlex #endif #ifdef yyrestart #define Ewktrestart_ALREADY_DEFINED #else #define yyrestart Ewktrestart #endif #ifdef yylex_init #define Ewktlex_init_ALREADY_DEFINED #else #define yylex_init Ewktlex_init #endif #ifdef yylex_init_extra #define Ewktlex_init_extra_ALREADY_DEFINED #else #define yylex_init_extra Ewktlex_init_extra #endif #ifdef yylex_destroy #define Ewktlex_destroy_ALREADY_DEFINED #else #define yylex_destroy Ewktlex_destroy #endif #ifdef yyget_debug #define Ewktget_debug_ALREADY_DEFINED #else #define yyget_debug Ewktget_debug #endif #ifdef yyset_debug #define Ewktset_debug_ALREADY_DEFINED #else #define yyset_debug Ewktset_debug #endif #ifdef yyget_extra #define Ewktget_extra_ALREADY_DEFINED #else #define yyget_extra Ewktget_extra #endif #ifdef yyset_extra #define Ewktset_extra_ALREADY_DEFINED #else #define yyset_extra Ewktset_extra #endif #ifdef yyget_in #define Ewktget_in_ALREADY_DEFINED #else #define yyget_in Ewktget_in #endif #ifdef yyset_in #define Ewktset_in_ALREADY_DEFINED #else #define yyset_in Ewktset_in #endif #ifdef yyget_out #define Ewktget_out_ALREADY_DEFINED #else #define yyget_out Ewktget_out #endif #ifdef yyset_out #define Ewktset_out_ALREADY_DEFINED #else #define yyset_out Ewktset_out #endif #ifdef yyget_leng #define Ewktget_leng_ALREADY_DEFINED #else #define yyget_leng Ewktget_leng #endif #ifdef yyget_text #define Ewktget_text_ALREADY_DEFINED #else #define yyget_text Ewktget_text #endif #ifdef yyget_lineno #define Ewktget_lineno_ALREADY_DEFINED #else #define yyget_lineno Ewktget_lineno #endif #ifdef yyset_lineno #define Ewktset_lineno_ALREADY_DEFINED #else #define yyset_lineno Ewktset_lineno #endif #ifdef yyget_column #define Ewktget_column_ALREADY_DEFINED #else #define yyget_column Ewktget_column #endif #ifdef yyset_column #define Ewktset_column_ALREADY_DEFINED #else #define yyset_column Ewktset_column #endif #ifdef yywrap #define Ewktwrap_ALREADY_DEFINED #else #define yywrap Ewktwrap #endif #ifdef yyalloc #define Ewktalloc_ALREADY_DEFINED #else #define yyalloc Ewktalloc #endif #ifdef yyrealloc #define Ewktrealloc_ALREADY_DEFINED #else #define yyrealloc Ewktrealloc #endif #ifdef yyfree #define Ewktfree_ALREADY_DEFINED #else #define yyfree Ewktfree #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include <stdio.h> #include <string.h> #include <errno.h> ................................................................................ #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif ................................................................................ #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin , yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ................................................................................ #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; ................................................................................ * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; ................................................................................ /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ ................................................................................ * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void yyrestart ( FILE *input_file , yyscan_t yyscanner ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); void yypop_buffer_state ( yyscan_t yyscanner ); static void yyensure_buffer_stack ( yyscan_t yyscanner ); static void yy_load_buffer_state ( yyscan_t yyscanner ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); void *yyalloc ( yy_size_t , yyscan_t yyscanner ); void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); void yyfree ( void * , yyscan_t yyscanner ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef flex_uint8_t YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); static int yy_get_next_buffer ( yyscan_t yyscanner ); static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 22 #define YY_END_OF_BUFFER 23 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const flex_int16_t yy_accept[150] = { 0, 0, 0, 23, 21, 19, 20, 3, 4, 21, 2, 21, 1, 1, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ................................................................................ 0, 6, 0, 1, 1, 1, 1, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 7, 0, 11, 0, 0, 8, 0, 12, 0, 0, 0, 15, 0, 0, 16, 0, 0, 0, 13, 0, 14, 0, 17, 18, 0 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 6, 7, 8, 9, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, ................................................................................ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const YY_CHAR yy_meta[39] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const flex_int16_t yy_base[150] = { 0, 0, 0, 284, 285, 285, 285, 285, 285, 30, 285, 32, 273, 34, 33, 33, 25, 31, 272, 41, 271, 45, 46, 270, 56, 67, 46, 52, 55, 65, 64, 269, 79, 76, 268, 89, 90, 91, 267, 266, 265, 75, 80, 82, 90, 84, 103, 100, 264, 263, 262, 117, 104, 261, 260, 259, 258, 257, 256, 123, 255, ................................................................................ 139, 285, 142, 109, 105, 71, 42, 136, 147, 146, 164, 152, 161, 159, 168, 164, 159, 285, 166, 172, 166, 166, 176, 176, 180, 178, 188, 188, 192, 285, 188, 285, 192, 199, 198, 197, 204, 199, 285, 195, 206, 210, 212, 214, 285, 217, 219, 285, 285 } ; static const flex_int16_t yy_def[150] = { 0, 149, 1, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, ................................................................................ 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 0 } ; static const flex_int16_t yy_nxt[324] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 4, 4, 14, 4, 15, 16, 4, 4, 17, 4, 4, 4, 4, 4, 4, 4, 14, 4, 15, 16, 4, 4, 17, 4, 4, 4, 4, 4, 18, 19, 20, 21, 23, 24, 26, 25, 27, 28, 29, 31, 19, 107, 32, 34, 21, 22, 35, 36, 26, 25, ................................................................................ 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149 } ; static const flex_int16_t yy_chk[324] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 11, 11, 13, 13, 14, 13, 15, 16, 17, 19, 19, 107, 19, 21, 21, 22, 21, 22, 14, 13, ................................................................................ char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals ( yyscan_t yyscanner ); int yylex_init (yyscan_t* scanner); int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( yyscan_t yyscanner ); int yyget_debug ( yyscan_t yyscanner ); void yyset_debug ( int debug_flag , yyscan_t yyscanner ); YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); FILE *yyget_in ( yyscan_t yyscanner ); void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); FILE *yyget_out ( yyscan_t yyscanner ); void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); int yyget_leng ( yyscan_t yyscanner ); char *yyget_text ( yyscan_t yyscanner ); int yyget_lineno ( yyscan_t yyscanner ); void yyset_lineno ( int _line_number , yyscan_t yyscanner ); int yyget_column ( yyscan_t yyscanner ); void yyset_column ( int _column_no , yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( yyscan_t yyscanner ); #else extern int yywrap ( yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( yyscan_t yyscanner ); #else static int input ( yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ ................................................................................ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (yyscan_t yyscanner); #define YY_DECL int yylex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION ................................................................................ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_load_buffer_state( yyscanner ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 150 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 285 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) ................................................................................ YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; ................................................................................ else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( yywrap( yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the ................................................................................ default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) ................................................................................ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF ................................................................................ if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( ................................................................................ } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin , yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 150 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 150 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 149); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT ................................................................................ */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a ................................................................................ * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin , yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else ................................................................................ #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); yy_load_buffer_state( yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( yyscanner ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } ................................................................................ /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file , yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * @param yyscanner The scanner object. */ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree( (void *) b->yy_ch_buf , yyscanner ); yyfree( (void *) b , yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flush_buffer( b , yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } ................................................................................ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; ................................................................................ b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; yyensure_buffer_stack(yyscanner); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b , yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) { return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n , yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n , yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; spatialite_e("%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ ................................................................................ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *yyget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void yyset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void yyset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void yyset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int yyget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void yyset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* yylex_init_extra has the same functionality as yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; ................................................................................ yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ yyfree(yyg->yy_buffer_stack , yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ yyfree( yyg->yy_start_stack , yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter ................................................................................ * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" int yywrap(yyscan_t yyscanner ) { return 1; } |
Changes to src/gaiageo/lex.GeoJson.c.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .. 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 ... 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 ... 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 ... 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 ... 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 ... 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 ... 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 ... 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 ... 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 ... 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 ... 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 ... 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 ... 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 ... 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 ... 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 .... 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 .... 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 .... 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 .... 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 .... 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 .... 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 .... 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 .... 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 .... 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 .... 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 .... 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 .... 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 .... 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 .... 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 .... 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 .... 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 .... 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 |
#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include <stdio.h> #include <string.h> #include <errno.h> ................................................................................ #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif ................................................................................ #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE GeoJsonrestart(yyin ,yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ................................................................................ #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; ................................................................................ * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; ................................................................................ /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via GeoJsonrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ ................................................................................ * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void GeoJsonrestart (FILE *input_file ,yyscan_t yyscanner ); void GeoJson_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE GeoJson_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void GeoJson_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void GeoJson_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void GeoJsonpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void GeoJsonpop_buffer_state (yyscan_t yyscanner ); static void GeoJsonensure_buffer_stack (yyscan_t yyscanner ); static void GeoJson_load_buffer_state (yyscan_t yyscanner ); static void GeoJson_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); #define YY_FLUSH_BUFFER GeoJson_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) YY_BUFFER_STATE GeoJson_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE GeoJson_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE GeoJson_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); void *GeoJsonalloc (yy_size_t ,yyscan_t yyscanner ); void *GeoJsonrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void GeoJsonfree (void * ,yyscan_t yyscanner ); #define yy_new_buffer GeoJson_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ GeoJsonensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ GeoJson_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ GeoJsonensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ GeoJson_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef unsigned char YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 27 #define YY_END_OF_BUFFER 28 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[239] = { 0, 0, 0, 28, 26, 24, 25, 26, 26, 4, 26, 1, 1, 5, 8, 9, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, ................................................................................ 18, 0, 20, 0, 0, 12, 15, 0, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 3, 0 } ; static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 1, 1, ................................................................................ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst YY_CHAR yy_meta[41] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_uint16_t yy_base[240] = { 0, 0, 39, 302, 303, 303, 303, 68, 3, 303, 12, 292, 5, 303, 303, 303, 303, 303, 284, 275, 271, 261, 265, 274, 0, 270, 273, 259, 253, 257, 280, 14, 15, 279, 44, 50, 278, 52, 23, 269, 254, 254, 255, 7, 251, 250, 246, 248, 249, 246, 244, 245, 61, 265, 58, 63, 264, 86, 92, 93, 263, ................................................................................ 303, 116, 303, 118, 143, 303, 303, 136, 121, 117, 139, 303, 120, 119, 110, 303, 106, 103, 110, 101, 107, 129, 104, 76, 303, 84, 62, 61, 62, 37, 303, 12, 14, 120, 6, 128, 303, 303, 0 } ; static yyconst flex_int16_t yy_def[240] = { 0, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, ................................................................................ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 0, 238 } ; static yyconst flex_uint16_t yy_nxt[344] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 30, 31, 36, 37, 236, 32, 38, 14, 15, 33, 34, 53, 31, 234, 233, 54, 18, 60, 38, 61, 45, 62, 46, 67, 68, 175, 176, 54, 16, 17, 5, 6, 7, 8, 9, 10, 11, 12, 13, 162, 29, 56, 34, 232, 147, 57, 14, 15, 35, 36, ................................................................................ 35, 238, 3, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238 } ; static yyconst flex_int16_t yy_chk[344] = { 0, 239, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 12, 12, 235, 10, 12, 1, 1, 10, 10, 31, 31, 233, 232, 31, 32, 38, 12, 38, 24, 38, 24, 43, 43, 166, 166, 31, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 147, 32, 34, 34, 230, 147, 34, 2, 2, 35, 37, ................................................................................ char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals (yyscan_t yyscanner ); int GeoJsonlex_init (yyscan_t* scanner); int GeoJsonlex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int GeoJsonlex_destroy (yyscan_t yyscanner ); int GeoJsonget_debug (yyscan_t yyscanner ); void GeoJsonset_debug (int debug_flag ,yyscan_t yyscanner ); YY_EXTRA_TYPE GeoJsonget_extra (yyscan_t yyscanner ); void GeoJsonset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *GeoJsonget_in (yyscan_t yyscanner ); void GeoJsonset_in (FILE * _in_str ,yyscan_t yyscanner ); FILE *GeoJsonget_out (yyscan_t yyscanner ); void GeoJsonset_out (FILE * _out_str ,yyscan_t yyscanner ); int GeoJsonget_leng (yyscan_t yyscanner ); char *GeoJsonget_text (yyscan_t yyscanner ); int GeoJsonget_lineno (yyscan_t yyscanner ); void GeoJsonset_lineno (int _line_number ,yyscan_t yyscanner ); int GeoJsonget_column (yyscan_t yyscanner ); void GeoJsonset_column (int _column_no ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int GeoJsonwrap (yyscan_t yyscanner ); #else extern int GeoJsonwrap (yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner ); #else static int input (yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ ................................................................................ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int GeoJsonlex (yyscan_t yyscanner); #define YY_DECL int GeoJsonlex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION ................................................................................ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { GeoJsonensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = GeoJson_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } GeoJson_load_buffer_state(yyscanner ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 239 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 303 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) ................................................................................ YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * GeoJsonlex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; ................................................................................ else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( GeoJsonwrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the ................................................................................ default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of GeoJsonlex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; yy_size_t number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) ................................................................................ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF ................................................................................ if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ GeoJsonrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ,yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( ................................................................................ } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; GeoJsonrestart(yyin ,yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((int) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) GeoJsonrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 239 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 239 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 238); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT ................................................................................ */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a ................................................................................ * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ GeoJsonrestart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( GeoJsonwrap(yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else ................................................................................ #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void GeoJsonrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ GeoJsonensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = GeoJson_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } GeoJson_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); GeoJson_load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void GeoJson_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * GeoJsonpop_buffer_state(); * GeoJsonpush_buffer_state(new_buffer); */ GeoJsonensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; GeoJson_load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during * EOF (GeoJsonwrap()) processing, but the only time this flag * is looked at is after GeoJsonwrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void GeoJson_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } ................................................................................ /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE GeoJson_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) GeoJsonalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in GeoJson_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) GeoJsonalloc((yy_size_t) (b->yy_buf_size + 2) ,yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in GeoJson_create_buffer()" ); b->yy_is_our_buffer = 1; GeoJson_init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with GeoJson_create_buffer() * @param yyscanner The scanner object. */ void GeoJson_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) GeoJsonfree((void *) b->yy_ch_buf ,yyscanner ); GeoJsonfree((void *) b ,yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a GeoJsonrestart() or at EOF. */ static void GeoJson_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; GeoJson_flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then GeoJson_init_buffer was _probably_ * called from GeoJsonrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } ................................................................................ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void GeoJson_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; ................................................................................ b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) GeoJson_load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void GeoJsonpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; GeoJsonensure_buffer_stack(yyscanner); /* This block is copied from GeoJson_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from GeoJson_switch_to_buffer. */ GeoJson_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void GeoJsonpop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; GeoJson_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { GeoJson_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void GeoJsonensure_buffer_stack (yyscan_t yyscanner) { int num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)GeoJsonalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in GeoJsonensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)GeoJsonrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in GeoJsonensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE GeoJson_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) GeoJsonalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in GeoJson_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; GeoJson_switch_to_buffer(b ,yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to GeoJsonlex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * GeoJson_scan_bytes() instead. */ YY_BUFFER_STATE GeoJson_scan_string (yyconst char * yystr , yyscan_t yyscanner) { return GeoJson_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to GeoJsonlex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE GeoJson_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) _yybytes_len + 2; buf = (char *) GeoJsonalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in GeoJson_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = GeoJson_scan_buffer(buf,n ,yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in GeoJson_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ ................................................................................ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE GeoJsonget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int GeoJsonget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int GeoJsonget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *GeoJsonget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *GeoJsonget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int GeoJsonget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *GeoJsonget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void GeoJsonset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void GeoJsonset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "GeoJsonset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void GeoJsonset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "GeoJsonset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see GeoJson_switch_to_buffer */ void GeoJsonset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void GeoJsonset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int GeoJsonget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void GeoJsonset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* GeoJsonlex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int GeoJsonlex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) GeoJsonalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* GeoJsonlex_init_extra has the same functionality as GeoJsonlex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to GeoJsonalloc in * the yyextra field. */ int GeoJsonlex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; GeoJsonset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) GeoJsonalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); GeoJsonset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from GeoJsonlex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; ................................................................................ yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * GeoJsonlex_init() */ return 0; } /* GeoJsonlex_destroy is for both reentrant and non-reentrant scanners. */ int GeoJsonlex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ GeoJson_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; GeoJsonpop_buffer_state(yyscanner); } /* Destroy the stack itself. */ GeoJsonfree(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ GeoJsonfree(yyg->yy_start_stack ,yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * GeoJsonlex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ GeoJsonfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *GeoJsonalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *GeoJsonrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter ................................................................................ * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void GeoJsonfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see GeoJsonrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" int GeoJsonwrap(yyscan_t yyscanner ) { return 1; } |
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | < < | < < < | < | | < | | < > | | | | | < | > | | | | > > < < | < < < > | | < | < > < | | < | < | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | > | | | | > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | < | | | < | < | | | | | | | | | | | | | | | | | | | | | | | | | |
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 ... 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 ... 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 ... 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 ... 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 ... 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 ... 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 ... 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 ... 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 ... 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 ... 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 ... 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 ... 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 .... 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 .... 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 .... 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 .... 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 .... 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 .... 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 .... 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 .... 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 .... 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 .... 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 .... 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 .... 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 .... 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 .... 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 .... 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 .... 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 .... 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 .... 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 .... 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 .... 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 |
#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif #ifdef yy_create_buffer #define GeoJson_create_buffer_ALREADY_DEFINED #else #define yy_create_buffer GeoJson_create_buffer #endif #ifdef yy_delete_buffer #define GeoJson_delete_buffer_ALREADY_DEFINED #else #define yy_delete_buffer GeoJson_delete_buffer #endif #ifdef yy_scan_buffer #define GeoJson_scan_buffer_ALREADY_DEFINED #else #define yy_scan_buffer GeoJson_scan_buffer #endif #ifdef yy_scan_string #define GeoJson_scan_string_ALREADY_DEFINED #else #define yy_scan_string GeoJson_scan_string #endif #ifdef yy_scan_bytes #define GeoJson_scan_bytes_ALREADY_DEFINED #else #define yy_scan_bytes GeoJson_scan_bytes #endif #ifdef yy_init_buffer #define GeoJson_init_buffer_ALREADY_DEFINED #else #define yy_init_buffer GeoJson_init_buffer #endif #ifdef yy_flush_buffer #define GeoJson_flush_buffer_ALREADY_DEFINED #else #define yy_flush_buffer GeoJson_flush_buffer #endif #ifdef yy_load_buffer_state #define GeoJson_load_buffer_state_ALREADY_DEFINED #else #define yy_load_buffer_state GeoJson_load_buffer_state #endif #ifdef yy_switch_to_buffer #define GeoJson_switch_to_buffer_ALREADY_DEFINED #else #define yy_switch_to_buffer GeoJson_switch_to_buffer #endif #ifdef yypush_buffer_state #define GeoJsonpush_buffer_state_ALREADY_DEFINED #else #define yypush_buffer_state GeoJsonpush_buffer_state #endif #ifdef yypop_buffer_state #define GeoJsonpop_buffer_state_ALREADY_DEFINED #else #define yypop_buffer_state GeoJsonpop_buffer_state #endif #ifdef yyensure_buffer_stack #define GeoJsonensure_buffer_stack_ALREADY_DEFINED #else #define yyensure_buffer_stack GeoJsonensure_buffer_stack #endif #ifdef yylex #define GeoJsonlex_ALREADY_DEFINED #else #define yylex GeoJsonlex #endif #ifdef yyrestart #define GeoJsonrestart_ALREADY_DEFINED #else #define yyrestart GeoJsonrestart #endif #ifdef yylex_init #define GeoJsonlex_init_ALREADY_DEFINED #else #define yylex_init GeoJsonlex_init #endif #ifdef yylex_init_extra #define GeoJsonlex_init_extra_ALREADY_DEFINED #else #define yylex_init_extra GeoJsonlex_init_extra #endif #ifdef yylex_destroy #define GeoJsonlex_destroy_ALREADY_DEFINED #else #define yylex_destroy GeoJsonlex_destroy #endif #ifdef yyget_debug #define GeoJsonget_debug_ALREADY_DEFINED #else #define yyget_debug GeoJsonget_debug #endif #ifdef yyset_debug #define GeoJsonset_debug_ALREADY_DEFINED #else #define yyset_debug GeoJsonset_debug #endif #ifdef yyget_extra #define GeoJsonget_extra_ALREADY_DEFINED #else #define yyget_extra GeoJsonget_extra #endif #ifdef yyset_extra #define GeoJsonset_extra_ALREADY_DEFINED #else #define yyset_extra GeoJsonset_extra #endif #ifdef yyget_in #define GeoJsonget_in_ALREADY_DEFINED #else #define yyget_in GeoJsonget_in #endif #ifdef yyset_in #define GeoJsonset_in_ALREADY_DEFINED #else #define yyset_in GeoJsonset_in #endif #ifdef yyget_out #define GeoJsonget_out_ALREADY_DEFINED #else #define yyget_out GeoJsonget_out #endif #ifdef yyset_out #define GeoJsonset_out_ALREADY_DEFINED #else #define yyset_out GeoJsonset_out #endif #ifdef yyget_leng #define GeoJsonget_leng_ALREADY_DEFINED #else #define yyget_leng GeoJsonget_leng #endif #ifdef yyget_text #define GeoJsonget_text_ALREADY_DEFINED #else #define yyget_text GeoJsonget_text #endif #ifdef yyget_lineno #define GeoJsonget_lineno_ALREADY_DEFINED #else #define yyget_lineno GeoJsonget_lineno #endif #ifdef yyset_lineno #define GeoJsonset_lineno_ALREADY_DEFINED #else #define yyset_lineno GeoJsonset_lineno #endif #ifdef yyget_column #define GeoJsonget_column_ALREADY_DEFINED #else #define yyget_column GeoJsonget_column #endif #ifdef yyset_column #define GeoJsonset_column_ALREADY_DEFINED #else #define yyset_column GeoJsonset_column #endif #ifdef yywrap #define GeoJsonwrap_ALREADY_DEFINED #else #define yywrap GeoJsonwrap #endif #ifdef yyalloc #define GeoJsonalloc_ALREADY_DEFINED #else #define yyalloc GeoJsonalloc #endif #ifdef yyrealloc #define GeoJsonrealloc_ALREADY_DEFINED #else #define yyrealloc GeoJsonrealloc #endif #ifdef yyfree #define GeoJsonfree_ALREADY_DEFINED #else #define yyfree GeoJsonfree #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include <stdio.h> #include <string.h> #include <errno.h> ................................................................................ #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif ................................................................................ #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin , yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ................................................................................ #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; ................................................................................ * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; ................................................................................ /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ ................................................................................ * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void yyrestart ( FILE *input_file , yyscan_t yyscanner ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); void yypop_buffer_state ( yyscan_t yyscanner ); static void yyensure_buffer_stack ( yyscan_t yyscanner ); static void yy_load_buffer_state ( yyscan_t yyscanner ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); void *yyalloc ( yy_size_t , yyscan_t yyscanner ); void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); void yyfree ( void * , yyscan_t yyscanner ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef flex_uint8_t YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); static int yy_get_next_buffer ( yyscan_t yyscanner ); static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 27 #define YY_END_OF_BUFFER 28 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const flex_int16_t yy_accept[239] = { 0, 0, 0, 28, 26, 24, 25, 26, 26, 4, 26, 1, 1, 5, 8, 9, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, ................................................................................ 18, 0, 20, 0, 0, 12, 15, 0, 0, 0, 0, 11, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 3, 0 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 1, 1, ................................................................................ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const YY_CHAR yy_meta[41] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const flex_int16_t yy_base[240] = { 0, 0, 39, 302, 303, 303, 303, 68, 3, 303, 12, 292, 5, 303, 303, 303, 303, 303, 284, 275, 271, 261, 265, 274, 0, 270, 273, 259, 253, 257, 280, 14, 15, 279, 44, 50, 278, 52, 23, 269, 254, 254, 255, 7, 251, 250, 246, 248, 249, 246, 244, 245, 61, 265, 58, 63, 264, 86, 92, 93, 263, ................................................................................ 303, 116, 303, 118, 143, 303, 303, 136, 121, 117, 139, 303, 120, 119, 110, 303, 106, 103, 110, 101, 107, 129, 104, 76, 303, 84, 62, 61, 62, 37, 303, 12, 14, 120, 6, 128, 303, 303, 0 } ; static const flex_int16_t yy_def[240] = { 0, 239, 239, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, ................................................................................ 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 0, 238 } ; static const flex_int16_t yy_nxt[344] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 30, 31, 36, 37, 236, 32, 38, 14, 15, 33, 34, 53, 31, 234, 233, 54, 18, 60, 38, 61, 45, 62, 46, 67, 68, 175, 176, 54, 16, 17, 5, 6, 7, 8, 9, 10, 11, 12, 13, 162, 29, 56, 34, 232, 147, 57, 14, 15, 35, 36, ................................................................................ 35, 238, 3, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238 } ; static const flex_int16_t yy_chk[344] = { 0, 239, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 8, 12, 12, 235, 10, 12, 1, 1, 10, 10, 31, 31, 233, 232, 31, 32, 38, 12, 38, 24, 38, 24, 43, 43, 166, 166, 31, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 147, 32, 34, 34, 230, 147, 34, 2, 2, 35, 37, ................................................................................ char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals ( yyscan_t yyscanner ); int yylex_init (yyscan_t* scanner); int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( yyscan_t yyscanner ); int yyget_debug ( yyscan_t yyscanner ); void yyset_debug ( int debug_flag , yyscan_t yyscanner ); YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); FILE *yyget_in ( yyscan_t yyscanner ); void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); FILE *yyget_out ( yyscan_t yyscanner ); void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); int yyget_leng ( yyscan_t yyscanner ); char *yyget_text ( yyscan_t yyscanner ); int yyget_lineno ( yyscan_t yyscanner ); void yyset_lineno ( int _line_number , yyscan_t yyscanner ); int yyget_column ( yyscan_t yyscanner ); void yyset_column ( int _column_no , yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( yyscan_t yyscanner ); #else extern int yywrap ( yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( yyscan_t yyscanner ); #else static int input ( yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ ................................................................................ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (yyscan_t yyscanner); #define YY_DECL int yylex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION ................................................................................ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_load_buffer_state( yyscanner ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 239 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 303 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) ................................................................................ YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; ................................................................................ else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( yywrap( yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the ................................................................................ default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) ................................................................................ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF ................................................................................ if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( ................................................................................ } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin , yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 239 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 239 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 238); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT ................................................................................ */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a ................................................................................ * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin , yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else ................................................................................ #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); yy_load_buffer_state( yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( yyscanner ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } ................................................................................ /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file , yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * @param yyscanner The scanner object. */ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree( (void *) b->yy_ch_buf , yyscanner ); yyfree( (void *) b , yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flush_buffer( b , yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } ................................................................................ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; ................................................................................ b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; yyensure_buffer_stack(yyscanner); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b , yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) { return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n , yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n , yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; spatialite_e("%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ ................................................................................ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *yyget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void yyset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void yyset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void yyset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int yyget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void yyset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* yylex_init_extra has the same functionality as yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; ................................................................................ yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ yyfree(yyg->yy_buffer_stack , yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ yyfree( yyg->yy_start_stack , yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter ................................................................................ * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" int yywrap(yyscan_t yyscanner ) { return 1; } |
Changes to src/gaiageo/lex.Gml.c.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .. 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 ... 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 ... 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 ... 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 ... 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 ... 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 ... 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 ... 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 ... 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 ... 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 ... 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 ... 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 ... 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 ... 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 .... 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 .... 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 .... 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 .... 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 .... 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 .... 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 .... 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 .... 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 .... 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 .... 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 .... 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 .... 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 .... 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 .... 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 |
#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include <stdio.h> #include <string.h> #include <errno.h> ................................................................................ #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif ................................................................................ #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE Gmlrestart(yyin ,yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ................................................................................ #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; ................................................................................ * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; ................................................................................ /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via Gmlrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ ................................................................................ * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void Gmlrestart (FILE *input_file ,yyscan_t yyscanner ); void Gml_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE Gml_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void Gml_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void Gml_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void Gmlpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void Gmlpop_buffer_state (yyscan_t yyscanner ); static void Gmlensure_buffer_stack (yyscan_t yyscanner ); static void Gml_load_buffer_state (yyscan_t yyscanner ); static void Gml_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); #define YY_FLUSH_BUFFER Gml_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) YY_BUFFER_STATE Gml_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE Gml_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE Gml_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); void *Gmlalloc (yy_size_t ,yyscan_t yyscanner ); void *Gmlrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void Gmlfree (void * ,yyscan_t yyscanner ); #define yy_new_buffer Gml_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ Gmlensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ Gml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ Gmlensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ Gml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef unsigned char YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 11 #define YY_END_OF_BUFFER 12 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[21] = { 0, 5, 5, 12, 10, 8, 9, 10, 5, 1, 3, 2, 4, 7, 5, 0, 6, 5, 7, 5, 0 } ; static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 1, 9, ................................................................................ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst YY_CHAR yy_meta[14] = { 0, 1, 1, 1, 1, 2, 1, 3, 4, 5, 1, 5, 4, 3 } ; static yyconst flex_uint16_t yy_base[24] = { 0, 0, 0, 19, 31, 31, 31, 14, 0, 31, 31, 31, 31, 0, 9, 11, 31, 0, 0, 0, 31, 22, 25, 26 } ; static yyconst flex_int16_t yy_def[24] = { 0, 20, 1, 20, 20, 20, 20, 21, 22, 20, 20, 20, 20, 23, 20, 21, 20, 22, 23, 14, 0, 20, 20, 20 } ; static yyconst flex_uint16_t yy_nxt[45] = { 0, 4, 5, 6, 7, 8, 9, 8, 4, 10, 11, 12, 13, 14, 17, 16, 19, 18, 16, 20, 20, 18, 19, 15, 15, 15, 15, 17, 17, 18, 18, 3, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 } ; static yyconst flex_int16_t yy_chk[45] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 15, 14, 14, 7, 3, 0, 14, 14, 21, 21, 21, 21, 22, 22, 23, 23, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 } ; ................................................................................ char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals (yyscan_t yyscanner ); int Gmllex_init (yyscan_t* scanner); int Gmllex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int Gmllex_destroy (yyscan_t yyscanner ); int Gmlget_debug (yyscan_t yyscanner ); void Gmlset_debug (int debug_flag ,yyscan_t yyscanner ); YY_EXTRA_TYPE Gmlget_extra (yyscan_t yyscanner ); void Gmlset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *Gmlget_in (yyscan_t yyscanner ); void Gmlset_in (FILE * _in_str ,yyscan_t yyscanner ); FILE *Gmlget_out (yyscan_t yyscanner ); void Gmlset_out (FILE * _out_str ,yyscan_t yyscanner ); int Gmlget_leng (yyscan_t yyscanner ); char *Gmlget_text (yyscan_t yyscanner ); int Gmlget_lineno (yyscan_t yyscanner ); void Gmlset_lineno (int _line_number ,yyscan_t yyscanner ); int Gmlget_column (yyscan_t yyscanner ); void Gmlset_column (int _column_no ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int Gmlwrap (yyscan_t yyscanner ); #else extern int Gmlwrap (yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner ); #else static int input (yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ ................................................................................ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int Gmllex (yyscan_t yyscanner); #define YY_DECL int Gmllex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION ................................................................................ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { Gmlensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = Gml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } Gml_load_buffer_state(yyscanner ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 31 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) ................................................................................ YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * Gmllex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; ................................................................................ else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( Gmlwrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the ................................................................................ default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of Gmllex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; yy_size_t number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) ................................................................................ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF ................................................................................ if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ Gmlrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ,yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( ................................................................................ } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; Gmlrestart(yyin ,yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((int) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) Gmlrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 20); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT ................................................................................ */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a ................................................................................ * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ Gmlrestart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( Gmlwrap(yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else ................................................................................ #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void Gmlrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ Gmlensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = Gml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } Gml_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); Gml_load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void Gml_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * Gmlpop_buffer_state(); * Gmlpush_buffer_state(new_buffer); */ Gmlensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; Gml_load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during * EOF (Gmlwrap()) processing, but the only time this flag * is looked at is after Gmlwrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void Gml_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } ................................................................................ /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE Gml_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) Gmlalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in Gml_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) Gmlalloc((yy_size_t) (b->yy_buf_size + 2) ,yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in Gml_create_buffer()" ); b->yy_is_our_buffer = 1; Gml_init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with Gml_create_buffer() * @param yyscanner The scanner object. */ void Gml_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) Gmlfree((void *) b->yy_ch_buf ,yyscanner ); Gmlfree((void *) b ,yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a Gmlrestart() or at EOF. */ static void Gml_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; Gml_flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then Gml_init_buffer was _probably_ * called from Gmlrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } ................................................................................ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void Gml_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; ................................................................................ b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) Gml_load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void Gmlpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; Gmlensure_buffer_stack(yyscanner); /* This block is copied from Gml_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from Gml_switch_to_buffer. */ Gml_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void Gmlpop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; Gml_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { Gml_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void Gmlensure_buffer_stack (yyscan_t yyscanner) { int num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)Gmlalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in Gmlensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)Gmlrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in Gmlensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE Gml_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) Gmlalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in Gml_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; Gml_switch_to_buffer(b ,yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to Gmllex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * Gml_scan_bytes() instead. */ YY_BUFFER_STATE Gml_scan_string (yyconst char * yystr , yyscan_t yyscanner) { return Gml_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to Gmllex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE Gml_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) _yybytes_len + 2; buf = (char *) Gmlalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in Gml_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = Gml_scan_buffer(buf,n ,yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in Gml_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ ................................................................................ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE Gmlget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int Gmlget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int Gmlget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *Gmlget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *Gmlget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int Gmlget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *Gmlget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void Gmlset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void Gmlset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "Gmlset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void Gmlset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "Gmlset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see Gml_switch_to_buffer */ void Gmlset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void Gmlset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int Gmlget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void Gmlset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* Gmllex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int Gmllex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) Gmlalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* Gmllex_init_extra has the same functionality as Gmllex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to Gmlalloc in * the yyextra field. */ int Gmllex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; Gmlset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) Gmlalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); Gmlset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from Gmllex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; ................................................................................ yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * Gmllex_init() */ return 0; } /* Gmllex_destroy is for both reentrant and non-reentrant scanners. */ int Gmllex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ Gml_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; Gmlpop_buffer_state(yyscanner); } /* Destroy the stack itself. */ Gmlfree(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ Gmlfree(yyg->yy_start_stack ,yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * Gmllex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ Gmlfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *Gmlalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *Gmlrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter ................................................................................ * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void Gmlfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see Gmlrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" int Gmlwrap(yyscan_t yyscanner ) { return 1; } |
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | < < | < < < | < | | < | | < > | | | | < | | | > | | | > > < < | < < < > | | < | < > < | | < | < | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | > | | | | > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | < | | | < | < | | | | | | | | | | | | | | | | | | | | | | | | | |
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 ... 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 ... 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 ... 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 ... 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 ... 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 ... 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 ... 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 ... 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 ... 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 ... 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 ... 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 .... 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 .... 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 .... 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 .... 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 .... 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 .... 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 .... 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 .... 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 .... 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 .... 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 .... 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 .... 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 .... 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 .... 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 .... 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 .... 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 .... 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 |
#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif #ifdef yy_create_buffer #define Gml_create_buffer_ALREADY_DEFINED #else #define yy_create_buffer Gml_create_buffer #endif #ifdef yy_delete_buffer #define Gml_delete_buffer_ALREADY_DEFINED #else #define yy_delete_buffer Gml_delete_buffer #endif #ifdef yy_scan_buffer #define Gml_scan_buffer_ALREADY_DEFINED #else #define yy_scan_buffer Gml_scan_buffer #endif #ifdef yy_scan_string #define Gml_scan_string_ALREADY_DEFINED #else #define yy_scan_string Gml_scan_string #endif #ifdef yy_scan_bytes #define Gml_scan_bytes_ALREADY_DEFINED #else #define yy_scan_bytes Gml_scan_bytes #endif #ifdef yy_init_buffer #define Gml_init_buffer_ALREADY_DEFINED #else #define yy_init_buffer Gml_init_buffer #endif #ifdef yy_flush_buffer #define Gml_flush_buffer_ALREADY_DEFINED #else #define yy_flush_buffer Gml_flush_buffer #endif #ifdef yy_load_buffer_state #define Gml_load_buffer_state_ALREADY_DEFINED #else #define yy_load_buffer_state Gml_load_buffer_state #endif #ifdef yy_switch_to_buffer #define Gml_switch_to_buffer_ALREADY_DEFINED #else #define yy_switch_to_buffer Gml_switch_to_buffer #endif #ifdef yypush_buffer_state #define Gmlpush_buffer_state_ALREADY_DEFINED #else #define yypush_buffer_state Gmlpush_buffer_state #endif #ifdef yypop_buffer_state #define Gmlpop_buffer_state_ALREADY_DEFINED #else #define yypop_buffer_state Gmlpop_buffer_state #endif #ifdef yyensure_buffer_stack #define Gmlensure_buffer_stack_ALREADY_DEFINED #else #define yyensure_buffer_stack Gmlensure_buffer_stack #endif #ifdef yylex #define Gmllex_ALREADY_DEFINED #else #define yylex Gmllex #endif #ifdef yyrestart #define Gmlrestart_ALREADY_DEFINED #else #define yyrestart Gmlrestart #endif #ifdef yylex_init #define Gmllex_init_ALREADY_DEFINED #else #define yylex_init Gmllex_init #endif #ifdef yylex_init_extra #define Gmllex_init_extra_ALREADY_DEFINED #else #define yylex_init_extra Gmllex_init_extra #endif #ifdef yylex_destroy #define Gmllex_destroy_ALREADY_DEFINED #else #define yylex_destroy Gmllex_destroy #endif #ifdef yyget_debug #define Gmlget_debug_ALREADY_DEFINED #else #define yyget_debug Gmlget_debug #endif #ifdef yyset_debug #define Gmlset_debug_ALREADY_DEFINED #else #define yyset_debug Gmlset_debug #endif #ifdef yyget_extra #define Gmlget_extra_ALREADY_DEFINED #else #define yyget_extra Gmlget_extra #endif #ifdef yyset_extra #define Gmlset_extra_ALREADY_DEFINED #else #define yyset_extra Gmlset_extra #endif #ifdef yyget_in #define Gmlget_in_ALREADY_DEFINED #else #define yyget_in Gmlget_in #endif #ifdef yyset_in #define Gmlset_in_ALREADY_DEFINED #else #define yyset_in Gmlset_in #endif #ifdef yyget_out #define Gmlget_out_ALREADY_DEFINED #else #define yyget_out Gmlget_out #endif #ifdef yyset_out #define Gmlset_out_ALREADY_DEFINED #else #define yyset_out Gmlset_out #endif #ifdef yyget_leng #define Gmlget_leng_ALREADY_DEFINED #else #define yyget_leng Gmlget_leng #endif #ifdef yyget_text #define Gmlget_text_ALREADY_DEFINED #else #define yyget_text Gmlget_text #endif #ifdef yyget_lineno #define Gmlget_lineno_ALREADY_DEFINED #else #define yyget_lineno Gmlget_lineno #endif #ifdef yyset_lineno #define Gmlset_lineno_ALREADY_DEFINED #else #define yyset_lineno Gmlset_lineno #endif #ifdef yyget_column #define Gmlget_column_ALREADY_DEFINED #else #define yyget_column Gmlget_column #endif #ifdef yyset_column #define Gmlset_column_ALREADY_DEFINED #else #define yyset_column Gmlset_column #endif #ifdef yywrap #define Gmlwrap_ALREADY_DEFINED #else #define yywrap Gmlwrap #endif #ifdef yyalloc #define Gmlalloc_ALREADY_DEFINED #else #define yyalloc Gmlalloc #endif #ifdef yyrealloc #define Gmlrealloc_ALREADY_DEFINED #else #define yyrealloc Gmlrealloc #endif #ifdef yyfree #define Gmlfree_ALREADY_DEFINED #else #define yyfree Gmlfree #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include <stdio.h> #include <string.h> #include <errno.h> ................................................................................ #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif ................................................................................ #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin , yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ................................................................................ #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; ................................................................................ * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; ................................................................................ /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ ................................................................................ * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void yyrestart ( FILE *input_file , yyscan_t yyscanner ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); void yypop_buffer_state ( yyscan_t yyscanner ); static void yyensure_buffer_stack ( yyscan_t yyscanner ); static void yy_load_buffer_state ( yyscan_t yyscanner ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); void *yyalloc ( yy_size_t , yyscan_t yyscanner ); void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); void yyfree ( void * , yyscan_t yyscanner ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef flex_uint8_t YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); static int yy_get_next_buffer ( yyscan_t yyscanner ); static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 11 #define YY_END_OF_BUFFER 12 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const flex_int16_t yy_accept[21] = { 0, 5, 5, 12, 10, 8, 9, 10, 5, 1, 3, 2, 4, 7, 5, 0, 6, 5, 7, 5, 0 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 1, 9, ................................................................................ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const YY_CHAR yy_meta[14] = { 0, 1, 1, 1, 1, 2, 1, 3, 4, 5, 1, 5, 4, 3 } ; static const flex_int16_t yy_base[24] = { 0, 0, 0, 19, 31, 31, 31, 14, 0, 31, 31, 31, 31, 0, 9, 11, 31, 0, 0, 0, 31, 22, 25, 26 } ; static const flex_int16_t yy_def[24] = { 0, 20, 1, 20, 20, 20, 20, 21, 22, 20, 20, 20, 20, 23, 20, 21, 20, 22, 23, 14, 0, 20, 20, 20 } ; static const flex_int16_t yy_nxt[45] = { 0, 4, 5, 6, 7, 8, 9, 8, 4, 10, 11, 12, 13, 14, 17, 16, 19, 18, 16, 20, 20, 18, 19, 15, 15, 15, 15, 17, 17, 18, 18, 3, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 } ; static const flex_int16_t yy_chk[45] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 15, 14, 14, 7, 3, 0, 14, 14, 21, 21, 21, 21, 22, 22, 23, 23, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 } ; ................................................................................ char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals ( yyscan_t yyscanner ); int yylex_init (yyscan_t* scanner); int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( yyscan_t yyscanner ); int yyget_debug ( yyscan_t yyscanner ); void yyset_debug ( int debug_flag , yyscan_t yyscanner ); YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); FILE *yyget_in ( yyscan_t yyscanner ); void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); FILE *yyget_out ( yyscan_t yyscanner ); void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); int yyget_leng ( yyscan_t yyscanner ); char *yyget_text ( yyscan_t yyscanner ); int yyget_lineno ( yyscan_t yyscanner ); void yyset_lineno ( int _line_number , yyscan_t yyscanner ); int yyget_column ( yyscan_t yyscanner ); void yyset_column ( int _column_no , yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( yyscan_t yyscanner ); #else extern int yywrap ( yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( yyscan_t yyscanner ); #else static int input ( yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ ................................................................................ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (yyscan_t yyscanner); #define YY_DECL int yylex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION ................................................................................ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_load_buffer_state( yyscanner ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 31 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) ................................................................................ YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; ................................................................................ else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( yywrap( yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the ................................................................................ default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) ................................................................................ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF ................................................................................ if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( ................................................................................ } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin , yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 20); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT ................................................................................ */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a ................................................................................ * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin , yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else ................................................................................ #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); yy_load_buffer_state( yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( yyscanner ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } ................................................................................ /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file , yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * @param yyscanner The scanner object. */ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree( (void *) b->yy_ch_buf , yyscanner ); yyfree( (void *) b , yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flush_buffer( b , yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } ................................................................................ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; ................................................................................ b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; yyensure_buffer_stack(yyscanner); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b , yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) { return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n , yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n , yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; spatialite_e("%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ ................................................................................ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *yyget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void yyset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void yyset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void yyset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int yyget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void yyset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* yylex_init_extra has the same functionality as yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; ................................................................................ yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ yyfree(yyg->yy_buffer_stack , yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ yyfree( yyg->yy_start_stack , yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter ................................................................................ * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" int yywrap(yyscan_t yyscanner ) { return 1; } |
Changes to src/gaiageo/lex.Kml.c.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .. 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 ... 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 ... 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 ... 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 ... 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 ... 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 ... 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 ... 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 ... 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 ... 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 ... 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 ... 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 ... 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 ... 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 .... 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 .... 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 .... 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 .... 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 .... 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 .... 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 .... 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 .... 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 .... 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 .... 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 .... 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 .... 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 .... 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 .... 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 |
#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include <stdio.h> #include <string.h> #include <errno.h> ................................................................................ #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif ................................................................................ #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE Kmlrestart(yyin ,yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ................................................................................ #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; ................................................................................ * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; ................................................................................ /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via Kmlrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ ................................................................................ * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void Kmlrestart (FILE *input_file ,yyscan_t yyscanner ); void Kml_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE Kml_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void Kml_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void Kml_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void Kmlpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void Kmlpop_buffer_state (yyscan_t yyscanner ); static void Kmlensure_buffer_stack (yyscan_t yyscanner ); static void Kml_load_buffer_state (yyscan_t yyscanner ); static void Kml_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); #define YY_FLUSH_BUFFER Kml_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) YY_BUFFER_STATE Kml_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE Kml_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE Kml_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); void *Kmlalloc (yy_size_t ,yyscan_t yyscanner ); void *Kmlrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void Kmlfree (void * ,yyscan_t yyscanner ); #define yy_new_buffer Kml_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ Kmlensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ Kml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ Kmlensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ Kml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef unsigned char YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 11 #define YY_END_OF_BUFFER 12 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[21] = { 0, 5, 5, 12, 10, 8, 9, 10, 5, 1, 3, 2, 4, 7, 5, 0, 6, 5, 7, 5, 0 } ; static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 1, 9, ................................................................................ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst YY_CHAR yy_meta[14] = { 0, 1, 1, 1, 1, 2, 1, 3, 4, 5, 1, 5, 4, 3 } ; static yyconst flex_uint16_t yy_base[24] = { 0, 0, 0, 19, 31, 31, 31, 14, 0, 31, 31, 31, 31, 0, 9, 11, 31, 0, 0, 0, 31, 22, 25, 26 } ; static yyconst flex_int16_t yy_def[24] = { 0, 20, 1, 20, 20, 20, 20, 21, 22, 20, 20, 20, 20, 23, 20, 21, 20, 22, 23, 14, 0, 20, 20, 20 } ; static yyconst flex_uint16_t yy_nxt[45] = { 0, 4, 5, 6, 7, 8, 9, 8, 4, 10, 11, 12, 13, 14, 17, 16, 19, 18, 16, 20, 20, 18, 19, 15, 15, 15, 15, 17, 17, 18, 18, 3, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 } ; static yyconst flex_int16_t yy_chk[45] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 15, 14, 14, 7, 3, 0, 14, 14, 21, 21, 21, 21, 22, 22, 23, 23, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 } ; ................................................................................ char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals (yyscan_t yyscanner ); int Kmllex_init (yyscan_t* scanner); int Kmllex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int Kmllex_destroy (yyscan_t yyscanner ); int Kmlget_debug (yyscan_t yyscanner ); void Kmlset_debug (int debug_flag ,yyscan_t yyscanner ); YY_EXTRA_TYPE Kmlget_extra (yyscan_t yyscanner ); void Kmlset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *Kmlget_in (yyscan_t yyscanner ); void Kmlset_in (FILE * _in_str ,yyscan_t yyscanner ); FILE *Kmlget_out (yyscan_t yyscanner ); void Kmlset_out (FILE * _out_str ,yyscan_t yyscanner ); int Kmlget_leng (yyscan_t yyscanner ); char *Kmlget_text (yyscan_t yyscanner ); int Kmlget_lineno (yyscan_t yyscanner ); void Kmlset_lineno (int _line_number ,yyscan_t yyscanner ); int Kmlget_column (yyscan_t yyscanner ); void Kmlset_column (int _column_no ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int Kmlwrap (yyscan_t yyscanner ); #else extern int Kmlwrap (yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner ); #else static int input (yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ ................................................................................ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int Kmllex (yyscan_t yyscanner); #define YY_DECL int Kmllex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION ................................................................................ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { Kmlensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = Kml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } Kml_load_buffer_state(yyscanner ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 31 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) ................................................................................ YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * Kmllex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; ................................................................................ else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( Kmlwrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the ................................................................................ default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of Kmllex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; yy_size_t number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) ................................................................................ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF ................................................................................ if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ Kmlrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ,yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( ................................................................................ } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; Kmlrestart(yyin ,yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((int) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) Kmlrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 20); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT ................................................................................ */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a ................................................................................ * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ Kmlrestart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( Kmlwrap(yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else ................................................................................ #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void Kmlrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ Kmlensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = Kml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } Kml_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); Kml_load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void Kml_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * Kmlpop_buffer_state(); * Kmlpush_buffer_state(new_buffer); */ Kmlensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; Kml_load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during * EOF (Kmlwrap()) processing, but the only time this flag * is looked at is after Kmlwrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void Kml_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } ................................................................................ /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE Kml_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) Kmlalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in Kml_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) Kmlalloc((yy_size_t) (b->yy_buf_size + 2) ,yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in Kml_create_buffer()" ); b->yy_is_our_buffer = 1; Kml_init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with Kml_create_buffer() * @param yyscanner The scanner object. */ void Kml_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) Kmlfree((void *) b->yy_ch_buf ,yyscanner ); Kmlfree((void *) b ,yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a Kmlrestart() or at EOF. */ static void Kml_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; Kml_flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then Kml_init_buffer was _probably_ * called from Kmlrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } ................................................................................ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void Kml_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; ................................................................................ b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) Kml_load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void Kmlpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; Kmlensure_buffer_stack(yyscanner); /* This block is copied from Kml_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from Kml_switch_to_buffer. */ Kml_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void Kmlpop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; Kml_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { Kml_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void Kmlensure_buffer_stack (yyscan_t yyscanner) { int num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)Kmlalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in Kmlensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)Kmlrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in Kmlensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE Kml_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) Kmlalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in Kml_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; Kml_switch_to_buffer(b ,yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to Kmllex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * Kml_scan_bytes() instead. */ YY_BUFFER_STATE Kml_scan_string (yyconst char * yystr , yyscan_t yyscanner) { return Kml_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to Kmllex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE Kml_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) _yybytes_len + 2; buf = (char *) Kmlalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in Kml_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = Kml_scan_buffer(buf,n ,yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in Kml_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ ................................................................................ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE Kmlget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int Kmlget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int Kmlget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *Kmlget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *Kmlget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int Kmlget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *Kmlget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void Kmlset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void Kmlset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "Kmlset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void Kmlset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "Kmlset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see Kml_switch_to_buffer */ void Kmlset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void Kmlset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int Kmlget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void Kmlset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* Kmllex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int Kmllex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) Kmlalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* Kmllex_init_extra has the same functionality as Kmllex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to Kmlalloc in * the yyextra field. */ int Kmllex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; Kmlset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) Kmlalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); Kmlset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from Kmllex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; ................................................................................ yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * Kmllex_init() */ return 0; } /* Kmllex_destroy is for both reentrant and non-reentrant scanners. */ int Kmllex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ Kml_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; Kmlpop_buffer_state(yyscanner); } /* Destroy the stack itself. */ Kmlfree(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ Kmlfree(yyg->yy_start_stack ,yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * Kmllex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ Kmlfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *Kmlalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *Kmlrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter ................................................................................ * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void Kmlfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see Kmlrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" int Kmlwrap(yyscan_t yyscanner ) { return 1; } |
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | < < | < < < | < | | < | | < > | | | | < | | | > | | | > > < < | < < < > | | < | < > < | | < | < | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | > | | | | > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | < | | | < | < | | | | | | | | | | | | | | | | | | | | | | | | | |
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 ... 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 ... 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 ... 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 ... 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 ... 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 ... 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 ... 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 ... 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 ... 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 ... 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 ... 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 .... 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 .... 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 .... 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 .... 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 .... 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 .... 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 .... 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 .... 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 .... 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 .... 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 .... 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 .... 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 .... 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 .... 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 .... 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 .... 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 .... 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 |
#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif #ifdef yy_create_buffer #define Kml_create_buffer_ALREADY_DEFINED #else #define yy_create_buffer Kml_create_buffer #endif #ifdef yy_delete_buffer #define Kml_delete_buffer_ALREADY_DEFINED #else #define yy_delete_buffer Kml_delete_buffer #endif #ifdef yy_scan_buffer #define Kml_scan_buffer_ALREADY_DEFINED #else #define yy_scan_buffer Kml_scan_buffer #endif #ifdef yy_scan_string #define Kml_scan_string_ALREADY_DEFINED #else #define yy_scan_string Kml_scan_string #endif #ifdef yy_scan_bytes #define Kml_scan_bytes_ALREADY_DEFINED #else #define yy_scan_bytes Kml_scan_bytes #endif #ifdef yy_init_buffer #define Kml_init_buffer_ALREADY_DEFINED #else #define yy_init_buffer Kml_init_buffer #endif #ifdef yy_flush_buffer #define Kml_flush_buffer_ALREADY_DEFINED #else #define yy_flush_buffer Kml_flush_buffer #endif #ifdef yy_load_buffer_state #define Kml_load_buffer_state_ALREADY_DEFINED #else #define yy_load_buffer_state Kml_load_buffer_state #endif #ifdef yy_switch_to_buffer #define Kml_switch_to_buffer_ALREADY_DEFINED #else #define yy_switch_to_buffer Kml_switch_to_buffer #endif #ifdef yypush_buffer_state #define Kmlpush_buffer_state_ALREADY_DEFINED #else #define yypush_buffer_state Kmlpush_buffer_state #endif #ifdef yypop_buffer_state #define Kmlpop_buffer_state_ALREADY_DEFINED #else #define yypop_buffer_state Kmlpop_buffer_state #endif #ifdef yyensure_buffer_stack #define Kmlensure_buffer_stack_ALREADY_DEFINED #else #define yyensure_buffer_stack Kmlensure_buffer_stack #endif #ifdef yylex #define Kmllex_ALREADY_DEFINED #else #define yylex Kmllex #endif #ifdef yyrestart #define Kmlrestart_ALREADY_DEFINED #else #define yyrestart Kmlrestart #endif #ifdef yylex_init #define Kmllex_init_ALREADY_DEFINED #else #define yylex_init Kmllex_init #endif #ifdef yylex_init_extra #define Kmllex_init_extra_ALREADY_DEFINED #else #define yylex_init_extra Kmllex_init_extra #endif #ifdef yylex_destroy #define Kmllex_destroy_ALREADY_DEFINED #else #define yylex_destroy Kmllex_destroy #endif #ifdef yyget_debug #define Kmlget_debug_ALREADY_DEFINED #else #define yyget_debug Kmlget_debug #endif #ifdef yyset_debug #define Kmlset_debug_ALREADY_DEFINED #else #define yyset_debug Kmlset_debug #endif #ifdef yyget_extra #define Kmlget_extra_ALREADY_DEFINED #else #define yyget_extra Kmlget_extra #endif #ifdef yyset_extra #define Kmlset_extra_ALREADY_DEFINED #else #define yyset_extra Kmlset_extra #endif #ifdef yyget_in #define Kmlget_in_ALREADY_DEFINED #else #define yyget_in Kmlget_in #endif #ifdef yyset_in #define Kmlset_in_ALREADY_DEFINED #else #define yyset_in Kmlset_in #endif #ifdef yyget_out #define Kmlget_out_ALREADY_DEFINED #else #define yyget_out Kmlget_out #endif #ifdef yyset_out #define Kmlset_out_ALREADY_DEFINED #else #define yyset_out Kmlset_out #endif #ifdef yyget_leng #define Kmlget_leng_ALREADY_DEFINED #else #define yyget_leng Kmlget_leng #endif #ifdef yyget_text #define Kmlget_text_ALREADY_DEFINED #else #define yyget_text Kmlget_text #endif #ifdef yyget_lineno #define Kmlget_lineno_ALREADY_DEFINED #else #define yyget_lineno Kmlget_lineno #endif #ifdef yyset_lineno #define Kmlset_lineno_ALREADY_DEFINED #else #define yyset_lineno Kmlset_lineno #endif #ifdef yyget_column #define Kmlget_column_ALREADY_DEFINED #else #define yyget_column Kmlget_column #endif #ifdef yyset_column #define Kmlset_column_ALREADY_DEFINED #else #define yyset_column Kmlset_column #endif #ifdef yywrap #define Kmlwrap_ALREADY_DEFINED #else #define yywrap Kmlwrap #endif #ifdef yyalloc #define Kmlalloc_ALREADY_DEFINED #else #define yyalloc Kmlalloc #endif #ifdef yyrealloc #define Kmlrealloc_ALREADY_DEFINED #else #define yyrealloc Kmlrealloc #endif #ifdef yyfree #define Kmlfree_ALREADY_DEFINED #else #define yyfree Kmlfree #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include <stdio.h> #include <string.h> #include <errno.h> ................................................................................ #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif ................................................................................ #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin , yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ................................................................................ #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; ................................................................................ * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; ................................................................................ /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ ................................................................................ * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void yyrestart ( FILE *input_file , yyscan_t yyscanner ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); void yypop_buffer_state ( yyscan_t yyscanner ); static void yyensure_buffer_stack ( yyscan_t yyscanner ); static void yy_load_buffer_state ( yyscan_t yyscanner ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); void *yyalloc ( yy_size_t , yyscan_t yyscanner ); void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); void yyfree ( void * , yyscan_t yyscanner ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef flex_uint8_t YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); static int yy_get_next_buffer ( yyscan_t yyscanner ); static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 11 #define YY_END_OF_BUFFER 12 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const flex_int16_t yy_accept[21] = { 0, 5, 5, 12, 10, 8, 9, 10, 5, 1, 3, 2, 4, 7, 5, 0, 6, 5, 7, 5, 0 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 1, 9, ................................................................................ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const YY_CHAR yy_meta[14] = { 0, 1, 1, 1, 1, 2, 1, 3, 4, 5, 1, 5, 4, 3 } ; static const flex_int16_t yy_base[24] = { 0, 0, 0, 19, 31, 31, 31, 14, 0, 31, 31, 31, 31, 0, 9, 11, 31, 0, 0, 0, 31, 22, 25, 26 } ; static const flex_int16_t yy_def[24] = { 0, 20, 1, 20, 20, 20, 20, 21, 22, 20, 20, 20, 20, 23, 20, 21, 20, 22, 23, 14, 0, 20, 20, 20 } ; static const flex_int16_t yy_nxt[45] = { 0, 4, 5, 6, 7, 8, 9, 8, 4, 10, 11, 12, 13, 14, 17, 16, 19, 18, 16, 20, 20, 18, 19, 15, 15, 15, 15, 17, 17, 18, 18, 3, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 } ; static const flex_int16_t yy_chk[45] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 15, 14, 14, 7, 3, 0, 14, 14, 21, 21, 21, 21, 22, 22, 23, 23, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 } ; ................................................................................ char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals ( yyscan_t yyscanner ); int yylex_init (yyscan_t* scanner); int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( yyscan_t yyscanner ); int yyget_debug ( yyscan_t yyscanner ); void yyset_debug ( int debug_flag , yyscan_t yyscanner ); YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); FILE *yyget_in ( yyscan_t yyscanner ); void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); FILE *yyget_out ( yyscan_t yyscanner ); void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); int yyget_leng ( yyscan_t yyscanner ); char *yyget_text ( yyscan_t yyscanner ); int yyget_lineno ( yyscan_t yyscanner ); void yyset_lineno ( int _line_number , yyscan_t yyscanner ); int yyget_column ( yyscan_t yyscanner ); void yyset_column ( int _column_no , yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( yyscan_t yyscanner ); #else extern int yywrap ( yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( yyscan_t yyscanner ); #else static int input ( yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ ................................................................................ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (yyscan_t yyscanner); #define YY_DECL int yylex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION ................................................................................ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_load_buffer_state( yyscanner ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 31 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) ................................................................................ YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; ................................................................................ else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( yywrap( yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the ................................................................................ default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) ................................................................................ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF ................................................................................ if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( ................................................................................ } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin , yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 21 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 20); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT ................................................................................ */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a ................................................................................ * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin , yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else ................................................................................ #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); yy_load_buffer_state( yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( yyscanner ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } ................................................................................ /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file , yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * @param yyscanner The scanner object. */ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree( (void *) b->yy_ch_buf , yyscanner ); yyfree( (void *) b , yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flush_buffer( b , yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } ................................................................................ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; ................................................................................ b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; yyensure_buffer_stack(yyscanner); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b , yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) { return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n , yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n , yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; spatialite_e("%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ ................................................................................ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *yyget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void yyset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void yyset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void yyset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int yyget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void yyset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* yylex_init_extra has the same functionality as yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; ................................................................................ yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ yyfree(yyg->yy_buffer_stack , yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ yyfree( yyg->yy_start_stack , yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter ................................................................................ * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" int yywrap(yyscan_t yyscanner ) { return 1; } |
Changes to src/gaiageo/lex.VanuatuWkt.c.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .. 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 ... 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 ... 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 ... 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 ... 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 ... 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 ... 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 ... 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 ... 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 ... 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 ... 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 ... 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 ... 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 ... 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 ... 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 .... 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 .... 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 .... 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 .... 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 .... 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 .... 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 .... 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 .... 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 .... 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 .... 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 .... 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 .... 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 .... 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 .... 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 .... 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 .... 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 .... 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 |
#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 1 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include <stdio.h> #include <string.h> #include <errno.h> ................................................................................ #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif ................................................................................ #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE VanuatuWktrestart(yyin ,yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ................................................................................ #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; ................................................................................ * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; ................................................................................ /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via VanuatuWktrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ ................................................................................ * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void VanuatuWktrestart (FILE *input_file ,yyscan_t yyscanner ); void VanuatuWkt_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE VanuatuWkt_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void VanuatuWkt_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void VanuatuWkt_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void VanuatuWktpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void VanuatuWktpop_buffer_state (yyscan_t yyscanner ); static void VanuatuWktensure_buffer_stack (yyscan_t yyscanner ); static void VanuatuWkt_load_buffer_state (yyscan_t yyscanner ); static void VanuatuWkt_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); #define YY_FLUSH_BUFFER VanuatuWkt_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) YY_BUFFER_STATE VanuatuWkt_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE VanuatuWkt_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE VanuatuWkt_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); void *VanuatuWktalloc (yy_size_t ,yyscan_t yyscanner ); void *VanuatuWktrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void VanuatuWktfree (void * ,yyscan_t yyscanner ); #define yy_new_buffer VanuatuWkt_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ VanuatuWktensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ VanuatuWkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ VanuatuWktensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ VanuatuWkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef unsigned char YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); static void yynoreturn yy_fatal_error (yyconst char* msg ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 36 #define YY_END_OF_BUFFER 37 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[171] = { 0, 0, 0, 37, 35, 33, 34, 3, 4, 35, 2, 35, 1, 1, 35, 35, 35, 35, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ................................................................................ 0, 15, 14, 0, 0, 0, 0, 0, 16, 0, 9, 0, 17, 0, 0, 0, 11, 10, 0, 0, 19, 18, 0, 0, 12, 0, 20, 25, 0, 0, 0, 27, 26, 0, 0, 28, 0, 21, 0, 0, 23, 22, 0, 24, 29, 0, 31, 30, 32, 0 } ; static yyconst YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 6, 7, 8, 9, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, ................................................................................ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst YY_CHAR yy_meta[41] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_uint16_t yy_base[171] = { 0, 0, 0, 328, 329, 329, 329, 329, 329, 32, 329, 34, 317, 36, 35, 35, 27, 33, 316, 43, 315, 47, 48, 314, 59, 70, 49, 55, 58, 69, 67, 313, 83, 80, 312, 94, 95, 85, 310, 309, 308, 65, 94, 86, 92, 86, 105, 104, 307, 306, 305, 112, 107, 304, 303, 301, 300, 299, 298, 120, 297, ................................................................................ 0, 329, 177, 177, 183, 177, 177, 190, 329, 189, 213, 183, 220, 191, 202, 0, 329, 209, 206, 0, 329, 211, 211, 219, 329, 219, 329, 247, 226, 222, 0, 329, 231, 233, 243, 329, 244, 263, 241, 0, 329, 245, 250, 329, 281, 0, 329, 259, 329, 329 } ; static yyconst flex_int16_t yy_def[171] = { 0, 170, 1, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, ................................................................................ 115, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 131, 170, 170, 170, 133, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 148, 170, 170, 170, 170, 170, 170, 170, 170, 158, 170, 170, 170, 170, 170, 165, 170, 170, 170, 0 } ; static yyconst flex_uint16_t yy_nxt[370] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 4, 4, 14, 4, 15, 16, 4, 4, 17, 4, 4, 4, 4, 4, 4, 4, 4, 14, 4, 15, 16, 4, 4, 17, 4, 4, 4, 4, 4, 4, 18, 19, 20, 21, 23, 24, 26, 25, 27, 28, 29, 31, 19, 109, 32, 34, 21, 22, 35, 36, ................................................................................ 168, 52, 47, 37, 33, 30, 22, 170, 3, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170 } ; static yyconst flex_int16_t yy_chk[370] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 11, 11, 13, 13, 14, 13, 15, 16, 17, 19, 19, 109, 19, 21, 21, 22, 21, 22, ................................................................................ char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals (yyscan_t yyscanner ); int VanuatuWktlex_init (yyscan_t* scanner); int VanuatuWktlex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int VanuatuWktlex_destroy (yyscan_t yyscanner ); int VanuatuWktget_debug (yyscan_t yyscanner ); void VanuatuWktset_debug (int debug_flag ,yyscan_t yyscanner ); YY_EXTRA_TYPE VanuatuWktget_extra (yyscan_t yyscanner ); void VanuatuWktset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *VanuatuWktget_in (yyscan_t yyscanner ); void VanuatuWktset_in (FILE * _in_str ,yyscan_t yyscanner ); FILE *VanuatuWktget_out (yyscan_t yyscanner ); void VanuatuWktset_out (FILE * _out_str ,yyscan_t yyscanner ); int VanuatuWktget_leng (yyscan_t yyscanner ); char *VanuatuWktget_text (yyscan_t yyscanner ); int VanuatuWktget_lineno (yyscan_t yyscanner ); void VanuatuWktset_lineno (int _line_number ,yyscan_t yyscanner ); int VanuatuWktget_column (yyscan_t yyscanner ); void VanuatuWktset_column (int _column_no ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int VanuatuWktwrap (yyscan_t yyscanner ); #else extern int VanuatuWktwrap (yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner ); #else static int input (yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ ................................................................................ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int VanuatuWktlex (yyscan_t yyscanner); #define YY_DECL int VanuatuWktlex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION ................................................................................ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { VanuatuWktensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = VanuatuWkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } VanuatuWkt_load_buffer_state(yyscanner ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 171 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 329 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) ................................................................................ YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * VanuatuWktlex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; ................................................................................ else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( VanuatuWktwrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the ................................................................................ default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of VanuatuWktlex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; yy_size_t number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) ................................................................................ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (yy_size_t) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF ................................................................................ if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ VanuatuWktrealloc((void *) b->yy_ch_buf,(yy_size_t) (b->yy_buf_size + 2) ,yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( ................................................................................ } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; VanuatuWktrestart(yyin ,yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((int) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) VanuatuWktrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,(yy_size_t) new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 171 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 171 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c]; yy_is_jam = (yy_current_state == 170); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT ................................................................................ */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a ................................................................................ * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ VanuatuWktrestart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( VanuatuWktwrap(yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else ................................................................................ #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void VanuatuWktrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ VanuatuWktensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = VanuatuWkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } VanuatuWkt_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); VanuatuWkt_load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void VanuatuWkt_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * VanuatuWktpop_buffer_state(); * VanuatuWktpush_buffer_state(new_buffer); */ VanuatuWktensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; VanuatuWkt_load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during * EOF (VanuatuWktwrap()) processing, but the only time this flag * is looked at is after VanuatuWktwrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void VanuatuWkt_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } ................................................................................ /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE VanuatuWkt_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) VanuatuWktalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in VanuatuWkt_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) VanuatuWktalloc((yy_size_t) (b->yy_buf_size + 2) ,yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in VanuatuWkt_create_buffer()" ); b->yy_is_our_buffer = 1; VanuatuWkt_init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with VanuatuWkt_create_buffer() * @param yyscanner The scanner object. */ void VanuatuWkt_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) VanuatuWktfree((void *) b->yy_ch_buf ,yyscanner ); VanuatuWktfree((void *) b ,yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a VanuatuWktrestart() or at EOF. */ static void VanuatuWkt_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; VanuatuWkt_flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then VanuatuWkt_init_buffer was _probably_ * called from VanuatuWktrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } ................................................................................ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void VanuatuWkt_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; ................................................................................ b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) VanuatuWkt_load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void VanuatuWktpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; VanuatuWktensure_buffer_stack(yyscanner); /* This block is copied from VanuatuWkt_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from VanuatuWkt_switch_to_buffer. */ VanuatuWkt_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void VanuatuWktpop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; VanuatuWkt_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { VanuatuWkt_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void VanuatuWktensure_buffer_stack (yyscan_t yyscanner) { int num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)VanuatuWktalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in VanuatuWktensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)VanuatuWktrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in VanuatuWktensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE VanuatuWkt_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) VanuatuWktalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in VanuatuWkt_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; VanuatuWkt_switch_to_buffer(b ,yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to VanuatuWktlex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * VanuatuWkt_scan_bytes() instead. */ YY_BUFFER_STATE VanuatuWkt_scan_string (yyconst char * yystr , yyscan_t yyscanner) { return VanuatuWkt_scan_bytes(yystr,(int) strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to VanuatuWktlex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE VanuatuWkt_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) _yybytes_len + 2; buf = (char *) VanuatuWktalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in VanuatuWkt_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = VanuatuWkt_scan_buffer(buf,n ,yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in VanuatuWkt_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ yy_size_t yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ ................................................................................ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE VanuatuWktget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int VanuatuWktget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int VanuatuWktget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *VanuatuWktget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *VanuatuWktget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int VanuatuWktget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *VanuatuWktget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void VanuatuWktset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void VanuatuWktset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "VanuatuWktset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void VanuatuWktset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "VanuatuWktset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see VanuatuWkt_switch_to_buffer */ void VanuatuWktset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void VanuatuWktset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int VanuatuWktget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void VanuatuWktset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* VanuatuWktlex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int VanuatuWktlex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) VanuatuWktalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* VanuatuWktlex_init_extra has the same functionality as VanuatuWktlex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to VanuatuWktalloc in * the yyextra field. */ int VanuatuWktlex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; VanuatuWktset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) VanuatuWktalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); VanuatuWktset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from VanuatuWktlex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; ................................................................................ yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * VanuatuWktlex_init() */ return 0; } /* VanuatuWktlex_destroy is for both reentrant and non-reentrant scanners. */ int VanuatuWktlex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ VanuatuWkt_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; VanuatuWktpop_buffer_state(yyscanner); } /* Destroy the stack itself. */ VanuatuWktfree(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ VanuatuWktfree(yyg->yy_start_stack ,yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * VanuatuWktlex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ VanuatuWktfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *VanuatuWktalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *VanuatuWktrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter ................................................................................ * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void VanuatuWktfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see VanuatuWktrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" int VanuatuWktwrap(yyscan_t yyscanner ) { return 1; } /****************************************************************************** ** This is the end of the code that was created by Team Vanuatu ** of The University of Toronto. |
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | < < | < < < | < | | < | | < > | | | | | | < > | | | | > > < < | < < < > | | < | < > < | | < | < | | | | < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | | | | | | | | | | | | | | > | | | | > > > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | < | < | | | < | < | | | | | | | | | | | | | | | | | | | | | | | | | |
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 ... 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 ... 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 ... 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 ... 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 ... 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 ... 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 ... 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 ... 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 ... 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 ... 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 ... 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 ... 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 .... 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 .... 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 .... 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 .... 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 .... 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 .... 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 .... 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 .... 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 .... 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 .... 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 .... 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 .... 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 .... 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 .... 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 .... 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 .... 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 .... 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 .... 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 .... 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 .... 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 |
#define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif #ifdef yy_create_buffer #define VanuatuWkt_create_buffer_ALREADY_DEFINED #else #define yy_create_buffer VanuatuWkt_create_buffer #endif #ifdef yy_delete_buffer #define VanuatuWkt_delete_buffer_ALREADY_DEFINED #else #define yy_delete_buffer VanuatuWkt_delete_buffer #endif #ifdef yy_scan_buffer #define VanuatuWkt_scan_buffer_ALREADY_DEFINED #else #define yy_scan_buffer VanuatuWkt_scan_buffer #endif #ifdef yy_scan_string #define VanuatuWkt_scan_string_ALREADY_DEFINED #else #define yy_scan_string VanuatuWkt_scan_string #endif #ifdef yy_scan_bytes #define VanuatuWkt_scan_bytes_ALREADY_DEFINED #else #define yy_scan_bytes VanuatuWkt_scan_bytes #endif #ifdef yy_init_buffer #define VanuatuWkt_init_buffer_ALREADY_DEFINED #else #define yy_init_buffer VanuatuWkt_init_buffer #endif #ifdef yy_flush_buffer #define VanuatuWkt_flush_buffer_ALREADY_DEFINED #else #define yy_flush_buffer VanuatuWkt_flush_buffer #endif #ifdef yy_load_buffer_state #define VanuatuWkt_load_buffer_state_ALREADY_DEFINED #else #define yy_load_buffer_state VanuatuWkt_load_buffer_state #endif #ifdef yy_switch_to_buffer #define VanuatuWkt_switch_to_buffer_ALREADY_DEFINED #else #define yy_switch_to_buffer VanuatuWkt_switch_to_buffer #endif #ifdef yypush_buffer_state #define VanuatuWktpush_buffer_state_ALREADY_DEFINED #else #define yypush_buffer_state VanuatuWktpush_buffer_state #endif #ifdef yypop_buffer_state #define VanuatuWktpop_buffer_state_ALREADY_DEFINED #else #define yypop_buffer_state VanuatuWktpop_buffer_state #endif #ifdef yyensure_buffer_stack #define VanuatuWktensure_buffer_stack_ALREADY_DEFINED #else #define yyensure_buffer_stack VanuatuWktensure_buffer_stack #endif #ifdef yylex #define VanuatuWktlex_ALREADY_DEFINED #else #define yylex VanuatuWktlex #endif #ifdef yyrestart #define VanuatuWktrestart_ALREADY_DEFINED #else #define yyrestart VanuatuWktrestart #endif #ifdef yylex_init #define VanuatuWktlex_init_ALREADY_DEFINED #else #define yylex_init VanuatuWktlex_init #endif #ifdef yylex_init_extra #define VanuatuWktlex_init_extra_ALREADY_DEFINED #else #define yylex_init_extra VanuatuWktlex_init_extra #endif #ifdef yylex_destroy #define VanuatuWktlex_destroy_ALREADY_DEFINED #else #define yylex_destroy VanuatuWktlex_destroy #endif #ifdef yyget_debug #define VanuatuWktget_debug_ALREADY_DEFINED #else #define yyget_debug VanuatuWktget_debug #endif #ifdef yyset_debug #define VanuatuWktset_debug_ALREADY_DEFINED #else #define yyset_debug VanuatuWktset_debug #endif #ifdef yyget_extra #define VanuatuWktget_extra_ALREADY_DEFINED #else #define yyget_extra VanuatuWktget_extra #endif #ifdef yyset_extra #define VanuatuWktset_extra_ALREADY_DEFINED #else #define yyset_extra VanuatuWktset_extra #endif #ifdef yyget_in #define VanuatuWktget_in_ALREADY_DEFINED #else #define yyget_in VanuatuWktget_in #endif #ifdef yyset_in #define VanuatuWktset_in_ALREADY_DEFINED #else #define yyset_in VanuatuWktset_in #endif #ifdef yyget_out #define VanuatuWktget_out_ALREADY_DEFINED #else #define yyget_out VanuatuWktget_out #endif #ifdef yyset_out #define VanuatuWktset_out_ALREADY_DEFINED #else #define yyset_out VanuatuWktset_out #endif #ifdef yyget_leng #define VanuatuWktget_leng_ALREADY_DEFINED #else #define yyget_leng VanuatuWktget_leng #endif #ifdef yyget_text #define VanuatuWktget_text_ALREADY_DEFINED #else #define yyget_text VanuatuWktget_text #endif #ifdef yyget_lineno #define VanuatuWktget_lineno_ALREADY_DEFINED #else #define yyget_lineno VanuatuWktget_lineno #endif #ifdef yyset_lineno #define VanuatuWktset_lineno_ALREADY_DEFINED #else #define yyset_lineno VanuatuWktset_lineno #endif #ifdef yyget_column #define VanuatuWktget_column_ALREADY_DEFINED #else #define yyget_column VanuatuWktget_column #endif #ifdef yyset_column #define VanuatuWktset_column_ALREADY_DEFINED #else #define yyset_column VanuatuWktset_column #endif #ifdef yywrap #define VanuatuWktwrap_ALREADY_DEFINED #else #define yywrap VanuatuWktwrap #endif #ifdef yyalloc #define VanuatuWktalloc_ALREADY_DEFINED #else #define yyalloc VanuatuWktalloc #endif #ifdef yyrealloc #define VanuatuWktrealloc_ALREADY_DEFINED #else #define yyrealloc VanuatuWktrealloc #endif #ifdef yyfree #define VanuatuWktfree_ALREADY_DEFINED #else #define yyfree VanuatuWktfree #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include <stdio.h> #include <string.h> #include <errno.h> ................................................................................ #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* begin standard C++ headers. */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif ................................................................................ #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart( yyin , yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. ................................................................................ #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; ................................................................................ * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; ................................................................................ /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ ................................................................................ * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void yyrestart ( FILE *input_file , yyscan_t yyscanner ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); void yypop_buffer_state ( yyscan_t yyscanner ); static void yyensure_buffer_stack ( yyscan_t yyscanner ); static void yy_load_buffer_state ( yyscan_t yyscanner ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file , yyscan_t yyscanner ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER , yyscanner) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); void *yyalloc ( yy_size_t , yyscan_t yyscanner ); void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); void yyfree ( void * , yyscan_t yyscanner ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ typedef flex_uint8_t YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state ( yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans ( yy_state_type current_state , yyscan_t yyscanner); static int yy_get_next_buffer ( yyscan_t yyscanner ); static void yynoreturn yy_fatal_error ( const char* msg , yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (int) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 36 #define YY_END_OF_BUFFER 37 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static const flex_int16_t yy_accept[171] = { 0, 0, 0, 37, 35, 33, 34, 3, 4, 35, 2, 35, 1, 1, 35, 35, 35, 35, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ................................................................................ 0, 15, 14, 0, 0, 0, 0, 0, 16, 0, 9, 0, 17, 0, 0, 0, 11, 10, 0, 0, 19, 18, 0, 0, 12, 0, 20, 25, 0, 0, 0, 27, 26, 0, 0, 28, 0, 21, 0, 0, 23, 22, 0, 24, 29, 0, 31, 30, 32, 0 } ; static const YY_CHAR yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 6, 7, 8, 9, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, ................................................................................ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const YY_CHAR yy_meta[41] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static const flex_int16_t yy_base[171] = { 0, 0, 0, 328, 329, 329, 329, 329, 329, 32, 329, 34, 317, 36, 35, 35, 27, 33, 316, 43, 315, 47, 48, 314, 59, 70, 49, 55, 58, 69, 67, 313, 83, 80, 312, 94, 95, 85, 310, 309, 308, 65, 94, 86, 92, 86, 105, 104, 307, 306, 305, 112, 107, 304, 303, 301, 300, 299, 298, 120, 297, ................................................................................ 0, 329, 177, 177, 183, 177, 177, 190, 329, 189, 213, 183, 220, 191, 202, 0, 329, 209, 206, 0, 329, 211, 211, 219, 329, 219, 329, 247, 226, 222, 0, 329, 231, 233, 243, 329, 244, 263, 241, 0, 329, 245, 250, 329, 281, 0, 329, 259, 329, 329 } ; static const flex_int16_t yy_def[171] = { 0, 170, 1, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, ................................................................................ 115, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 131, 170, 170, 170, 133, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 148, 170, 170, 170, 170, 170, 170, 170, 170, 158, 170, 170, 170, 170, 170, 165, 170, 170, 170, 0 } ; static const flex_int16_t yy_nxt[370] = { 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 4, 4, 14, 4, 15, 16, 4, 4, 17, 4, 4, 4, 4, 4, 4, 4, 4, 14, 4, 15, 16, 4, 4, 17, 4, 4, 4, 4, 4, 4, 18, 19, 20, 21, 23, 24, 26, 25, 27, 28, 29, 31, 19, 109, 32, 34, 21, 22, 35, 36, ................................................................................ 168, 52, 47, 37, 33, 30, 22, 170, 3, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170 } ; static const flex_int16_t yy_chk[370] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 11, 11, 13, 13, 14, 13, 15, 16, 17, 19, 19, 109, 19, 21, 21, 22, 21, 22, ................................................................................ char *yytext_r; int yy_more_flag; int yy_more_len; }; /* end struct yyguts_t */ static int yy_init_globals ( yyscan_t yyscanner ); int yylex_init (yyscan_t* scanner); int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy ( yyscan_t yyscanner ); int yyget_debug ( yyscan_t yyscanner ); void yyset_debug ( int debug_flag , yyscan_t yyscanner ); YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); FILE *yyget_in ( yyscan_t yyscanner ); void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); FILE *yyget_out ( yyscan_t yyscanner ); void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); int yyget_leng ( yyscan_t yyscanner ); char *yyget_text ( yyscan_t yyscanner ); int yyget_lineno ( yyscan_t yyscanner ); void yyset_lineno ( int _line_number , yyscan_t yyscanner ); int yyget_column ( yyscan_t yyscanner ); void yyset_column ( int _column_no , yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap ( yyscan_t yyscanner ); #else extern int yywrap ( yyscan_t yyscanner ); #endif #endif #ifndef YY_NO_UNPUT #endif #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const char * , yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput ( yyscan_t yyscanner ); #else static int input ( yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ ................................................................................ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (yyscan_t yyscanner); #define YY_DECL int yylex (yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION ................................................................................ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_load_buffer_state( yyscanner ); } { while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 171 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 329 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) ................................................................................ YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; ................................................................................ else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( yywrap( yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the ................................................................................ default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = yyg->yytext_ptr; int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) ................................................................................ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr - 1); for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF ................................................................................ if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( ................................................................................ } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart( yyin , yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size , yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 171 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * ................................................................................ yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 171 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 170); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT ................................................................................ */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ int offset = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr); ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a ................................................................................ * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart( yyin , yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( yyscanner ) ) return 0; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else ................................................................................ #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE , yyscanner); } yy_init_buffer( YY_CURRENT_BUFFER, input_file , yyscanner); yy_load_buffer_state( yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( yyscanner ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } ................................................................................ /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) , yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file , yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * @param yyscanner The scanner object. */ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree( (void *) b->yy_ch_buf , yyscanner ); yyfree( (void *) b , yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flush_buffer( b , yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } ................................................................................ errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; ................................................................................ b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; yyensure_buffer_stack(yyscanner); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER , yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { yy_load_buffer_state( yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) , yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = NULL; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer( b , yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr , yyscan_t yyscanner) { return yy_scan_bytes( yystr, (int) strlen(yystr) , yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n , yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer( buf, n , yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yynoreturn yy_fatal_error (const char* msg , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; spatialite_e("%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ ................................................................................ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the user-defined data for this scanner. * @param yyscanner The scanner object. */ YY_EXTRA_TYPE yyget_extra (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyextra; } /** Get the current line number. * @param yyscanner The scanner object. */ int yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the output stream. * @param yyscanner The scanner object. */ FILE *yyget_out (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyout; } /** Get the length of the current token. * @param yyscanner The scanner object. */ int yyget_leng (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyleng; } /** Get the current token. * @param yyscanner The scanner object. */ char *yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current line number. * @param _line_number line number * @param yyscanner The scanner object. */ void yyset_lineno (int _line_number , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* lineno is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_lineno called with no buffer" ); yylineno = _line_number; } /** Set the current column. * @param _column_no column number * @param yyscanner The scanner object. */ void yyset_column (int _column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_column called with no buffer" ); yycolumn = _column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * @param yyscanner The scanner object. * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = _in_str ; } void yyset_out (FILE * _out_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyout = _out_str ; } int yyget_debug (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yy_flex_debug; } void yyset_debug (int _bdebug , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flex_debug = _bdebug ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* yylex_init_extra has the same functionality as yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ int yylex_init_extra( YY_EXTRA_TYPE yy_user_defined, yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = NULL; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = NULL; yyg->yy_init = 0; ................................................................................ yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER , yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ yyfree(yyg->yy_buffer_stack , yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ yyfree( yyg->yy_start_stack , yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, const char * s2, int n , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s , yyscan_t yyscanner) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; return malloc(size); } void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter ................................................................................ * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return realloc(ptr, size); } void yyfree (void * ptr , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; (void)yyg; free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" int yywrap(yyscan_t yyscanner ) { return 1; } /****************************************************************************** ** This is the end of the code that was created by Team Vanuatu ** of The University of Toronto. |
Changes to src/gaiageo/vanuatuWkt.c.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 ... 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 ... 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 ... 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 ... 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 ... 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 .... 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 .... 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 |
** YY_ERROR_ACTION The yy_action[] code for syntax error ** YY_ACCEPT_ACTION The yy_action[] code for accept ** YY_NO_ACTION The yy_action[] code for no-op ** YY_MIN_REDUCE Minimum value for reduce actions ** YY_MAX_REDUCE Maximum value for reduce actions */ #ifndef INTERFACE # define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char #define YYNOCODE 133 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE void * typedef union { int yyinit; ParseTOKENTYPE yy0; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 1000000 #endif #define ParseARG_SDECL struct vanuatu_data *p_data ; #define ParseARG_PDECL , struct vanuatu_data *p_data #define ParseARG_FETCH struct vanuatu_data *p_data = yypParser->p_data #define ParseARG_STORE yypParser->p_data = p_data #define YYNSTATE 315 #define YYNRULE 201 #define YYNTOKEN 34 #define YY_MAX_SHIFT 314 #define YY_MIN_SHIFTREDUCE 490 #define YY_MAX_SHIFTREDUCE 690 #define YY_ERROR_ACTION 691 ................................................................................ ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production ** code the yytestcase() macro should be turned off. But it is useful ** for testing. */ #ifndef yytestcase # define yytestcase(X) #endif /* Next are the tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement ** functions that take a state number and lookahead value and return an ** action integer. ................................................................................ ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (603) static const YYACTIONTYPE yy_action[] = { /* 0 */ 314, 314, 314, 314, 314, 314, 694, 695, 696, 697, /* 10 */ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, /* 20 */ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, /* 30 */ 718, 719, 720, 721, 887, 187, 313, 224, 174, 311, /* 40 */ 309, 307, 228, 173, 221, 218, 215, 212, 209, 203, /* 50 */ 197, 191, 185, 178, 170, 162, 153, 148, 143, 138, /* 60 */ 133, 128, 123, 118, 113, 96, 79, 62, 307, 307, /* 70 */ 309, 309, 692, 1, 212, 212, 215, 215, 191, 191, /* 80 */ 197, 197, 162, 162, 170, 170, 138, 138, 143, 143, /* 90 */ 118, 118, 123, 123, 54, 47, 71, 64, 311, 311, /* 100 */ 530, 157, 313, 224, 218, 218, 156, 313, 203, 203, /* 110 */ 221, 2, 178, 178, 209, 221, 148, 148, 185, 209, /* 120 */ 128, 128, 153, 185, 88, 81, 133, 153, 161, 166, /* 130 */ 105, 133, 226, 530, 165, 98, 60, 59, 58, 57, /* 140 */ 56, 55, 61, 52, 51, 50, 49, 48, 77, 76, /* 150 */ 75, 74, 73, 72, 230, 46, 78, 69, 68, 67, /* 160 */ 66, 65, 279, 3, 224, 94, 93, 92, 91, 90, /* 170 */ 89, 95, 86, 85, 84, 83, 82, 231, 232, 111, /* 180 */ 110, 109, 108, 107, 106, 112, 103, 102, 101, 100, /* 190 */ 99, 182, 169, 177, 184, 181, 229, 530, 530, 530, /* 200 */ 280, 281, 224, 224, 193, 284, 285, 226, 226, 226, /* 210 */ 286, 199, 289, 226, 205, 228, 228, 290, 291, 229, /* 220 */ 294, 228, 228, 295, 296, 229, 233, 213, 229, 229, /* 230 */ 226, 210, 211, 224, 224, 299, 214, 224, 301, 226, /* 240 */ 216, 226, 217, 303, 228, 219, 228, 228, 220, 308, /* 250 */ 229, 305, 226, 229, 310, 306, 229, 224, 228, 312, /* 260 */ 234, 235, 53, 4, 229, 886, 5, 6, 7, 885, /* 270 */ 8, 9, 884, 115, 190, 883, 117, 196, 882, 881, /* 280 */ 122, 880, 236, 826, 120, 237, 202, 125, 63, 238, /* 290 */ 127, 130, 208, 132, 239, 114, 240, 241, 32, 242, /* 300 */ 135, 70, 871, 870, 137, 116, 140, 35, 869, 868, /* 310 */ 142, 145, 80, 867, 866, 865, 243, 38, 825, 147, /* 320 */ 139, 129, 244, 245, 246, 247, 248, 249, 856, 87, /* 330 */ 855, 854, 853, 97, 852, 851, 850, 250, 824, 251, /* 340 */ 252, 819, 253, 254, 255, 256, 841, 104, 840, 839, /* 350 */ 838, 822, 837, 836, 835, 257, 823, 258, 810, 259, /* 360 */ 119, 121, 809, 816, 260, 124, 808, 813, 261, 126, /* 370 */ 806, 131, 807, 794, 262, 134, 136, 150, 141, 41, /* 380 */ 152, 144, 146, 803, 263, 161, 149, 155, 151, 742, /* 390 */ 793, 154, 266, 30, 800, 267, 268, 158, 159, 264, /* 400 */ 160, 10, 164, 792, 169, 740, 163, 269, 797, 33, /* 410 */ 782, 265, 270, 791, 271, 167, 168, 11, 172, 781, /* 420 */ 177, 171, 738, 272, 36, 274, 175, 176, 273, 12, /* 430 */ 180, 184, 780, 736, 179, 275, 39, 277, 276, 183, /* 440 */ 13, 779, 188, 278, 17, 194, 283, 775, 778, 186, /* 450 */ 21, 282, 762, 200, 189, 288, 25, 206, 192, 761, /* 460 */ 29, 750, 753, 287, 195, 772, 292, 198, 760, 201, /* 470 */ 769, 293, 298, 759, 748, 204, 300, 297, 674, 207, /* 480 */ 754, 746, 302, 752, 733, 673, 744, 304, 222, 223, /* 490 */ 672, 671, 751, 670, 732, 225, 731, 669, 227, 730, /* 500 */ 668, 659, 658, 657, 656, 655, 654, 653, 644, 643, /* 510 */ 642, 641, 640, 639, 638, 629, 628, 627, 626, 625, /* 520 */ 624, 623, 616, 613, 610, 607, 600, 597, 594, 591, /* 530 */ 586, 582, 525, 585, 581, 524, 584, 580, 523, 583, /* 540 */ 579, 522, 572, 693, 693, 693, 562, 569, 14, 15, /* 550 */ 16, 693, 693, 693, 561, 566, 18, 19, 20, 693, /* 560 */ 693, 693, 560, 563, 22, 23, 24, 693, 693, 693, /* 570 */ 559, 554, 26, 27, 28, 693, 553, 693, 552, 693, /* 580 */ 31, 551, 34, 685, 37, 521, 42, 693, 40, 520, /* 590 */ 43, 693, 693, 519, 44, 693, 693, 693, 518, 693, /* 600 */ 693, 693, 45, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, /* 10 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, /* 20 */ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, /* 30 */ 67, 68, 69, 70, 0, 74, 2, 76, 72, 5, /* 40 */ 6, 7, 76, 77, 10, 11, 12, 13, 14, 15, /* 50 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, /* 60 */ 26, 27, 28, 29, 30, 31, 32, 33, 7, 7, /* 70 */ 6, 6, 35, 36, 13, 13, 12, 12, 17, 17, /* 80 */ 16, 16, 21, 21, 20, 20, 25, 25, 24, 24, /* 90 */ 29, 29, 28, 28, 33, 33, 32, 32, 5, 5, /* 100 */ 8, 74, 2, 76, 11, 11, 79, 2, 15, 15, /* 110 */ 10, 9, 19, 19, 14, 10, 23, 23, 18, 14, /* 120 */ 27, 27, 22, 18, 31, 31, 26, 22, 3, 73, /* 130 */ 30, 26, 76, 8, 78, 30, 64, 65, 66, 67, /* 140 */ 68, 69, 64, 65, 66, 67, 68, 69, 50, 51, /* 150 */ 52, 53, 54, 55, 131, 127, 50, 51, 52, 53, /* 160 */ 54, 55, 74, 3, 76, 57, 58, 59, 60, 61, /* 170 */ 62, 57, 58, 59, 60, 61, 62, 131, 131, 43, /* 180 */ 44, 45, 46, 47, 48, 43, 44, 45, 46, 47, /* 190 */ 48, 71, 3, 3, 3, 75, 76, 8, 8, 8, /* 200 */ 74, 74, 76, 76, 73, 73, 73, 76, 76, 76, /* 210 */ 73, 72, 72, 76, 71, 76, 76, 72, 72, 76, /* 220 */ 71, 76, 76, 71, 71, 76, 131, 73, 76, 76, /* 230 */ 76, 74, 74, 76, 76, 74, 73, 76, 73, 76, /* 240 */ 72, 76, 72, 72, 76, 71, 76, 76, 71, 73, /* 250 */ 76, 71, 76, 76, 72, 74, 76, 76, 76, 71, /* 260 */ 131, 131, 127, 9, 76, 131, 3, 9, 3, 131, /* 270 */ 9, 3, 131, 9, 3, 131, 3, 3, 131, 131, /* 280 */ 3, 131, 131, 127, 9, 130, 3, 9, 126, 130, /* 290 */ 3, 9, 3, 3, 130, 95, 130, 130, 3, 130, /* 300 */ 9, 126, 130, 130, 3, 95, 9, 3, 130, 130, /* 310 */ 3, 9, 125, 130, 130, 130, 130, 3, 126, 3, /* 320 */ 90, 92, 129, 129, 129, 129, 129, 129, 129, 125, /* 330 */ 129, 129, 129, 124, 129, 129, 129, 129, 125, 128, /* 340 */ 128, 122, 128, 128, 128, 128, 128, 124, 128, 128, /* 350 */ 128, 123, 128, 128, 128, 128, 124, 123, 119, 122, /* 360 */ 94, 94, 118, 121, 121, 93, 117, 120, 120, 93, /* 370 */ 115, 92, 116, 111, 115, 91, 91, 9, 90, 3, /* 380 */ 3, 89, 89, 114, 114, 3, 88, 9, 88, 83, /* 390 */ 110, 79, 83, 9, 113, 87, 76, 76, 76, 113, /* 400 */ 76, 3, 9, 109, 3, 82, 78, 82, 112, 9, /* 410 */ 107, 112, 86, 108, 76, 76, 76, 3, 9, 106, /* 420 */ 3, 77, 81, 81, 9, 76, 76, 76, 85, 3, /* 430 */ 9, 3, 105, 80, 75, 80, 9, 76, 84, 76, /* 440 */ 3, 104, 9, 87, 3, 9, 86, 101, 103, 102, /* 450 */ 3, 103, 95, 9, 102, 85, 3, 9, 100, 94, /* 460 */ 3, 87, 90, 101, 100, 99, 99, 98, 93, 98, /* 470 */ 97, 84, 87, 92, 86, 96, 86, 97, 4, 96, /* 480 */ 91, 85, 85, 89, 76, 4, 84, 84, 76, 76, /* 490 */ 4, 4, 88, 4, 76, 76, 76, 4, 76, 76, /* 500 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, /* 510 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, /* 520 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, /* 530 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, /* 540 */ 4, 4, 4, 132, 132, 132, 4, 4, 9, 9, /* 550 */ 9, 132, 132, 132, 4, 4, 9, 9, 9, 132, /* 560 */ 132, 132, 4, 4, 9, 9, 9, 132, 132, 132, /* 570 */ 4, 4, 9, 9, 9, 132, 4, 132, 4, 132, /* 580 */ 9, 4, 9, 1, 9, 4, 3, 132, 9, 4, /* 590 */ 3, 132, 132, 4, 3, 132, 132, 132, 4, 132, /* 600 */ 132, 132, 3, 132, 132, 132, 132, 132, 132, 132, /* 610 */ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, /* 620 */ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, /* 630 */ 132, 132, 132, 132, 132, 132, 132, }; #define YY_SHIFT_COUNT (314) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (599) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 603, 34, 61, 62, 64, 65, 93, 94, 100, 105, /* 10 */ 125, 189, 190, 191, 92, 92, 92, 92, 92, 92, /* 20 */ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* 30 */ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* 40 */ 92, 92, 92, 92, 92, 92, 102, 160, 102, 102, /* 50 */ 102, 102, 102, 102, 160, 102, 102, 102, 102, 102, /* 60 */ 102, 102, 160, 254, 263, 254, 254, 254, 254, 254, /* 70 */ 254, 263, 254, 254, 254, 254, 254, 254, 254, 263, /* 80 */ 258, 265, 258, 258, 258, 258, 258, 258, 265, 258, /* 90 */ 258, 258, 258, 258, 258, 258, 265, 261, 268, 261, /* 100 */ 261, 261, 261, 261, 261, 268, 261, 261, 261, 261, /* 110 */ 261, 261, 261, 268, 264, 271, 264, 271, 273, 275, /* 120 */ 274, 275, 274, 277, 278, 283, 278, 283, 287, 282, /* 130 */ 289, 282, 289, 290, 291, 295, 291, 295, 301, 297, /* 140 */ 304, 297, 304, 307, 302, 314, 302, 314, 316, 368, /* 150 */ 376, 368, 376, 377, 378, 382, 378, 384, 92, 92, /* 160 */ 92, 92, 398, 393, 401, 393, 400, 92, 92, 92, /* 170 */ 414, 409, 417, 409, 415, 92, 92, 92, 426, 421, /* 180 */ 428, 421, 427, 92, 92, 437, 433, 384, 441, 433, /* 190 */ 441, 271, 436, 400, 447, 436, 447, 274, 444, 415, /* 200 */ 453, 444, 453, 283, 448, 427, 457, 448, 457, 289, /* 210 */ 384, 384, 295, 400, 400, 304, 415, 415, 314, 427, /* 220 */ 427, 376, 92, 92, 92, 92, 92, 92, 92, 92, /* 230 */ 474, 481, 486, 487, 489, 493, 496, 497, 498, 499, /* 240 */ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, /* 250 */ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, /* 260 */ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, /* 270 */ 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, /* 280 */ 540, 541, 542, 543, 547, 548, 549, 550, 551, 555, /* 290 */ 556, 557, 558, 559, 563, 564, 565, 566, 567, 571, /* 300 */ 572, 573, 574, 575, 577, 579, 581, 583, 585, 587, /* 310 */ 589, 591, 594, 599, 582, }; #define YY_REDUCE_COUNT (229) #define YY_REDUCE_MIN (-39) #define YY_REDUCE_MAX (423) static const short yy_reduce_ofst[] = { /* 0 */ 37, -37, 72, 78, 98, 106, 108, 114, 136, 142, /* 10 */ 27, 56, -34, 120, -39, 88, 126, 127, 131, 132, /* 20 */ 133, 137, 139, 140, 145, 146, 143, 149, 152, 153, /* 30 */ 157, 158, 161, 154, 163, 165, 168, 170, 171, 174, /* 40 */ 177, 180, 181, 176, 182, 188, 23, 28, 46, 47, /* 50 */ 95, 129, 130, 134, 135, 138, 141, 144, 147, 148, /* 60 */ 150, 151, 156, 155, 162, 159, 164, 166, 167, 169, /* 70 */ 172, 175, 173, 178, 179, 183, 184, 185, 186, 192, /* 80 */ 193, 187, 194, 195, 196, 197, 198, 199, 204, 201, /* 90 */ 202, 203, 205, 206, 207, 208, 213, 211, 209, 212, /* 100 */ 214, 215, 216, 217, 218, 223, 220, 221, 222, 224, /* 110 */ 225, 226, 227, 232, 228, 200, 234, 210, 239, 219, /* 120 */ 266, 237, 267, 244, 242, 272, 243, 276, 249, 247, /* 130 */ 229, 248, 279, 256, 255, 284, 259, 285, 262, 269, /* 140 */ 230, 270, 288, 280, 281, 292, 286, 293, 294, 296, /* 150 */ 298, 299, 300, 305, 306, 312, 309, 308, 320, 321, /* 160 */ 322, 324, 303, 323, 328, 325, 326, 338, 339, 340, /* 170 */ 313, 341, 344, 342, 343, 349, 350, 351, 327, 353, /* 180 */ 359, 355, 354, 361, 363, 337, 345, 356, 347, 348, /* 190 */ 352, 357, 346, 360, 358, 362, 364, 365, 366, 370, /* 200 */ 369, 367, 371, 375, 373, 387, 379, 380, 383, 381, /* 210 */ 374, 385, 389, 388, 390, 372, 396, 397, 394, 402, /* 220 */ 403, 404, 408, 412, 413, 418, 419, 420, 422, 423, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 888, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 10 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 20 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 30 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 40 */ 691, 691, 691, 691, 691, 691, 879, 691, 879, 879, /* 50 */ 879, 879, 879, 879, 691, 879, 879, 879, 879, 879, /* 60 */ 879, 879, 691, 864, 691, 864, 864, 864, 864, 864, /* 70 */ 864, 691, 864, 864, 864, 864, 864, 864, 864, 691, /* 80 */ 849, 691, 849, 849, 849, 849, 849, 849, 691, 849, /* 90 */ 849, 849, 849, 849, 849, 849, 691, 834, 691, 834, /* 100 */ 834, 834, 834, 834, 834, 691, 834, 834, 834, 834, /* 110 */ 834, 834, 834, 691, 821, 691, 821, 691, 691, 818, /* 120 */ 691, 818, 691, 691, 815, 691, 815, 691, 691, 812, /* 130 */ 691, 812, 691, 691, 805, 691, 805, 691, 691, 802, /* 140 */ 691, 802, 691, 691, 799, 691, 799, 691, 691, 796, /* 150 */ 691, 796, 691, 691, 741, 691, 741, 749, 691, 691, /* 160 */ 691, 691, 691, 739, 691, 739, 747, 691, 691, 691, /* 170 */ 691, 737, 691, 737, 745, 691, 691, 691, 691, 735, /* 180 */ 691, 735, 743, 691, 691, 691, 777, 749, 691, 777, /* 190 */ 691, 691, 774, 747, 691, 774, 691, 691, 771, 745, /* 200 */ 691, 771, 691, 691, 768, 743, 691, 768, 691, 691, /* 210 */ 749, 749, 691, 747, 747, 691, 745, 745, 691, 743, /* 220 */ 743, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 230 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 240 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 250 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 260 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 270 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 280 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 290 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 300 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 310 */ 691, 691, 691, 691, 691, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. ** ................................................................................ ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. ** ** After the "shift" half of a SHIFTREDUCE action, the stateno field ** actually contains the reduce action for the second half of the ** SHIFTREDUCE. */ struct yyStackEntry { YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */ }; typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH int yyhwm; /* High-water mark of the stack */ #endif #ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; #ifndef NDEBUG #include <stdio.h> static FILE *yyTraceFILE = 0; ................................................................................ ** line of trace output. If NULL, then tracing is ** turned off. ** </ul> ** ** Outputs: ** None. */ void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if( yyTraceFILE==0 ) yyTracePrompt = 0; else if( yyTracePrompt==0 ) yyTraceFILE = 0; } #endif /* NDEBUG */ #if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { /* 0 */ "$", /* 1 */ "VANUATU_NEWLINE", /* 2 */ "VANUATU_POINT", /* 3 */ "VANUATU_OPEN_BRACKET", /* 4 */ "VANUATU_CLOSE_BRACKET", /* 5 */ "VANUATU_POINT_M", /* 6 */ "VANUATU_POINT_Z", /* 7 */ "VANUATU_POINT_ZM", /* 8 */ "VANUATU_NUM", /* 9 */ "VANUATU_COMMA", /* 10 */ "VANUATU_LINESTRING", /* 11 */ "VANUATU_LINESTRING_M", /* 12 */ "VANUATU_LINESTRING_Z", /* 13 */ "VANUATU_LINESTRING_ZM", /* 14 */ "VANUATU_POLYGON", /* 15 */ "VANUATU_POLYGON_M", /* 16 */ "VANUATU_POLYGON_Z", /* 17 */ "VANUATU_POLYGON_ZM", /* 18 */ "VANUATU_MULTIPOINT", /* 19 */ "VANUATU_MULTIPOINT_M", /* 20 */ "VANUATU_MULTIPOINT_Z", /* 21 */ "VANUATU_MULTIPOINT_ZM", /* 22 */ "VANUATU_MULTILINESTRING", /* 23 */ "VANUATU_MULTILINESTRING_M", /* 24 */ "VANUATU_MULTILINESTRING_Z", /* 25 */ "VANUATU_MULTILINESTRING_ZM", /* 26 */ "VANUATU_MULTIPOLYGON", /* 27 */ "VANUATU_MULTIPOLYGON_M", /* 28 */ "VANUATU_MULTIPOLYGON_Z", /* 29 */ "VANUATU_MULTIPOLYGON_ZM", /* 30 */ "VANUATU_GEOMETRYCOLLECTION", /* 31 */ "VANUATU_GEOMETRYCOLLECTION_M", /* 32 */ "VANUATU_GEOMETRYCOLLECTION_Z", /* 33 */ "VANUATU_GEOMETRYCOLLECTION_ZM", /* 34 */ "error", /* 35 */ "main", /* 36 */ "in", /* 37 */ "state", /* 38 */ "program", /* 39 */ "geo_text", /* 40 */ "geo_textz", /* 41 */ "geo_textm", /* 42 */ "geo_textzm", /* 43 */ "point", /* 44 */ "linestring", /* 45 */ "polygon", /* 46 */ "multipoint", /* 47 */ "multilinestring", /* 48 */ "multipolygon", /* 49 */ "geocoll", /* 50 */ "pointz", /* 51 */ "linestringz", /* 52 */ "polygonz", /* 53 */ "multipointz", /* 54 */ "multilinestringz", /* 55 */ "multipolygonz", /* 56 */ "geocollz", /* 57 */ "pointm", /* 58 */ "linestringm", /* 59 */ "polygonm", /* 60 */ "multipointm", /* 61 */ "multilinestringm", /* 62 */ "multipolygonm", /* 63 */ "geocollm", /* 64 */ "pointzm", /* 65 */ "linestringzm", /* 66 */ "polygonzm", /* 67 */ "multipointzm", /* 68 */ "multilinestringzm", /* 69 */ "multipolygonzm", /* 70 */ "geocollzm", /* 71 */ "point_coordxy", /* 72 */ "point_coordxym", /* 73 */ "point_coordxyz", /* 74 */ "point_coordxyzm", /* 75 */ "point_brkt_coordxy", /* 76 */ "coord", /* 77 */ "point_brkt_coordxym", /* 78 */ "point_brkt_coordxyz", /* 79 */ "point_brkt_coordxyzm", /* 80 */ "extra_brkt_pointsxy", /* 81 */ "extra_brkt_pointsxym", /* 82 */ "extra_brkt_pointsxyz", /* 83 */ "extra_brkt_pointsxyzm", /* 84 */ "extra_pointsxy", /* 85 */ "extra_pointsxym", /* 86 */ "extra_pointsxyz", /* 87 */ "extra_pointsxyzm", /* 88 */ "linestring_text", /* 89 */ "linestring_textm", /* 90 */ "linestring_textz", /* 91 */ "linestring_textzm", /* 92 */ "polygon_text", /* 93 */ "polygon_textm", /* 94 */ "polygon_textz", /* 95 */ "polygon_textzm", /* 96 */ "ring", /* 97 */ "extra_rings", /* 98 */ "ringm", /* 99 */ "extra_ringsm", /* 100 */ "ringz", /* 101 */ "extra_ringsz", /* 102 */ "ringzm", /* 103 */ "extra_ringszm", /* 104 */ "multipoint_text", /* 105 */ "multipoint_textm", /* 106 */ "multipoint_textz", /* 107 */ "multipoint_textzm", /* 108 */ "multilinestring_text", /* 109 */ "multilinestring_textm", /* 110 */ "multilinestring_textz", /* 111 */ "multilinestring_textzm", /* 112 */ "multilinestring_text2", /* 113 */ "multilinestring_textm2", /* 114 */ "multilinestring_textz2", /* 115 */ "multilinestring_textzm2", /* 116 */ "multipolygon_text", /* 117 */ "multipolygon_textm", /* 118 */ "multipolygon_textz", /* 119 */ "multipolygon_textzm", /* 120 */ "multipolygon_text2", /* 121 */ "multipolygon_textm2", /* 122 */ "multipolygon_textz2", /* 123 */ "multipolygon_textzm2", /* 124 */ "geocoll_text", /* 125 */ "geocoll_textm", /* 126 */ "geocoll_textz", /* 127 */ "geocoll_textzm", /* 128 */ "geocoll_text2", /* 129 */ "geocoll_textm2", /* 130 */ "geocoll_textz2", /* 131 */ "geocoll_textzm2", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "geo_text ::= point", /* 1 */ "geo_text ::= linestring", /* 2 */ "geo_text ::= polygon", /* 3 */ "geo_text ::= multipoint", /* 4 */ "geo_text ::= multilinestring", /* 5 */ "geo_text ::= multipolygon", /* 6 */ "geo_text ::= geocoll", /* 7 */ "geo_textz ::= pointz", /* 8 */ "geo_textz ::= linestringz", /* 9 */ "geo_textz ::= polygonz", /* 10 */ "geo_textz ::= multipointz", /* 11 */ "geo_textz ::= multilinestringz", /* 12 */ "geo_textz ::= multipolygonz", /* 13 */ "geo_textz ::= geocollz", /* 14 */ "geo_textm ::= pointm", /* 15 */ "geo_textm ::= linestringm", /* 16 */ "geo_textm ::= polygonm", /* 17 */ "geo_textm ::= multipointm", /* 18 */ "geo_textm ::= multilinestringm", /* 19 */ "geo_textm ::= multipolygonm", /* 20 */ "geo_textm ::= geocollm", /* 21 */ "geo_textzm ::= pointzm", /* 22 */ "geo_textzm ::= linestringzm", /* 23 */ "geo_textzm ::= polygonzm", /* 24 */ "geo_textzm ::= multipointzm", /* 25 */ "geo_textzm ::= multilinestringzm", /* 26 */ "geo_textzm ::= multipolygonzm", /* 27 */ "geo_textzm ::= geocollzm", /* 28 */ "point ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy VANUATU_CLOSE_BRACKET", /* 29 */ "pointm ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym VANUATU_CLOSE_BRACKET", /* 30 */ "pointz ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz VANUATU_CLOSE_BRACKET", /* 31 */ "pointzm ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_CLOSE_BRACKET", /* 32 */ "point_brkt_coordxy ::= VANUATU_OPEN_BRACKET coord coord VANUATU_CLOSE_BRACKET", /* 33 */ "point_brkt_coordxym ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET", /* 34 */ "point_brkt_coordxyz ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET", /* 35 */ "point_brkt_coordxyzm ::= VANUATU_OPEN_BRACKET coord coord coord coord VANUATU_CLOSE_BRACKET", /* 36 */ "point_coordxy ::= coord coord", /* 37 */ "point_coordxym ::= coord coord coord", /* 38 */ "point_coordxyz ::= coord coord coord", /* 39 */ "point_coordxyzm ::= coord coord coord coord", /* 40 */ "coord ::= VANUATU_NUM", /* 41 */ "extra_brkt_pointsxy ::=", /* 42 */ "extra_brkt_pointsxy ::= VANUATU_COMMA point_brkt_coordxy extra_brkt_pointsxy", /* 43 */ "extra_brkt_pointsxym ::=", /* 44 */ "extra_brkt_pointsxym ::= VANUATU_COMMA point_brkt_coordxym extra_brkt_pointsxym", /* 45 */ "extra_brkt_pointsxyz ::=", /* 46 */ "extra_brkt_pointsxyz ::= VANUATU_COMMA point_brkt_coordxyz extra_brkt_pointsxyz", /* 47 */ "extra_brkt_pointsxyzm ::=", /* 48 */ "extra_brkt_pointsxyzm ::= VANUATU_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm", /* 49 */ "extra_pointsxy ::=", /* 50 */ "extra_pointsxy ::= VANUATU_COMMA point_coordxy extra_pointsxy", /* 51 */ "extra_pointsxym ::=", /* 52 */ "extra_pointsxym ::= VANUATU_COMMA point_coordxym extra_pointsxym", /* 53 */ "extra_pointsxyz ::=", /* 54 */ "extra_pointsxyz ::= VANUATU_COMMA point_coordxyz extra_pointsxyz", /* 55 */ "extra_pointsxyzm ::=", /* 56 */ "extra_pointsxyzm ::= VANUATU_COMMA point_coordxyzm extra_pointsxyzm", /* 57 */ "linestring ::= VANUATU_LINESTRING linestring_text", /* 58 */ "linestringm ::= VANUATU_LINESTRING_M linestring_textm", /* 59 */ "linestringz ::= VANUATU_LINESTRING_Z linestring_textz", /* 60 */ "linestringzm ::= VANUATU_LINESTRING_ZM linestring_textzm", /* 61 */ "linestring_text ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", /* 62 */ "linestring_textm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", /* 63 */ "linestring_textz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", /* 64 */ "linestring_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", /* 65 */ "polygon ::= VANUATU_POLYGON polygon_text", /* 66 */ "polygonm ::= VANUATU_POLYGON_M polygon_textm", /* 67 */ "polygonz ::= VANUATU_POLYGON_Z polygon_textz", /* 68 */ "polygonzm ::= VANUATU_POLYGON_ZM polygon_textzm", /* 69 */ "polygon_text ::= VANUATU_OPEN_BRACKET ring extra_rings VANUATU_CLOSE_BRACKET", /* 70 */ "polygon_textm ::= VANUATU_OPEN_BRACKET ringm extra_ringsm VANUATU_CLOSE_BRACKET", /* 71 */ "polygon_textz ::= VANUATU_OPEN_BRACKET ringz extra_ringsz VANUATU_CLOSE_BRACKET", /* 72 */ "polygon_textzm ::= VANUATU_OPEN_BRACKET ringzm extra_ringszm VANUATU_CLOSE_BRACKET", /* 73 */ "ring ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", /* 74 */ "extra_rings ::=", /* 75 */ "extra_rings ::= VANUATU_COMMA ring extra_rings", /* 76 */ "ringm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", /* 77 */ "extra_ringsm ::=", /* 78 */ "extra_ringsm ::= VANUATU_COMMA ringm extra_ringsm", /* 79 */ "ringz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", /* 80 */ "extra_ringsz ::=", /* 81 */ "extra_ringsz ::= VANUATU_COMMA ringz extra_ringsz", /* 82 */ "ringzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", /* 83 */ "extra_ringszm ::=", /* 84 */ "extra_ringszm ::= VANUATU_COMMA ringzm extra_ringszm", /* 85 */ "multipoint ::= VANUATU_MULTIPOINT multipoint_text", /* 86 */ "multipointm ::= VANUATU_MULTIPOINT_M multipoint_textm", /* 87 */ "multipointz ::= VANUATU_MULTIPOINT_Z multipoint_textz", /* 88 */ "multipointzm ::= VANUATU_MULTIPOINT_ZM multipoint_textzm", /* 89 */ "multipoint_text ::= VANUATU_OPEN_BRACKET point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", /* 90 */ "multipoint_textm ::= VANUATU_OPEN_BRACKET point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", /* 91 */ "multipoint_textz ::= VANUATU_OPEN_BRACKET point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", /* 92 */ "multipoint_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", /* 93 */ "multipoint_text ::= VANUATU_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy VANUATU_CLOSE_BRACKET", /* 94 */ "multipoint_textm ::= VANUATU_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym VANUATU_CLOSE_BRACKET", /* 95 */ "multipoint_textz ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz VANUATU_CLOSE_BRACKET", /* 96 */ "multipoint_textzm ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm VANUATU_CLOSE_BRACKET", /* 97 */ "multilinestring ::= VANUATU_MULTILINESTRING multilinestring_text", /* 98 */ "multilinestringm ::= VANUATU_MULTILINESTRING_M multilinestring_textm", /* 99 */ "multilinestringz ::= VANUATU_MULTILINESTRING_Z multilinestring_textz", /* 100 */ "multilinestringzm ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm", /* 101 */ "multilinestring_text ::= VANUATU_OPEN_BRACKET linestring_text multilinestring_text2 VANUATU_CLOSE_BRACKET", /* 102 */ "multilinestring_text2 ::=", /* 103 */ "multilinestring_text2 ::= VANUATU_COMMA linestring_text multilinestring_text2", /* 104 */ "multilinestring_textm ::= VANUATU_OPEN_BRACKET linestring_textm multilinestring_textm2 VANUATU_CLOSE_BRACKET", /* 105 */ "multilinestring_textm2 ::=", /* 106 */ "multilinestring_textm2 ::= VANUATU_COMMA linestring_textm multilinestring_textm2", /* 107 */ "multilinestring_textz ::= VANUATU_OPEN_BRACKET linestring_textz multilinestring_textz2 VANUATU_CLOSE_BRACKET", /* 108 */ "multilinestring_textz2 ::=", /* 109 */ "multilinestring_textz2 ::= VANUATU_COMMA linestring_textz multilinestring_textz2", /* 110 */ "multilinestring_textzm ::= VANUATU_OPEN_BRACKET linestring_textzm multilinestring_textzm2 VANUATU_CLOSE_BRACKET", /* 111 */ "multilinestring_textzm2 ::=", /* 112 */ "multilinestring_textzm2 ::= VANUATU_COMMA linestring_textzm multilinestring_textzm2", /* 113 */ "multipolygon ::= VANUATU_MULTIPOLYGON multipolygon_text", /* 114 */ "multipolygonm ::= VANUATU_MULTIPOLYGON_M multipolygon_textm", /* 115 */ "multipolygonz ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz", /* 116 */ "multipolygonzm ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm", /* 117 */ "multipolygon_text ::= VANUATU_OPEN_BRACKET polygon_text multipolygon_text2 VANUATU_CLOSE_BRACKET", /* 118 */ "multipolygon_text2 ::=", /* 119 */ "multipolygon_text2 ::= VANUATU_COMMA polygon_text multipolygon_text2", /* 120 */ "multipolygon_textm ::= VANUATU_OPEN_BRACKET polygon_textm multipolygon_textm2 VANUATU_CLOSE_BRACKET", /* 121 */ "multipolygon_textm2 ::=", /* 122 */ "multipolygon_textm2 ::= VANUATU_COMMA polygon_textm multipolygon_textm2", /* 123 */ "multipolygon_textz ::= VANUATU_OPEN_BRACKET polygon_textz multipolygon_textz2 VANUATU_CLOSE_BRACKET", /* 124 */ "multipolygon_textz2 ::=", /* 125 */ "multipolygon_textz2 ::= VANUATU_COMMA polygon_textz multipolygon_textz2", /* 126 */ "multipolygon_textzm ::= VANUATU_OPEN_BRACKET polygon_textzm multipolygon_textzm2 VANUATU_CLOSE_BRACKET", /* 127 */ "multipolygon_textzm2 ::=", /* 128 */ "multipolygon_textzm2 ::= VANUATU_COMMA polygon_textzm multipolygon_textzm2", /* 129 */ "geocoll ::= VANUATU_GEOMETRYCOLLECTION geocoll_text", /* 130 */ "geocollm ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm", /* 131 */ "geocollz ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz", /* 132 */ "geocollzm ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm", /* 133 */ "geocoll_text ::= VANUATU_OPEN_BRACKET point geocoll_text2 VANUATU_CLOSE_BRACKET", /* 134 */ "geocoll_text ::= VANUATU_OPEN_BRACKET linestring geocoll_text2 VANUATU_CLOSE_BRACKET", /* 135 */ "geocoll_text ::= VANUATU_OPEN_BRACKET polygon geocoll_text2 VANUATU_CLOSE_BRACKET", /* 136 */ "geocoll_text ::= VANUATU_OPEN_BRACKET multipoint geocoll_text2 VANUATU_CLOSE_BRACKET", /* 137 */ "geocoll_text ::= VANUATU_OPEN_BRACKET multilinestring geocoll_text2 VANUATU_CLOSE_BRACKET", /* 138 */ "geocoll_text ::= VANUATU_OPEN_BRACKET multipolygon geocoll_text2 VANUATU_CLOSE_BRACKET", /* 139 */ "geocoll_text ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 VANUATU_CLOSE_BRACKET", /* 140 */ "geocoll_text2 ::=", /* 141 */ "geocoll_text2 ::= VANUATU_COMMA point geocoll_text2", /* 142 */ "geocoll_text2 ::= VANUATU_COMMA linestring geocoll_text2", /* 143 */ "geocoll_text2 ::= VANUATU_COMMA polygon geocoll_text2", /* 144 */ "geocoll_text2 ::= VANUATU_COMMA multipoint geocoll_text2", /* 145 */ "geocoll_text2 ::= VANUATU_COMMA multilinestring geocoll_text2", /* 146 */ "geocoll_text2 ::= VANUATU_COMMA multipolygon geocoll_text2", /* 147 */ "geocoll_text2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2", /* 148 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET pointm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 149 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET linestringm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 150 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET polygonm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 151 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET multipointm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 152 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET multilinestringm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 153 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET multipolygonm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 154 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 155 */ "geocoll_textm2 ::=", /* 156 */ "geocoll_textm2 ::= VANUATU_COMMA pointm geocoll_textm2", /* 157 */ "geocoll_textm2 ::= VANUATU_COMMA linestringm geocoll_textm2", /* 158 */ "geocoll_textm2 ::= VANUATU_COMMA polygonm geocoll_textm2", /* 159 */ "geocoll_textm2 ::= VANUATU_COMMA multipointm geocoll_textm2", /* 160 */ "geocoll_textm2 ::= VANUATU_COMMA multilinestringm geocoll_textm2", /* 161 */ "geocoll_textm2 ::= VANUATU_COMMA multipolygonm geocoll_textm2", /* 162 */ "geocoll_textm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2", /* 163 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET pointz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 164 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET linestringz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 165 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET polygonz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 166 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET multipointz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 167 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET multilinestringz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 168 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET multipolygonz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 169 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 170 */ "geocoll_textz2 ::=", /* 171 */ "geocoll_textz2 ::= VANUATU_COMMA pointz geocoll_textz2", /* 172 */ "geocoll_textz2 ::= VANUATU_COMMA linestringz geocoll_textz2", /* 173 */ "geocoll_textz2 ::= VANUATU_COMMA polygonz geocoll_textz2", /* 174 */ "geocoll_textz2 ::= VANUATU_COMMA multipointz geocoll_textz2", /* 175 */ "geocoll_textz2 ::= VANUATU_COMMA multilinestringz geocoll_textz2", /* 176 */ "geocoll_textz2 ::= VANUATU_COMMA multipolygonz geocoll_textz2", /* 177 */ "geocoll_textz2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2", /* 178 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET pointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 179 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET linestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 180 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET polygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 181 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET multipointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 182 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET multilinestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 183 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET multipolygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 184 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 185 */ "geocoll_textzm2 ::=", /* 186 */ "geocoll_textzm2 ::= VANUATU_COMMA pointzm geocoll_textzm2", /* 187 */ "geocoll_textzm2 ::= VANUATU_COMMA linestringzm geocoll_textzm2", /* 188 */ "geocoll_textzm2 ::= VANUATU_COMMA polygonzm geocoll_textzm2", /* 189 */ "geocoll_textzm2 ::= VANUATU_COMMA multipointzm geocoll_textzm2", /* 190 */ "geocoll_textzm2 ::= VANUATU_COMMA multilinestringzm geocoll_textzm2", /* 191 */ "geocoll_textzm2 ::= VANUATU_COMMA multipolygonzm geocoll_textzm2", /* 192 */ "geocoll_textzm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2", /* 193 */ "main ::= in", /* 194 */ "in ::=", /* 195 */ "in ::= in state VANUATU_NEWLINE", /* 196 */ "state ::= program", /* 197 */ "program ::= geo_text", /* 198 */ "program ::= geo_textz", /* 199 */ "program ::= geo_textm", /* 200 */ "program ::= geo_textzm", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number ** of errors. Return 0 on success. */ static int yyGrowStack(yyParser *p){ int newSize; int idx; yyStackEntry *pNew; newSize = p->yystksz*2 + 100; idx = p->yytos ? (int)(p->yytos - p->yystack) : 0; if( p->yystack==&p->yystk0 ){ pNew = malloc(newSize*sizeof(pNew[0])); if( pNew ) pNew[0] = p->yystk0; }else{ pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); } if( pNew ){ p->yystack = pNew; p->yytos = &p->yystack[idx]; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack grows from %d to %d entries.\n", yyTracePrompt, p->yystksz, newSize); } #endif p->yystksz = newSize; } return pNew==0; } #endif /* Datatype of the argument to the memory allocated passed as the ** second argument to ParseAlloc() below. This can be changed by ** putting an appropriate #define in the %include section of the input ** grammar. */ #ifndef YYMALLOCARGTYPE # define YYMALLOCARGTYPE size_t #endif /* Initialize a new parser that has already been allocated. */ static void ParseInit(void *yypParser){ yyParser *pParser = (yyParser*)yypParser; #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 pParser->yytos = NULL; pParser->yystack = NULL; pParser->yystksz = 0; if( yyGrowStack(pParser) ){ pParser->yystack = &pParser->yystk0; pParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY pParser->yyerrcnt = -1; #endif pParser->yytos = pParser->yystack; pParser->yystack[0].stateno = 0; pParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH-1]; #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like ................................................................................ ** Inputs: ** A pointer to the function used to allocate memory. ** ** Outputs: ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ void *ParseAlloc(void *(*mallocProc)(YYMALLOCARGTYPE)){ yyParser *pParser; pParser = (yyParser*)(*mallocProc)( (YYMALLOCARGTYPE)sizeof(yyParser) ); if( pParser ) ParseInit(pParser); return pParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ /* The following function deletes the "minor type" or semantic value ** associated with a symbol. The symbol can be either a terminal ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is ** a pointer to the value to be deleted. The code used to do the ** deletions is derived from the %destructor and/or %token_destructor ** directives of the input grammar. */ static void yy_destructor( yyParser *yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE *yypminor /* The object to be destroyed */ ){ ParseARG_FETCH; switch( yymajor ){ /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen ** when the symbol is popped from the stack during a ** reduce or during error processing or when a parser is ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ /********* Begin destructor definitions ***************************************/ /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } /* ** Pop the parser's stack once. ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. */ static void yy_pop_parser_stack(yyParser *pParser){ yyStackEntry *yytos; assert( pParser->yytos!=0 ); assert( pParser->yytos > pParser->yystack ); yytos = pParser->yytos--; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif yy_destructor(pParser, yytos->major, &yytos->minor); } /* ** Clear all secondary memory allocations from the parser */ static void ParseFinalize(void *p){ yyParser *pParser = (yyParser*)p; while( pParser->yytos>pParser->yystack ) yy_pop_parser_stack(pParser); #if YYSTACKDEPTH<=0 if( pParser->yystack!=&pParser->yystk0 ) free(pParser->yystack); #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** ** If the YYPARSEFREENEVERNULL macro exists (for example because it ** is defined in a %include section of the input grammar) then it is ** assumed that the input pointer is never NULL. */ void ParseFree( void *p, /* The parser to be deleted */ void (*freeProc)(void*) /* Function used to reclaim memory */ ){ #ifndef YYPARSEFREENEVERNULL if( p==0 ) return; #endif ParseFinalize(p); (*freeProc)(p); } #endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. */ #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak(void *p){ yyParser *pParser = (yyParser*)p; return pParser->yyhwm; } #endif /* This array of booleans keeps track of the parser statement ** coverage. The element yycoverage[X][Y] is set when the parser ** is in state X and has a lookahead token Y. In a well-tested ** systems, every element of this matrix should end up being set. ................................................................................ ** ** (1) has not been used by the parser, and ** (2) is not a syntax error. ** ** Return the number of missed state/lookahead combinations. */ #if defined(YYCOVERAGE) int ParseCoverage(FILE *out){ int stateno, iLookAhead, i; int nMissed = 0; for(stateno=0; stateno<YYNSTATE; stateno++){ i = yy_shift_ofst[stateno]; for(iLookAhead=0; iLookAhead<YYNTOKEN; iLookAhead++){ if( yy_lookahead[i+iLookAhead]!=iLookAhead ) continue; if( yycoverage[stateno][iLookAhead]==0 ) nMissed++; if( out ){ fprintf(out,"State %d lookahead %s %s\n", stateno, yyTokenName[iLookAhead], yycoverage[stateno][iLookAhead] ? "ok" : "missed"); } } } return nMissed; } #endif /* ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ static unsigned int yy_find_shift_action( yyParser *pParser, /* The parser */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; int stateno = pParser->yytos->stateno; if( stateno>YY_MAX_SHIFT ) return stateno; assert( stateno <= YY_SHIFT_COUNT ); #if defined(YYCOVERAGE) yycoverage[stateno][iLookAhead] = 1; #endif do{ i = yy_shift_ofst[stateno]; assert( i>=0 ); assert( i+YYNTOKEN<=(int)sizeof(yy_lookahead)/sizeof(yy_lookahead[0]) ); assert( iLookAhead!=YYNOCODE ); assert( iLookAhead < YYNTOKEN ); i += iLookAhead; if( yy_lookahead[i]!=iLookAhead ){ #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) && (iFallback = yyFallback[iLookAhead])!=0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); } #endif assert( yyFallback[iFallback]==0 ); /* Fallback loop must terminate */ iLookAhead = iFallback; continue; } #endif #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; if( #if YY_SHIFT_MIN+YYWILDCARD<0 j>=0 && #endif #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT j<YY_ACTTAB_COUNT && #endif yy_lookahead[j]==YYWILDCARD && iLookAhead>0 ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ return yy_default[stateno]; }else{ return yy_action[i]; } }while(1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ static int yy_find_reduce_action( int stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ){ int i; #ifdef YYERRORSYMBOL if( stateno>YY_REDUCE_COUNT ){ return yy_default[stateno]; } #else assert( stateno<=YY_REDUCE_COUNT ); #endif i = yy_reduce_ofst[stateno]; assert( iLookAhead!=YYNOCODE ); i += iLookAhead; #ifdef YYERRORSYMBOL if( i<0 || i>=YY_ACTTAB_COUNT || yy_lookahead[i]!=iLookAhead ){ return yy_default[stateno]; } #else assert( i>=0 && i<YY_ACTTAB_COUNT ); assert( yy_lookahead[i]==iLookAhead ); #endif return yy_action[i]; } /* ** The following routine is called if the stack overflows. */ static void yyStackOverflow(yyParser *yypParser){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); } #endif while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ /******** Begin %stack_overflow code ******************************************/ spatialite_e( "Giving up. Parser stack overflow\n"); /******** End %stack_overflow code ********************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ } /* ** Print tracing information for a SHIFT action */ #ifndef NDEBUG static void yyTraceShift(yyParser *yypParser, int yyNewState, const char *zTag){ if( yyTraceFILE ){ if( yyNewState<YYNSTATE ){ fprintf(yyTraceFILE,"%s%s '%s', go to state %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState); }else{ fprintf(yyTraceFILE,"%s%s '%s', pending reduce %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState - YY_MIN_REDUCE); } } } #else # define yyTraceShift(X,Y,Z) #endif /* ** Perform a shift action. */ static void yy_shift( yyParser *yypParser, /* The parser to be shifted */ int yyNewState, /* The new state to shift in */ int yyMajor, /* The major token to shift in */ ParseTOKENTYPE yyMinor /* The minor token to shift in */ ){ yyStackEntry *yytos; yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack) ); } #endif #if YYSTACKDEPTH>0 if( yypParser->yytos>yypParser->yystackEnd ){ yypParser->yytos--; yyStackOverflow(yypParser); return; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz] ){ if( yyGrowStack(yypParser) ){ yypParser->yytos--; yyStackOverflow(yypParser); return; } } #endif if( yyNewState > YY_MAX_SHIFT ){ yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } yytos = yypParser->yytos; yytos->stateno = (YYACTIONTYPE)yyNewState; yytos->major = (YYCODETYPE)yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift(yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { { 39, -1 }, /* (0) geo_text ::= point */ { 39, -1 }, /* (1) geo_text ::= linestring */ { 39, -1 }, /* (2) geo_text ::= polygon */ { 39, -1 }, /* (3) geo_text ::= multipoint */ { 39, -1 }, /* (4) geo_text ::= multilinestring */ { 39, -1 }, /* (5) geo_text ::= multipolygon */ { 39, -1 }, /* (6) geo_text ::= geocoll */ { 40, -1 }, /* (7) geo_textz ::= pointz */ { 40, -1 }, /* (8) geo_textz ::= linestringz */ { 40, -1 }, /* (9) geo_textz ::= polygonz */ { 40, -1 }, /* (10) geo_textz ::= multipointz */ { 40, -1 }, /* (11) geo_textz ::= multilinestringz */ { 40, -1 }, /* (12) geo_textz ::= multipolygonz */ { 40, -1 }, /* (13) geo_textz ::= geocollz */ { 41, -1 }, /* (14) geo_textm ::= pointm */ { 41, -1 }, /* (15) geo_textm ::= linestringm */ { 41, -1 }, /* (16) geo_textm ::= polygonm */ { 41, -1 }, /* (17) geo_textm ::= multipointm */ { 41, -1 }, /* (18) geo_textm ::= multilinestringm */ { 41, -1 }, /* (19) geo_textm ::= multipolygonm */ { 41, -1 }, /* (20) geo_textm ::= geocollm */ { 42, -1 }, /* (21) geo_textzm ::= pointzm */ { 42, -1 }, /* (22) geo_textzm ::= linestringzm */ { 42, -1 }, /* (23) geo_textzm ::= polygonzm */ { 42, -1 }, /* (24) geo_textzm ::= multipointzm */ { 42, -1 }, /* (25) geo_textzm ::= multilinestringzm */ { 42, -1 }, /* (26) geo_textzm ::= multipolygonzm */ { 42, -1 }, /* (27) geo_textzm ::= geocollzm */ { 43, -4 }, /* (28) point ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy VANUATU_CLOSE_BRACKET */ { 57, -4 }, /* (29) pointm ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym VANUATU_CLOSE_BRACKET */ { 50, -4 }, /* (30) pointz ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz VANUATU_CLOSE_BRACKET */ { 64, -4 }, /* (31) pointzm ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_CLOSE_BRACKET */ { 75, -4 }, /* (32) point_brkt_coordxy ::= VANUATU_OPEN_BRACKET coord coord VANUATU_CLOSE_BRACKET */ { 77, -5 }, /* (33) point_brkt_coordxym ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ { 78, -5 }, /* (34) point_brkt_coordxyz ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ { 79, -6 }, /* (35) point_brkt_coordxyzm ::= VANUATU_OPEN_BRACKET coord coord coord coord VANUATU_CLOSE_BRACKET */ { 71, -2 }, /* (36) point_coordxy ::= coord coord */ { 72, -3 }, /* (37) point_coordxym ::= coord coord coord */ { 73, -3 }, /* (38) point_coordxyz ::= coord coord coord */ { 74, -4 }, /* (39) point_coordxyzm ::= coord coord coord coord */ { 76, -1 }, /* (40) coord ::= VANUATU_NUM */ { 80, 0 }, /* (41) extra_brkt_pointsxy ::= */ { 80, -3 }, /* (42) extra_brkt_pointsxy ::= VANUATU_COMMA point_brkt_coordxy extra_brkt_pointsxy */ { 81, 0 }, /* (43) extra_brkt_pointsxym ::= */ { 81, -3 }, /* (44) extra_brkt_pointsxym ::= VANUATU_COMMA point_brkt_coordxym extra_brkt_pointsxym */ { 82, 0 }, /* (45) extra_brkt_pointsxyz ::= */ { 82, -3 }, /* (46) extra_brkt_pointsxyz ::= VANUATU_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ { 83, 0 }, /* (47) extra_brkt_pointsxyzm ::= */ { 83, -3 }, /* (48) extra_brkt_pointsxyzm ::= VANUATU_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ { 84, 0 }, /* (49) extra_pointsxy ::= */ { 84, -3 }, /* (50) extra_pointsxy ::= VANUATU_COMMA point_coordxy extra_pointsxy */ { 85, 0 }, /* (51) extra_pointsxym ::= */ { 85, -3 }, /* (52) extra_pointsxym ::= VANUATU_COMMA point_coordxym extra_pointsxym */ { 86, 0 }, /* (53) extra_pointsxyz ::= */ { 86, -3 }, /* (54) extra_pointsxyz ::= VANUATU_COMMA point_coordxyz extra_pointsxyz */ { 87, 0 }, /* (55) extra_pointsxyzm ::= */ { 87, -3 }, /* (56) extra_pointsxyzm ::= VANUATU_COMMA point_coordxyzm extra_pointsxyzm */ { 44, -2 }, /* (57) linestring ::= VANUATU_LINESTRING linestring_text */ { 58, -2 }, /* (58) linestringm ::= VANUATU_LINESTRING_M linestring_textm */ { 51, -2 }, /* (59) linestringz ::= VANUATU_LINESTRING_Z linestring_textz */ { 65, -2 }, /* (60) linestringzm ::= VANUATU_LINESTRING_ZM linestring_textzm */ { 88, -6 }, /* (61) linestring_text ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ { 89, -6 }, /* (62) linestring_textm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ { 90, -6 }, /* (63) linestring_textz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ { 91, -6 }, /* (64) linestring_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ { 45, -2 }, /* (65) polygon ::= VANUATU_POLYGON polygon_text */ { 59, -2 }, /* (66) polygonm ::= VANUATU_POLYGON_M polygon_textm */ { 52, -2 }, /* (67) polygonz ::= VANUATU_POLYGON_Z polygon_textz */ { 66, -2 }, /* (68) polygonzm ::= VANUATU_POLYGON_ZM polygon_textzm */ { 92, -4 }, /* (69) polygon_text ::= VANUATU_OPEN_BRACKET ring extra_rings VANUATU_CLOSE_BRACKET */ { 93, -4 }, /* (70) polygon_textm ::= VANUATU_OPEN_BRACKET ringm extra_ringsm VANUATU_CLOSE_BRACKET */ { 94, -4 }, /* (71) polygon_textz ::= VANUATU_OPEN_BRACKET ringz extra_ringsz VANUATU_CLOSE_BRACKET */ { 95, -4 }, /* (72) polygon_textzm ::= VANUATU_OPEN_BRACKET ringzm extra_ringszm VANUATU_CLOSE_BRACKET */ { 96, -10 }, /* (73) ring ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ { 97, 0 }, /* (74) extra_rings ::= */ { 97, -3 }, /* (75) extra_rings ::= VANUATU_COMMA ring extra_rings */ { 98, -10 }, /* (76) ringm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ { 99, 0 }, /* (77) extra_ringsm ::= */ { 99, -3 }, /* (78) extra_ringsm ::= VANUATU_COMMA ringm extra_ringsm */ { 100, -10 }, /* (79) ringz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ { 101, 0 }, /* (80) extra_ringsz ::= */ { 101, -3 }, /* (81) extra_ringsz ::= VANUATU_COMMA ringz extra_ringsz */ { 102, -10 }, /* (82) ringzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ { 103, 0 }, /* (83) extra_ringszm ::= */ { 103, -3 }, /* (84) extra_ringszm ::= VANUATU_COMMA ringzm extra_ringszm */ { 46, -2 }, /* (85) multipoint ::= VANUATU_MULTIPOINT multipoint_text */ { 60, -2 }, /* (86) multipointm ::= VANUATU_MULTIPOINT_M multipoint_textm */ { 53, -2 }, /* (87) multipointz ::= VANUATU_MULTIPOINT_Z multipoint_textz */ { 67, -2 }, /* (88) multipointzm ::= VANUATU_MULTIPOINT_ZM multipoint_textzm */ { 104, -4 }, /* (89) multipoint_text ::= VANUATU_OPEN_BRACKET point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ { 105, -4 }, /* (90) multipoint_textm ::= VANUATU_OPEN_BRACKET point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ { 106, -4 }, /* (91) multipoint_textz ::= VANUATU_OPEN_BRACKET point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ { 107, -4 }, /* (92) multipoint_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ { 104, -4 }, /* (93) multipoint_text ::= VANUATU_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy VANUATU_CLOSE_BRACKET */ { 105, -4 }, /* (94) multipoint_textm ::= VANUATU_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym VANUATU_CLOSE_BRACKET */ { 106, -4 }, /* (95) multipoint_textz ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz VANUATU_CLOSE_BRACKET */ { 107, -4 }, /* (96) multipoint_textzm ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm VANUATU_CLOSE_BRACKET */ { 47, -2 }, /* (97) multilinestring ::= VANUATU_MULTILINESTRING multilinestring_text */ { 61, -2 }, /* (98) multilinestringm ::= VANUATU_MULTILINESTRING_M multilinestring_textm */ { 54, -2 }, /* (99) multilinestringz ::= VANUATU_MULTILINESTRING_Z multilinestring_textz */ { 68, -2 }, /* (100) multilinestringzm ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm */ { 108, -4 }, /* (101) multilinestring_text ::= VANUATU_OPEN_BRACKET linestring_text multilinestring_text2 VANUATU_CLOSE_BRACKET */ { 112, 0 }, /* (102) multilinestring_text2 ::= */ { 112, -3 }, /* (103) multilinestring_text2 ::= VANUATU_COMMA linestring_text multilinestring_text2 */ { 109, -4 }, /* (104) multilinestring_textm ::= VANUATU_OPEN_BRACKET linestring_textm multilinestring_textm2 VANUATU_CLOSE_BRACKET */ { 113, 0 }, /* (105) multilinestring_textm2 ::= */ { 113, -3 }, /* (106) multilinestring_textm2 ::= VANUATU_COMMA linestring_textm multilinestring_textm2 */ { 110, -4 }, /* (107) multilinestring_textz ::= VANUATU_OPEN_BRACKET linestring_textz multilinestring_textz2 VANUATU_CLOSE_BRACKET */ { 114, 0 }, /* (108) multilinestring_textz2 ::= */ { 114, -3 }, /* (109) multilinestring_textz2 ::= VANUATU_COMMA linestring_textz multilinestring_textz2 */ { 111, -4 }, /* (110) multilinestring_textzm ::= VANUATU_OPEN_BRACKET linestring_textzm multilinestring_textzm2 VANUATU_CLOSE_BRACKET */ { 115, 0 }, /* (111) multilinestring_textzm2 ::= */ { 115, -3 }, /* (112) multilinestring_textzm2 ::= VANUATU_COMMA linestring_textzm multilinestring_textzm2 */ { 48, -2 }, /* (113) multipolygon ::= VANUATU_MULTIPOLYGON multipolygon_text */ { 62, -2 }, /* (114) multipolygonm ::= VANUATU_MULTIPOLYGON_M multipolygon_textm */ { 55, -2 }, /* (115) multipolygonz ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz */ { 69, -2 }, /* (116) multipolygonzm ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm */ { 116, -4 }, /* (117) multipolygon_text ::= VANUATU_OPEN_BRACKET polygon_text multipolygon_text2 VANUATU_CLOSE_BRACKET */ { 120, 0 }, /* (118) multipolygon_text2 ::= */ { 120, -3 }, /* (119) multipolygon_text2 ::= VANUATU_COMMA polygon_text multipolygon_text2 */ { 117, -4 }, /* (120) multipolygon_textm ::= VANUATU_OPEN_BRACKET polygon_textm multipolygon_textm2 VANUATU_CLOSE_BRACKET */ { 121, 0 }, /* (121) multipolygon_textm2 ::= */ { 121, -3 }, /* (122) multipolygon_textm2 ::= VANUATU_COMMA polygon_textm multipolygon_textm2 */ { 118, -4 }, /* (123) multipolygon_textz ::= VANUATU_OPEN_BRACKET polygon_textz multipolygon_textz2 VANUATU_CLOSE_BRACKET */ { 122, 0 }, /* (124) multipolygon_textz2 ::= */ { 122, -3 }, /* (125) multipolygon_textz2 ::= VANUATU_COMMA polygon_textz multipolygon_textz2 */ { 119, -4 }, /* (126) multipolygon_textzm ::= VANUATU_OPEN_BRACKET polygon_textzm multipolygon_textzm2 VANUATU_CLOSE_BRACKET */ { 123, 0 }, /* (127) multipolygon_textzm2 ::= */ { 123, -3 }, /* (128) multipolygon_textzm2 ::= VANUATU_COMMA polygon_textzm multipolygon_textzm2 */ { 49, -2 }, /* (129) geocoll ::= VANUATU_GEOMETRYCOLLECTION geocoll_text */ { 63, -2 }, /* (130) geocollm ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm */ { 56, -2 }, /* (131) geocollz ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz */ { 70, -2 }, /* (132) geocollzm ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm */ { 124, -4 }, /* (133) geocoll_text ::= VANUATU_OPEN_BRACKET point geocoll_text2 VANUATU_CLOSE_BRACKET */ { 124, -4 }, /* (134) geocoll_text ::= VANUATU_OPEN_BRACKET linestring geocoll_text2 VANUATU_CLOSE_BRACKET */ { 124, -4 }, /* (135) geocoll_text ::= VANUATU_OPEN_BRACKET polygon geocoll_text2 VANUATU_CLOSE_BRACKET */ { 124, -4 }, /* (136) geocoll_text ::= VANUATU_OPEN_BRACKET multipoint geocoll_text2 VANUATU_CLOSE_BRACKET */ { 124, -4 }, /* (137) geocoll_text ::= VANUATU_OPEN_BRACKET multilinestring geocoll_text2 VANUATU_CLOSE_BRACKET */ { 124, -4 }, /* (138) geocoll_text ::= VANUATU_OPEN_BRACKET multipolygon geocoll_text2 VANUATU_CLOSE_BRACKET */ { 124, -5 }, /* (139) geocoll_text ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 VANUATU_CLOSE_BRACKET */ { 128, 0 }, /* (140) geocoll_text2 ::= */ { 128, -3 }, /* (141) geocoll_text2 ::= VANUATU_COMMA point geocoll_text2 */ { 128, -3 }, /* (142) geocoll_text2 ::= VANUATU_COMMA linestring geocoll_text2 */ { 128, -3 }, /* (143) geocoll_text2 ::= VANUATU_COMMA polygon geocoll_text2 */ { 128, -3 }, /* (144) geocoll_text2 ::= VANUATU_COMMA multipoint geocoll_text2 */ { 128, -3 }, /* (145) geocoll_text2 ::= VANUATU_COMMA multilinestring geocoll_text2 */ { 128, -3 }, /* (146) geocoll_text2 ::= VANUATU_COMMA multipolygon geocoll_text2 */ { 128, -4 }, /* (147) geocoll_text2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ { 125, -4 }, /* (148) geocoll_textm ::= VANUATU_OPEN_BRACKET pointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ { 125, -4 }, /* (149) geocoll_textm ::= VANUATU_OPEN_BRACKET linestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ { 125, -4 }, /* (150) geocoll_textm ::= VANUATU_OPEN_BRACKET polygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ { 125, -4 }, /* (151) geocoll_textm ::= VANUATU_OPEN_BRACKET multipointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ { 125, -4 }, /* (152) geocoll_textm ::= VANUATU_OPEN_BRACKET multilinestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ { 125, -4 }, /* (153) geocoll_textm ::= VANUATU_OPEN_BRACKET multipolygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ { 125, -5 }, /* (154) geocoll_textm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 VANUATU_CLOSE_BRACKET */ { 129, 0 }, /* (155) geocoll_textm2 ::= */ { 129, -3 }, /* (156) geocoll_textm2 ::= VANUATU_COMMA pointm geocoll_textm2 */ { 129, -3 }, /* (157) geocoll_textm2 ::= VANUATU_COMMA linestringm geocoll_textm2 */ { 129, -3 }, /* (158) geocoll_textm2 ::= VANUATU_COMMA polygonm geocoll_textm2 */ { 129, -3 }, /* (159) geocoll_textm2 ::= VANUATU_COMMA multipointm geocoll_textm2 */ { 129, -3 }, /* (160) geocoll_textm2 ::= VANUATU_COMMA multilinestringm geocoll_textm2 */ { 129, -3 }, /* (161) geocoll_textm2 ::= VANUATU_COMMA multipolygonm geocoll_textm2 */ { 129, -4 }, /* (162) geocoll_textm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ { 126, -4 }, /* (163) geocoll_textz ::= VANUATU_OPEN_BRACKET pointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ { 126, -4 }, /* (164) geocoll_textz ::= VANUATU_OPEN_BRACKET linestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ { 126, -4 }, /* (165) geocoll_textz ::= VANUATU_OPEN_BRACKET polygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ { 126, -4 }, /* (166) geocoll_textz ::= VANUATU_OPEN_BRACKET multipointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ { 126, -4 }, /* (167) geocoll_textz ::= VANUATU_OPEN_BRACKET multilinestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ { 126, -4 }, /* (168) geocoll_textz ::= VANUATU_OPEN_BRACKET multipolygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ { 126, -5 }, /* (169) geocoll_textz ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 VANUATU_CLOSE_BRACKET */ { 130, 0 }, /* (170) geocoll_textz2 ::= */ { 130, -3 }, /* (171) geocoll_textz2 ::= VANUATU_COMMA pointz geocoll_textz2 */ { 130, -3 }, /* (172) geocoll_textz2 ::= VANUATU_COMMA linestringz geocoll_textz2 */ { 130, -3 }, /* (173) geocoll_textz2 ::= VANUATU_COMMA polygonz geocoll_textz2 */ { 130, -3 }, /* (174) geocoll_textz2 ::= VANUATU_COMMA multipointz geocoll_textz2 */ { 130, -3 }, /* (175) geocoll_textz2 ::= VANUATU_COMMA multilinestringz geocoll_textz2 */ { 130, -3 }, /* (176) geocoll_textz2 ::= VANUATU_COMMA multipolygonz geocoll_textz2 */ { 130, -4 }, /* (177) geocoll_textz2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 */ { 127, -4 }, /* (178) geocoll_textzm ::= VANUATU_OPEN_BRACKET pointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ { 127, -4 }, /* (179) geocoll_textzm ::= VANUATU_OPEN_BRACKET linestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ { 127, -4 }, /* (180) geocoll_textzm ::= VANUATU_OPEN_BRACKET polygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ { 127, -4 }, /* (181) geocoll_textzm ::= VANUATU_OPEN_BRACKET multipointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ { 127, -4 }, /* (182) geocoll_textzm ::= VANUATU_OPEN_BRACKET multilinestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ { 127, -4 }, /* (183) geocoll_textzm ::= VANUATU_OPEN_BRACKET multipolygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ { 127, -5 }, /* (184) geocoll_textzm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ { 131, 0 }, /* (185) geocoll_textzm2 ::= */ { 131, -3 }, /* (186) geocoll_textzm2 ::= VANUATU_COMMA pointzm geocoll_textzm2 */ { 131, -3 }, /* (187) geocoll_textzm2 ::= VANUATU_COMMA linestringzm geocoll_textzm2 */ { 131, -3 }, /* (188) geocoll_textzm2 ::= VANUATU_COMMA polygonzm geocoll_textzm2 */ { 131, -3 }, /* (189) geocoll_textzm2 ::= VANUATU_COMMA multipointzm geocoll_textzm2 */ { 131, -3 }, /* (190) geocoll_textzm2 ::= VANUATU_COMMA multilinestringzm geocoll_textzm2 */ { 131, -3 }, /* (191) geocoll_textzm2 ::= VANUATU_COMMA multipolygonzm geocoll_textzm2 */ { 131, -4 }, /* (192) geocoll_textzm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 */ { 35, -1 }, /* (193) main ::= in */ { 36, 0 }, /* (194) in ::= */ { 36, -3 }, /* (195) in ::= in state VANUATU_NEWLINE */ { 37, -1 }, /* (196) state ::= program */ { 38, -1 }, /* (197) program ::= geo_text */ { 38, -1 }, /* (198) program ::= geo_textz */ { 38, -1 }, /* (199) program ::= geo_textm */ { 38, -1 }, /* (200) program ::= geo_textzm */ }; static void yy_accept(yyParser*); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. ** ** The yyLookahead and yyLookaheadToken parameters provide reduce actions ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE ** if the lookahead token has already been consumed. As this procedure is ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ static void yy_reduce( yyParser *yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ ){ int yygoto; /* The next state */ int yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ ParseARG_FETCH; (void)yyLookahead; (void)yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if( yyTraceFILE && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ yysize = yyRuleInfo[yyruleno].nrhs; if( yysize ){ fprintf(yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); }else{ fprintf(yyTraceFILE, "%sReduce %d [%s].\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno]); } } #endif /* NDEBUG */ /* Check that the stack is large enough to grow by a single entry ** if the RHS of the rule is empty. This ensures that there is room ** enough on the stack to push the LHS value */ if( yyRuleInfo[yyruleno].nrhs==0 ){ #ifdef YYTRACKMAXSTACKDEPTH if( (int)(yypParser->yytos - yypParser->yystack)>yypParser->yyhwm ){ yypParser->yyhwm++; assert( yypParser->yyhwm == (int)(yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if( yypParser->yytos>=yypParser->yystackEnd ){ yyStackOverflow(yypParser); return; } #else if( yypParser->yytos>=&yypParser->yystack[yypParser->yystksz-1] ){ if( yyGrowStack(yypParser) ){ yyStackOverflow(yypParser); return; } yymsp = yypParser->yytos; } #endif } switch( yyruleno ){ /* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* geo_text ::= point */ case 1: /* geo_text ::= linestring */ yytestcase(yyruleno==1); case 2: /* geo_text ::= polygon */ yytestcase(yyruleno==2); case 3: /* geo_text ::= multipoint */ yytestcase(yyruleno==3); case 4: /* geo_text ::= multilinestring */ yytestcase(yyruleno==4); case 5: /* geo_text ::= multipolygon */ yytestcase(yyruleno==5); case 6: /* geo_text ::= geocoll */ yytestcase(yyruleno==6); case 7: /* geo_textz ::= pointz */ yytestcase(yyruleno==7); case 8: /* geo_textz ::= linestringz */ yytestcase(yyruleno==8); case 9: /* geo_textz ::= polygonz */ yytestcase(yyruleno==9); case 10: /* geo_textz ::= multipointz */ yytestcase(yyruleno==10); case 11: /* geo_textz ::= multilinestringz */ yytestcase(yyruleno==11); case 12: /* geo_textz ::= multipolygonz */ yytestcase(yyruleno==12); case 13: /* geo_textz ::= geocollz */ yytestcase(yyruleno==13); case 14: /* geo_textm ::= pointm */ yytestcase(yyruleno==14); case 15: /* geo_textm ::= linestringm */ yytestcase(yyruleno==15); case 16: /* geo_textm ::= polygonm */ yytestcase(yyruleno==16); case 17: /* geo_textm ::= multipointm */ yytestcase(yyruleno==17); case 18: /* geo_textm ::= multilinestringm */ yytestcase(yyruleno==18); case 19: /* geo_textm ::= multipolygonm */ yytestcase(yyruleno==19); case 20: /* geo_textm ::= geocollm */ yytestcase(yyruleno==20); case 21: /* geo_textzm ::= pointzm */ yytestcase(yyruleno==21); case 22: /* geo_textzm ::= linestringzm */ yytestcase(yyruleno==22); case 23: /* geo_textzm ::= polygonzm */ yytestcase(yyruleno==23); case 24: /* geo_textzm ::= multipointzm */ yytestcase(yyruleno==24); case 25: /* geo_textzm ::= multilinestringzm */ yytestcase(yyruleno==25); case 26: /* geo_textzm ::= multipolygonzm */ yytestcase(yyruleno==26); case 27: /* geo_textzm ::= geocollzm */ yytestcase(yyruleno==27); { p_data->result = yymsp[0].minor.yy0; } break; case 28: /* point ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy VANUATU_CLOSE_BRACKET */ { yymsp[-3].minor.yy0 = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } break; case 29: /* pointm ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym VANUATU_CLOSE_BRACKET */ case 30: /* pointz ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==30); case 31: /* pointzm ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==31); { yymsp[-3].minor.yy0 = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } break; case 32: /* point_brkt_coordxy ::= VANUATU_OPEN_BRACKET coord coord VANUATU_CLOSE_BRACKET */ { yymsp[-3].minor.yy0 = (void *) vanuatu_point_xy( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } break; case 33: /* point_brkt_coordxym ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ { yymsp[-4].minor.yy0 = (void *) vanuatu_point_xym( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } break; case 34: /* point_brkt_coordxyz ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ { yymsp[-4].minor.yy0 = (void *) vanuatu_point_xyz( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } break; case 35: /* point_brkt_coordxyzm ::= VANUATU_OPEN_BRACKET coord coord coord coord VANUATU_CLOSE_BRACKET */ { yymsp[-5].minor.yy0 = (void *) vanuatu_point_xyzm( p_data, (double *)yymsp[-4].minor.yy0, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } break; case 36: /* point_coordxy ::= coord coord */ { yylhsminor.yy0 = (void *) vanuatu_point_xy( p_data, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 37: /* point_coordxym ::= coord coord coord */ { yylhsminor.yy0 = (void *) vanuatu_point_xym( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 38: /* point_coordxyz ::= coord coord coord */ { yylhsminor.yy0 = (void *) vanuatu_point_xyz( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 39: /* point_coordxyzm ::= coord coord coord coord */ { yylhsminor.yy0 = (void *) vanuatu_point_xyzm( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 40: /* coord ::= VANUATU_NUM */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 41: /* extra_brkt_pointsxy ::= */ case 43: /* extra_brkt_pointsxym ::= */ yytestcase(yyruleno==43); case 45: /* extra_brkt_pointsxyz ::= */ yytestcase(yyruleno==45); case 47: /* extra_brkt_pointsxyzm ::= */ yytestcase(yyruleno==47); case 49: /* extra_pointsxy ::= */ yytestcase(yyruleno==49); case 51: /* extra_pointsxym ::= */ yytestcase(yyruleno==51); case 53: /* extra_pointsxyz ::= */ yytestcase(yyruleno==53); case 55: /* extra_pointsxyzm ::= */ yytestcase(yyruleno==55); case 74: /* extra_rings ::= */ yytestcase(yyruleno==74); case 77: /* extra_ringsm ::= */ yytestcase(yyruleno==77); case 80: /* extra_ringsz ::= */ yytestcase(yyruleno==80); case 83: /* extra_ringszm ::= */ yytestcase(yyruleno==83); case 102: /* multilinestring_text2 ::= */ yytestcase(yyruleno==102); case 105: /* multilinestring_textm2 ::= */ yytestcase(yyruleno==105); case 108: /* multilinestring_textz2 ::= */ yytestcase(yyruleno==108); case 111: /* multilinestring_textzm2 ::= */ yytestcase(yyruleno==111); case 118: /* multipolygon_text2 ::= */ yytestcase(yyruleno==118); case 121: /* multipolygon_textm2 ::= */ yytestcase(yyruleno==121); case 124: /* multipolygon_textz2 ::= */ yytestcase(yyruleno==124); case 127: /* multipolygon_textzm2 ::= */ yytestcase(yyruleno==127); case 140: /* geocoll_text2 ::= */ yytestcase(yyruleno==140); case 155: /* geocoll_textm2 ::= */ yytestcase(yyruleno==155); case 170: /* geocoll_textz2 ::= */ yytestcase(yyruleno==170); case 185: /* geocoll_textzm2 ::= */ yytestcase(yyruleno==185); { yymsp[1].minor.yy0 = NULL; } break; case 42: /* extra_brkt_pointsxy ::= VANUATU_COMMA point_brkt_coordxy extra_brkt_pointsxy */ case 44: /* extra_brkt_pointsxym ::= VANUATU_COMMA point_brkt_coordxym extra_brkt_pointsxym */ yytestcase(yyruleno==44); case 46: /* extra_brkt_pointsxyz ::= VANUATU_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ yytestcase(yyruleno==46); case 48: /* extra_brkt_pointsxyzm ::= VANUATU_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ yytestcase(yyruleno==48); case 50: /* extra_pointsxy ::= VANUATU_COMMA point_coordxy extra_pointsxy */ yytestcase(yyruleno==50); case 52: /* extra_pointsxym ::= VANUATU_COMMA point_coordxym extra_pointsxym */ yytestcase(yyruleno==52); case 54: /* extra_pointsxyz ::= VANUATU_COMMA point_coordxyz extra_pointsxyz */ yytestcase(yyruleno==54); case 56: /* extra_pointsxyzm ::= VANUATU_COMMA point_coordxyzm extra_pointsxyzm */ yytestcase(yyruleno==56); { ((gaiaPointPtr)yymsp[-1].minor.yy0)->Next = (gaiaPointPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 57: /* linestring ::= VANUATU_LINESTRING linestring_text */ case 58: /* linestringm ::= VANUATU_LINESTRING_M linestring_textm */ yytestcase(yyruleno==58); case 59: /* linestringz ::= VANUATU_LINESTRING_Z linestring_textz */ yytestcase(yyruleno==59); case 60: /* linestringzm ::= VANUATU_LINESTRING_ZM linestring_textzm */ yytestcase(yyruleno==60); { yymsp[-1].minor.yy0 = vanuatu_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)yymsp[0].minor.yy0); } break; case 61: /* linestring_text ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) vanuatu_linestring_xy( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); } break; case 62: /* linestring_textm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) vanuatu_linestring_xym( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); } break; case 63: /* linestring_textz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) vanuatu_linestring_xyz( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); } break; case 64: /* linestring_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) vanuatu_linestring_xyzm( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); } break; case 65: /* polygon ::= VANUATU_POLYGON polygon_text */ case 66: /* polygonm ::= VANUATU_POLYGON_M polygon_textm */ yytestcase(yyruleno==66); case 67: /* polygonz ::= VANUATU_POLYGON_Z polygon_textz */ yytestcase(yyruleno==67); case 68: /* polygonzm ::= VANUATU_POLYGON_ZM polygon_textzm */ yytestcase(yyruleno==68); { yymsp[-1].minor.yy0 = vanuatu_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)yymsp[0].minor.yy0); } break; case 69: /* polygon_text ::= VANUATU_OPEN_BRACKET ring extra_rings VANUATU_CLOSE_BRACKET */ { ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_polygon_xy( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); } break; case 70: /* polygon_textm ::= VANUATU_OPEN_BRACKET ringm extra_ringsm VANUATU_CLOSE_BRACKET */ { ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_polygon_xym( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); } break; case 71: /* polygon_textz ::= VANUATU_OPEN_BRACKET ringz extra_ringsz VANUATU_CLOSE_BRACKET */ { ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_polygon_xyz( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); } break; case 72: /* polygon_textzm ::= VANUATU_OPEN_BRACKET ringzm extra_ringszm VANUATU_CLOSE_BRACKET */ { ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_polygon_xyzm( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); } break; case 73: /* ring ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) vanuatu_ring_xy( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); } break; case 75: /* extra_rings ::= VANUATU_COMMA ring extra_rings */ case 78: /* extra_ringsm ::= VANUATU_COMMA ringm extra_ringsm */ yytestcase(yyruleno==78); case 81: /* extra_ringsz ::= VANUATU_COMMA ringz extra_ringsz */ yytestcase(yyruleno==81); case 84: /* extra_ringszm ::= VANUATU_COMMA ringzm extra_ringszm */ yytestcase(yyruleno==84); { ((gaiaRingPtr)yymsp[-1].minor.yy0)->Next = (gaiaRingPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 76: /* ringm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) vanuatu_ring_xym( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); } break; case 79: /* ringz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) vanuatu_ring_xyz( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); } break; case 82: /* ringzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) vanuatu_ring_xyzm( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); } break; case 85: /* multipoint ::= VANUATU_MULTIPOINT multipoint_text */ case 86: /* multipointm ::= VANUATU_MULTIPOINT_M multipoint_textm */ yytestcase(yyruleno==86); case 87: /* multipointz ::= VANUATU_MULTIPOINT_Z multipoint_textz */ yytestcase(yyruleno==87); case 88: /* multipointzm ::= VANUATU_MULTIPOINT_ZM multipoint_textzm */ yytestcase(yyruleno==88); case 97: /* multilinestring ::= VANUATU_MULTILINESTRING multilinestring_text */ yytestcase(yyruleno==97); case 98: /* multilinestringm ::= VANUATU_MULTILINESTRING_M multilinestring_textm */ yytestcase(yyruleno==98); case 99: /* multilinestringz ::= VANUATU_MULTILINESTRING_Z multilinestring_textz */ yytestcase(yyruleno==99); case 100: /* multilinestringzm ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm */ yytestcase(yyruleno==100); case 113: /* multipolygon ::= VANUATU_MULTIPOLYGON multipolygon_text */ yytestcase(yyruleno==113); case 114: /* multipolygonm ::= VANUATU_MULTIPOLYGON_M multipolygon_textm */ yytestcase(yyruleno==114); case 115: /* multipolygonz ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz */ yytestcase(yyruleno==115); case 116: /* multipolygonzm ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm */ yytestcase(yyruleno==116); case 129: /* geocoll ::= VANUATU_GEOMETRYCOLLECTION geocoll_text */ yytestcase(yyruleno==129); case 130: /* geocollm ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm */ yytestcase(yyruleno==130); case 131: /* geocollz ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz */ yytestcase(yyruleno==131); case 132: /* geocollzm ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm */ yytestcase(yyruleno==132); { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 89: /* multipoint_text ::= VANUATU_OPEN_BRACKET point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ case 93: /* multipoint_text ::= VANUATU_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==93); { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipoint_xy( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); } break; case 90: /* multipoint_textm ::= VANUATU_OPEN_BRACKET point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ case 94: /* multipoint_textm ::= VANUATU_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==94); { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipoint_xym( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); } break; case 91: /* multipoint_textz ::= VANUATU_OPEN_BRACKET point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ case 95: /* multipoint_textz ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==95); { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipoint_xyz( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); } break; case 92: /* multipoint_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ case 96: /* multipoint_textzm ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==96); { ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipoint_xyzm( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); } break; case 101: /* multilinestring_text ::= VANUATU_OPEN_BRACKET linestring_text multilinestring_text2 VANUATU_CLOSE_BRACKET */ { ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multilinestring_xy( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); } break; case 103: /* multilinestring_text2 ::= VANUATU_COMMA linestring_text multilinestring_text2 */ case 106: /* multilinestring_textm2 ::= VANUATU_COMMA linestring_textm multilinestring_textm2 */ yytestcase(yyruleno==106); case 109: /* multilinestring_textz2 ::= VANUATU_COMMA linestring_textz multilinestring_textz2 */ yytestcase(yyruleno==109); case 112: /* multilinestring_textzm2 ::= VANUATU_COMMA linestring_textzm multilinestring_textzm2 */ yytestcase(yyruleno==112); { ((gaiaLinestringPtr)yymsp[-1].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 104: /* multilinestring_textm ::= VANUATU_OPEN_BRACKET linestring_textm multilinestring_textm2 VANUATU_CLOSE_BRACKET */ { ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multilinestring_xym( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); } break; case 107: /* multilinestring_textz ::= VANUATU_OPEN_BRACKET linestring_textz multilinestring_textz2 VANUATU_CLOSE_BRACKET */ { ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multilinestring_xyz( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); } break; case 110: /* multilinestring_textzm ::= VANUATU_OPEN_BRACKET linestring_textzm multilinestring_textzm2 VANUATU_CLOSE_BRACKET */ { ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multilinestring_xyzm( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); } break; case 117: /* multipolygon_text ::= VANUATU_OPEN_BRACKET polygon_text multipolygon_text2 VANUATU_CLOSE_BRACKET */ { ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipolygon_xy( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); } break; case 119: /* multipolygon_text2 ::= VANUATU_COMMA polygon_text multipolygon_text2 */ case 122: /* multipolygon_textm2 ::= VANUATU_COMMA polygon_textm multipolygon_textm2 */ yytestcase(yyruleno==122); case 125: /* multipolygon_textz2 ::= VANUATU_COMMA polygon_textz multipolygon_textz2 */ yytestcase(yyruleno==125); case 128: /* multipolygon_textzm2 ::= VANUATU_COMMA polygon_textzm multipolygon_textzm2 */ yytestcase(yyruleno==128); { ((gaiaPolygonPtr)yymsp[-1].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 120: /* multipolygon_textm ::= VANUATU_OPEN_BRACKET polygon_textm multipolygon_textm2 VANUATU_CLOSE_BRACKET */ { ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipolygon_xym( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); } break; case 123: /* multipolygon_textz ::= VANUATU_OPEN_BRACKET polygon_textz multipolygon_textz2 VANUATU_CLOSE_BRACKET */ { ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipolygon_xyz( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); } break; case 126: /* multipolygon_textzm ::= VANUATU_OPEN_BRACKET polygon_textzm multipolygon_textzm2 VANUATU_CLOSE_BRACKET */ { ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipolygon_xyzm( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); } break; case 133: /* geocoll_text ::= VANUATU_OPEN_BRACKET point geocoll_text2 VANUATU_CLOSE_BRACKET */ case 134: /* geocoll_text ::= VANUATU_OPEN_BRACKET linestring geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==134); case 135: /* geocoll_text ::= VANUATU_OPEN_BRACKET polygon geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==135); case 136: /* geocoll_text ::= VANUATU_OPEN_BRACKET multipoint geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==136); case 137: /* geocoll_text ::= VANUATU_OPEN_BRACKET multilinestring geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==137); case 138: /* geocoll_text ::= VANUATU_OPEN_BRACKET multipolygon geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==138); { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 139: /* geocoll_text ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 VANUATU_CLOSE_BRACKET */ { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 141: /* geocoll_text2 ::= VANUATU_COMMA point geocoll_text2 */ case 142: /* geocoll_text2 ::= VANUATU_COMMA linestring geocoll_text2 */ yytestcase(yyruleno==142); case 143: /* geocoll_text2 ::= VANUATU_COMMA polygon geocoll_text2 */ yytestcase(yyruleno==143); case 144: /* geocoll_text2 ::= VANUATU_COMMA multipoint geocoll_text2 */ yytestcase(yyruleno==144); case 145: /* geocoll_text2 ::= VANUATU_COMMA multilinestring geocoll_text2 */ yytestcase(yyruleno==145); case 146: /* geocoll_text2 ::= VANUATU_COMMA multipolygon geocoll_text2 */ yytestcase(yyruleno==146); case 156: /* geocoll_textm2 ::= VANUATU_COMMA pointm geocoll_textm2 */ yytestcase(yyruleno==156); case 157: /* geocoll_textm2 ::= VANUATU_COMMA linestringm geocoll_textm2 */ yytestcase(yyruleno==157); case 158: /* geocoll_textm2 ::= VANUATU_COMMA polygonm geocoll_textm2 */ yytestcase(yyruleno==158); case 159: /* geocoll_textm2 ::= VANUATU_COMMA multipointm geocoll_textm2 */ yytestcase(yyruleno==159); case 160: /* geocoll_textm2 ::= VANUATU_COMMA multilinestringm geocoll_textm2 */ yytestcase(yyruleno==160); case 161: /* geocoll_textm2 ::= VANUATU_COMMA multipolygonm geocoll_textm2 */ yytestcase(yyruleno==161); case 171: /* geocoll_textz2 ::= VANUATU_COMMA pointz geocoll_textz2 */ yytestcase(yyruleno==171); case 172: /* geocoll_textz2 ::= VANUATU_COMMA linestringz geocoll_textz2 */ yytestcase(yyruleno==172); case 173: /* geocoll_textz2 ::= VANUATU_COMMA polygonz geocoll_textz2 */ yytestcase(yyruleno==173); case 174: /* geocoll_textz2 ::= VANUATU_COMMA multipointz geocoll_textz2 */ yytestcase(yyruleno==174); case 175: /* geocoll_textz2 ::= VANUATU_COMMA multilinestringz geocoll_textz2 */ yytestcase(yyruleno==175); case 176: /* geocoll_textz2 ::= VANUATU_COMMA multipolygonz geocoll_textz2 */ yytestcase(yyruleno==176); case 186: /* geocoll_textzm2 ::= VANUATU_COMMA pointzm geocoll_textzm2 */ yytestcase(yyruleno==186); case 187: /* geocoll_textzm2 ::= VANUATU_COMMA linestringzm geocoll_textzm2 */ yytestcase(yyruleno==187); case 188: /* geocoll_textzm2 ::= VANUATU_COMMA polygonzm geocoll_textzm2 */ yytestcase(yyruleno==188); case 189: /* geocoll_textzm2 ::= VANUATU_COMMA multipointzm geocoll_textzm2 */ yytestcase(yyruleno==189); case 190: /* geocoll_textzm2 ::= VANUATU_COMMA multilinestringzm geocoll_textzm2 */ yytestcase(yyruleno==190); case 191: /* geocoll_textzm2 ::= VANUATU_COMMA multipolygonzm geocoll_textzm2 */ yytestcase(yyruleno==191); { ((gaiaGeomCollPtr)yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 147: /* geocoll_text2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ case 162: /* geocoll_textm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ yytestcase(yyruleno==162); case 177: /* geocoll_textz2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 */ yytestcase(yyruleno==177); case 192: /* geocoll_textzm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 */ yytestcase(yyruleno==192); { ((gaiaGeomCollPtr)yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[0].minor.yy0; yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; case 148: /* geocoll_textm ::= VANUATU_OPEN_BRACKET pointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ case 149: /* geocoll_textm ::= VANUATU_OPEN_BRACKET linestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==149); case 150: /* geocoll_textm ::= VANUATU_OPEN_BRACKET polygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==150); case 151: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multipointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==151); case 152: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multilinestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==152); case 153: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multipolygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==153); { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 154: /* geocoll_textm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 VANUATU_CLOSE_BRACKET */ { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 163: /* geocoll_textz ::= VANUATU_OPEN_BRACKET pointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ case 164: /* geocoll_textz ::= VANUATU_OPEN_BRACKET linestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==164); case 165: /* geocoll_textz ::= VANUATU_OPEN_BRACKET polygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==165); case 166: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multipointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==166); case 167: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multilinestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==167); case 168: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multipolygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==168); { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 169: /* geocoll_textz ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 VANUATU_CLOSE_BRACKET */ { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 178: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET pointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ case 179: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET linestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==179); case 180: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET polygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==180); case 181: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multipointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==181); case 182: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multilinestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==182); case 183: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multipolygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==183); { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; case 184: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ { ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); } break; default: /* (193) main ::= in */ yytestcase(yyruleno==193); /* (194) in ::= */ yytestcase(yyruleno==194); /* (195) in ::= in state VANUATU_NEWLINE */ yytestcase(yyruleno==195); /* (196) state ::= program (OPTIMIZED OUT) */ assert(yyruleno!=196); /* (197) program ::= geo_text (OPTIMIZED OUT) */ assert(yyruleno!=197); /* (198) program ::= geo_textz (OPTIMIZED OUT) */ assert(yyruleno!=198); /* (199) program ::= geo_textm (OPTIMIZED OUT) */ assert(yyruleno!=199); /* (200) program ::= geo_textzm (OPTIMIZED OUT) */ assert(yyruleno!=200); break; /********** End reduce actions ************************************************/ }; assert( yyruleno<sizeof(yyRuleInfo)/sizeof(yyRuleInfo[0]) ); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action(yymsp[yysize].stateno,(YYCODETYPE)yygoto); /* There are no SHIFTREDUCE actions on nonterminals because the table ** generator has simplified them to pure REDUCE actions. */ assert( !(yyact>YY_MAX_SHIFT && yyact<=YY_MAX_SHIFTREDUCE) ); /* It is not possible for a REDUCE to be followed by an error */ assert( yyact!=YY_ERROR_ACTION ); yymsp += yysize+1; yypParser->yytos = yymsp; yymsp->stateno = (YYACTIONTYPE)yyact; yymsp->major = (YYCODETYPE)yygoto; yyTraceShift(yypParser, yyact, "... then shift"); } /* ** The following code executes when the parse fails */ #ifndef YYNOERRORRECOVERY static void yy_parse_failed( yyParser *yypParser /* The parser */ ){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); } #endif while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } #endif /* YYNOERRORRECOVERY */ /* ** The following code executes when a syntax error first occurs. */ static void yy_syntax_error( yyParser *yypParser, /* The parser */ int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ){ ParseARG_FETCH; #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ /* ** Sandro Furieri 2010 Apr 4 ** when the LEMON parser encounters an error ** then this global variable is set */ p_data->vanuatu_parse_error = 1; p_data->result = NULL; /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* ** The following is executed when the parser accepts */ static void yy_accept( yyParser *yypParser /* The parser */ ){ ParseARG_FETCH; #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); } #endif #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif assert( yypParser->yytos==yypParser->yystack ); /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ /*********** End %parse_accept code *******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* The main parser program. ** The first argument is a pointer to a structure obtained from ** "ParseAlloc" which describes the current state of the parser. ** The second argument is the major token number. The third is ** the minor token. The fourth optional argument is whatever the ................................................................................ ** <li> The minor token number. ** <li> An option argument of a grammar-specified type. ** </ul> ** ** Outputs: ** None. */ void Parse( void *yyp, /* The parser */ int yymajor, /* The major token code number */ ParseTOKENTYPE yyminor /* The value for the token */ ParseARG_PDECL /* Optional %extra_argument parameter */ ){ YYMINORTYPE yyminorunion; unsigned int yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif yyParser *yypParser; /* The parser */ yypParser = (yyParser*)yyp; assert( yypParser->yytos!=0 ); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor==0); #endif ParseARG_STORE; #ifndef NDEBUG if( yyTraceFILE ){ int stateno = yypParser->yytos->stateno; if( stateno < YY_MIN_REDUCE ){ fprintf(yyTraceFILE,"%sInput '%s' in state %d\n", yyTracePrompt,yyTokenName[yymajor],stateno); }else{ fprintf(yyTraceFILE,"%sInput '%s' with pending reduce %d\n", yyTracePrompt,yyTokenName[yymajor],stateno-YY_MIN_REDUCE); } } #endif do{ yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); if( yyact >= YY_MIN_REDUCE ){ yy_reduce(yypParser,yyact-YY_MIN_REDUCE,yymajor,yyminor); }else if( yyact <= YY_MAX_SHIFTREDUCE ){ yy_shift(yypParser,yyact,yymajor,yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif yymajor = YYNOCODE; }else if( yyact==YY_ACCEPT_ACTION ){ yypParser->yytos--; yy_accept(yypParser); return; }else{ assert( yyact == YY_ERROR_ACTION ); yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); } #endif #ifdef YYERRORSYMBOL /* A syntax error has occurred. ** The response to an error depends upon whether or not the ** grammar defines an error token "ERROR". ** ** This is what we do if the grammar does define ERROR: ** ** * Call the %syntax_error function. ** ** * Begin popping the stack until we enter a state where ** it is legal to shift the error symbol, then shift ** the error symbol. ** ** * Set the error count to three. ** ** * Begin accepting and shifting new tokens. No new error ** processing will occur until three tokens have been ** shifted successfully. ** */ if( yypParser->yyerrcnt<0 ){ yy_syntax_error(yypParser,yymajor,yyminor); } yymx = yypParser->yytos->major; if( yymx==YYERRORSYMBOL || yyerrorhit ){ #ifndef NDEBUG if( yyTraceFILE ){ fprintf(yyTraceFILE,"%sDiscard input token %s\n", yyTracePrompt,yyTokenName[yymajor]); } #endif yy_destructor(yypParser, (YYCODETYPE)yymajor, &yyminorunion); yymajor = YYNOCODE; }else{ while( yypParser->yytos >= yypParser->yystack && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action( yypParser->yytos->stateno, YYERRORSYMBOL)) >= YY_MIN_REDUCE ){ yy_pop_parser_stack(yypParser); } if( yypParser->yytos < yypParser->yystack || yymajor==0 ){ yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif yymajor = YYNOCODE; }else if( yymx!=YYERRORSYMBOL ){ yy_shift(yypParser,yyact,YYERRORSYMBOL,yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax ** error routine and continue going as if nothing had happened. ** ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ yy_syntax_error(yypParser,yymajor, yyminor); yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); yymajor = YYNOCODE; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** ** * Report an error message, and throw away the input token. ** ** * If the input token is $, then fail the parse. ** ** As before, subsequent error messages are suppressed until ** three input tokens have been successfully shifted. */ if( yypParser->yyerrcnt<=0 ){ yy_syntax_error(yypParser,yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); if( yyendofinput ){ yy_parse_failed(yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif } yymajor = YYNOCODE; #endif } }while( yymajor!=YYNOCODE && yypParser->yytos>yypParser->yystack ); #ifndef NDEBUG if( yyTraceFILE ){ yyStackEntry *i; char cDiv = '['; fprintf(yyTraceFILE,"%sReturn. Stack=",yyTracePrompt); for(i=&yypParser->yystack[1]; i<=yypParser->yytos; i++){ fprintf(yyTraceFILE,"%c%s", cDiv, yyTokenName[i->major]); cDiv = ' '; } fprintf(yyTraceFILE,"]\n"); } #endif return; } |
| | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > < < < | | | | | | | | | | | | | | | | | | | | > > > > < < < < | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > | > | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | > | > | | | | | | > | | | | | | | | > | > | < > | > | | | | | < > > | | > | | | | | | | | | | > | | > | > | | | | | > | < | | | | > > | > | > | | | | < > > > | | | > | > | | > | > | | | > | | < > > > | < > > > | | | > | | | | | | | < > > | | | > | | | | > | | < < > > > | | | > | < > | > | > | | > | | | | | | | | | | | < > | > | | | | | | | | > | > | | > | | | | < > > | | > | | | | < > | | > | | | | | | > > | | > | | < > > | | | | > | > | > | > | > | < > | > | > | | | | | | | | | | < > > | | | > | > | | | < > > | | | | | > | > | | | | | | > | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | < > > | | < > > | < > > | | | | | | | < > > | | | | | | < > > | | < > > | | < > | | | | | | | | < > > | | | | | | | | | | > | | > | | > | > | | > | | | > | | < > > > | < > > | | > | > | | | > | > | | | | < > > | | | | | | | | | | | | | | | | | | | | | < > > | | | > | > | | | | > | > | > | | > | | | < > > | | | > > | | | | > | < > > | | | | | | | | | | | < < > > | | | | | | | | | | | | | < > > | | < > | > | | | | | > | | > | | < > | > | | | | | | |
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 ... 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 ... 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 ... 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 ... 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 .... 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 .... 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 .... 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 |
** YY_ERROR_ACTION The yy_action[] code for syntax error ** YY_ACCEPT_ACTION The yy_action[] code for accept ** YY_NO_ACTION The yy_action[] code for no-op ** YY_MIN_REDUCE Minimum value for reduce actions ** YY_MAX_REDUCE Maximum value for reduce actions */ #ifndef INTERFACE #define INTERFACE 1 #endif /************* Begin control #defines *****************************************/ #define YYCODETYPE unsigned char #define YYNOCODE 133 #define YYACTIONTYPE unsigned short int #define ParseTOKENTYPE void * typedef union { int yyinit; ParseTOKENTYPE yy0; } YYMINORTYPE; #ifndef YYSTACKDEPTH #define YYSTACKDEPTH 1000000 #endif #define ParseARG_SDECL struct vanuatu_data *p_data ; #define ParseARG_PDECL , struct vanuatu_data *p_data #define ParseARG_FETCH struct vanuatu_data *p_data = yypParser->p_data #define ParseARG_STORE yypParser->p_data = p_data #define YYNSTATE 315 #define YYNRULE 201 #define YYNTOKEN 34 #define YY_MAX_SHIFT 314 #define YY_MIN_SHIFTREDUCE 490 #define YY_MAX_SHIFTREDUCE 690 #define YY_ERROR_ACTION 691 ................................................................................ ** ** Applications can choose to define yytestcase() in the %include section ** to a macro that can assist in verifying code coverage. For production ** code the yytestcase() macro should be turned off. But it is useful ** for testing. */ #ifndef yytestcase #define yytestcase(X) #endif /* Next are the tables used to determine what action to take based on the ** current state and lookahead token. These tables are used to implement ** functions that take a state number and lookahead value and return an ** action integer. ................................................................................ ** yy_reduce_ofst[] For each state, the offset into yy_action for ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. ** *********** Begin parsing tables **********************************************/ #define YY_ACTTAB_COUNT (603) static const YYACTIONTYPE yy_action[] = { /* 0 */ 314, 314, 314, 314, 314, 314, 694, 695, 696, 697, /* 10 */ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, /* 20 */ 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, /* 30 */ 718, 719, 720, 721, 887, 187, 313, 224, 174, 311, /* 40 */ 309, 307, 228, 173, 221, 218, 215, 212, 209, 203, /* 50 */ 197, 191, 185, 178, 170, 162, 153, 148, 143, 138, /* 60 */ 133, 128, 123, 118, 113, 96, 79, 62, 307, 307, /* 70 */ 309, 309, 692, 1, 212, 212, 215, 215, 191, 191, /* 80 */ 197, 197, 162, 162, 170, 170, 138, 138, 143, 143, /* 90 */ 118, 118, 123, 123, 54, 47, 71, 64, 311, 311, /* 100 */ 530, 157, 313, 224, 218, 218, 156, 313, 203, 203, /* 110 */ 221, 2, 178, 178, 209, 221, 148, 148, 185, 209, /* 120 */ 128, 128, 153, 185, 88, 81, 133, 153, 161, 166, /* 130 */ 105, 133, 226, 530, 165, 98, 60, 59, 58, 57, /* 140 */ 56, 55, 61, 52, 51, 50, 49, 48, 77, 76, /* 150 */ 75, 74, 73, 72, 230, 46, 78, 69, 68, 67, /* 160 */ 66, 65, 279, 3, 224, 94, 93, 92, 91, 90, /* 170 */ 89, 95, 86, 85, 84, 83, 82, 231, 232, 111, /* 180 */ 110, 109, 108, 107, 106, 112, 103, 102, 101, 100, /* 190 */ 99, 182, 169, 177, 184, 181, 229, 530, 530, 530, /* 200 */ 280, 281, 224, 224, 193, 284, 285, 226, 226, 226, /* 210 */ 286, 199, 289, 226, 205, 228, 228, 290, 291, 229, /* 220 */ 294, 228, 228, 295, 296, 229, 233, 213, 229, 229, /* 230 */ 226, 210, 211, 224, 224, 299, 214, 224, 301, 226, /* 240 */ 216, 226, 217, 303, 228, 219, 228, 228, 220, 308, /* 250 */ 229, 305, 226, 229, 310, 306, 229, 224, 228, 312, /* 260 */ 234, 235, 53, 4, 229, 886, 5, 6, 7, 885, /* 270 */ 8, 9, 884, 115, 190, 883, 117, 196, 882, 881, /* 280 */ 122, 880, 236, 826, 120, 237, 202, 125, 63, 238, /* 290 */ 127, 130, 208, 132, 239, 114, 240, 241, 32, 242, /* 300 */ 135, 70, 871, 870, 137, 116, 140, 35, 869, 868, /* 310 */ 142, 145, 80, 867, 866, 865, 243, 38, 825, 147, /* 320 */ 139, 129, 244, 245, 246, 247, 248, 249, 856, 87, /* 330 */ 855, 854, 853, 97, 852, 851, 850, 250, 824, 251, /* 340 */ 252, 819, 253, 254, 255, 256, 841, 104, 840, 839, /* 350 */ 838, 822, 837, 836, 835, 257, 823, 258, 810, 259, /* 360 */ 119, 121, 809, 816, 260, 124, 808, 813, 261, 126, /* 370 */ 806, 131, 807, 794, 262, 134, 136, 150, 141, 41, /* 380 */ 152, 144, 146, 803, 263, 161, 149, 155, 151, 742, /* 390 */ 793, 154, 266, 30, 800, 267, 268, 158, 159, 264, /* 400 */ 160, 10, 164, 792, 169, 740, 163, 269, 797, 33, /* 410 */ 782, 265, 270, 791, 271, 167, 168, 11, 172, 781, /* 420 */ 177, 171, 738, 272, 36, 274, 175, 176, 273, 12, /* 430 */ 180, 184, 780, 736, 179, 275, 39, 277, 276, 183, /* 440 */ 13, 779, 188, 278, 17, 194, 283, 775, 778, 186, /* 450 */ 21, 282, 762, 200, 189, 288, 25, 206, 192, 761, /* 460 */ 29, 750, 753, 287, 195, 772, 292, 198, 760, 201, /* 470 */ 769, 293, 298, 759, 748, 204, 300, 297, 674, 207, /* 480 */ 754, 746, 302, 752, 733, 673, 744, 304, 222, 223, /* 490 */ 672, 671, 751, 670, 732, 225, 731, 669, 227, 730, /* 500 */ 668, 659, 658, 657, 656, 655, 654, 653, 644, 643, /* 510 */ 642, 641, 640, 639, 638, 629, 628, 627, 626, 625, /* 520 */ 624, 623, 616, 613, 610, 607, 600, 597, 594, 591, /* 530 */ 586, 582, 525, 585, 581, 524, 584, 580, 523, 583, /* 540 */ 579, 522, 572, 693, 693, 693, 562, 569, 14, 15, /* 550 */ 16, 693, 693, 693, 561, 566, 18, 19, 20, 693, /* 560 */ 693, 693, 560, 563, 22, 23, 24, 693, 693, 693, /* 570 */ 559, 554, 26, 27, 28, 693, 553, 693, 552, 693, /* 580 */ 31, 551, 34, 685, 37, 521, 42, 693, 40, 520, /* 590 */ 43, 693, 693, 519, 44, 693, 693, 693, 518, 693, /* 600 */ 693, 693, 45, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, /* 10 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, /* 20 */ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, /* 30 */ 67, 68, 69, 70, 0, 74, 2, 76, 72, 5, /* 40 */ 6, 7, 76, 77, 10, 11, 12, 13, 14, 15, /* 50 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, /* 60 */ 26, 27, 28, 29, 30, 31, 32, 33, 7, 7, /* 70 */ 6, 6, 35, 36, 13, 13, 12, 12, 17, 17, /* 80 */ 16, 16, 21, 21, 20, 20, 25, 25, 24, 24, /* 90 */ 29, 29, 28, 28, 33, 33, 32, 32, 5, 5, /* 100 */ 8, 74, 2, 76, 11, 11, 79, 2, 15, 15, /* 110 */ 10, 9, 19, 19, 14, 10, 23, 23, 18, 14, /* 120 */ 27, 27, 22, 18, 31, 31, 26, 22, 3, 73, /* 130 */ 30, 26, 76, 8, 78, 30, 64, 65, 66, 67, /* 140 */ 68, 69, 64, 65, 66, 67, 68, 69, 50, 51, /* 150 */ 52, 53, 54, 55, 131, 127, 50, 51, 52, 53, /* 160 */ 54, 55, 74, 3, 76, 57, 58, 59, 60, 61, /* 170 */ 62, 57, 58, 59, 60, 61, 62, 131, 131, 43, /* 180 */ 44, 45, 46, 47, 48, 43, 44, 45, 46, 47, /* 190 */ 48, 71, 3, 3, 3, 75, 76, 8, 8, 8, /* 200 */ 74, 74, 76, 76, 73, 73, 73, 76, 76, 76, /* 210 */ 73, 72, 72, 76, 71, 76, 76, 72, 72, 76, /* 220 */ 71, 76, 76, 71, 71, 76, 131, 73, 76, 76, /* 230 */ 76, 74, 74, 76, 76, 74, 73, 76, 73, 76, /* 240 */ 72, 76, 72, 72, 76, 71, 76, 76, 71, 73, /* 250 */ 76, 71, 76, 76, 72, 74, 76, 76, 76, 71, /* 260 */ 131, 131, 127, 9, 76, 131, 3, 9, 3, 131, /* 270 */ 9, 3, 131, 9, 3, 131, 3, 3, 131, 131, /* 280 */ 3, 131, 131, 127, 9, 130, 3, 9, 126, 130, /* 290 */ 3, 9, 3, 3, 130, 95, 130, 130, 3, 130, /* 300 */ 9, 126, 130, 130, 3, 95, 9, 3, 130, 130, /* 310 */ 3, 9, 125, 130, 130, 130, 130, 3, 126, 3, /* 320 */ 90, 92, 129, 129, 129, 129, 129, 129, 129, 125, /* 330 */ 129, 129, 129, 124, 129, 129, 129, 129, 125, 128, /* 340 */ 128, 122, 128, 128, 128, 128, 128, 124, 128, 128, /* 350 */ 128, 123, 128, 128, 128, 128, 124, 123, 119, 122, /* 360 */ 94, 94, 118, 121, 121, 93, 117, 120, 120, 93, /* 370 */ 115, 92, 116, 111, 115, 91, 91, 9, 90, 3, /* 380 */ 3, 89, 89, 114, 114, 3, 88, 9, 88, 83, /* 390 */ 110, 79, 83, 9, 113, 87, 76, 76, 76, 113, /* 400 */ 76, 3, 9, 109, 3, 82, 78, 82, 112, 9, /* 410 */ 107, 112, 86, 108, 76, 76, 76, 3, 9, 106, /* 420 */ 3, 77, 81, 81, 9, 76, 76, 76, 85, 3, /* 430 */ 9, 3, 105, 80, 75, 80, 9, 76, 84, 76, /* 440 */ 3, 104, 9, 87, 3, 9, 86, 101, 103, 102, /* 450 */ 3, 103, 95, 9, 102, 85, 3, 9, 100, 94, /* 460 */ 3, 87, 90, 101, 100, 99, 99, 98, 93, 98, /* 470 */ 97, 84, 87, 92, 86, 96, 86, 97, 4, 96, /* 480 */ 91, 85, 85, 89, 76, 4, 84, 84, 76, 76, /* 490 */ 4, 4, 88, 4, 76, 76, 76, 4, 76, 76, /* 500 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, /* 510 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, /* 520 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, /* 530 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, /* 540 */ 4, 4, 4, 132, 132, 132, 4, 4, 9, 9, /* 550 */ 9, 132, 132, 132, 4, 4, 9, 9, 9, 132, /* 560 */ 132, 132, 4, 4, 9, 9, 9, 132, 132, 132, /* 570 */ 4, 4, 9, 9, 9, 132, 4, 132, 4, 132, /* 580 */ 9, 4, 9, 1, 9, 4, 3, 132, 9, 4, /* 590 */ 3, 132, 132, 4, 3, 132, 132, 132, 4, 132, /* 600 */ 132, 132, 3, 132, 132, 132, 132, 132, 132, 132, /* 610 */ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, /* 620 */ 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, /* 630 */ 132, 132, 132, 132, 132, 132, 132, }; #define YY_SHIFT_COUNT (314) #define YY_SHIFT_MIN (0) #define YY_SHIFT_MAX (599) static const unsigned short int yy_shift_ofst[] = { /* 0 */ 603, 34, 61, 62, 64, 65, 93, 94, 100, 105, /* 10 */ 125, 189, 190, 191, 92, 92, 92, 92, 92, 92, /* 20 */ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* 30 */ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, /* 40 */ 92, 92, 92, 92, 92, 92, 102, 160, 102, 102, /* 50 */ 102, 102, 102, 102, 160, 102, 102, 102, 102, 102, /* 60 */ 102, 102, 160, 254, 263, 254, 254, 254, 254, 254, /* 70 */ 254, 263, 254, 254, 254, 254, 254, 254, 254, 263, /* 80 */ 258, 265, 258, 258, 258, 258, 258, 258, 265, 258, /* 90 */ 258, 258, 258, 258, 258, 258, 265, 261, 268, 261, /* 100 */ 261, 261, 261, 261, 261, 268, 261, 261, 261, 261, /* 110 */ 261, 261, 261, 268, 264, 271, 264, 271, 273, 275, /* 120 */ 274, 275, 274, 277, 278, 283, 278, 283, 287, 282, /* 130 */ 289, 282, 289, 290, 291, 295, 291, 295, 301, 297, /* 140 */ 304, 297, 304, 307, 302, 314, 302, 314, 316, 368, /* 150 */ 376, 368, 376, 377, 378, 382, 378, 384, 92, 92, /* 160 */ 92, 92, 398, 393, 401, 393, 400, 92, 92, 92, /* 170 */ 414, 409, 417, 409, 415, 92, 92, 92, 426, 421, /* 180 */ 428, 421, 427, 92, 92, 437, 433, 384, 441, 433, /* 190 */ 441, 271, 436, 400, 447, 436, 447, 274, 444, 415, /* 200 */ 453, 444, 453, 283, 448, 427, 457, 448, 457, 289, /* 210 */ 384, 384, 295, 400, 400, 304, 415, 415, 314, 427, /* 220 */ 427, 376, 92, 92, 92, 92, 92, 92, 92, 92, /* 230 */ 474, 481, 486, 487, 489, 493, 496, 497, 498, 499, /* 240 */ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, /* 250 */ 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, /* 260 */ 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, /* 270 */ 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, /* 280 */ 540, 541, 542, 543, 547, 548, 549, 550, 551, 555, /* 290 */ 556, 557, 558, 559, 563, 564, 565, 566, 567, 571, /* 300 */ 572, 573, 574, 575, 577, 579, 581, 583, 585, 587, /* 310 */ 589, 591, 594, 599, 582, }; #define YY_REDUCE_COUNT (229) #define YY_REDUCE_MIN (-39) #define YY_REDUCE_MAX (423) static const short yy_reduce_ofst[] = { /* 0 */ 37, -37, 72, 78, 98, 106, 108, 114, 136, 142, /* 10 */ 27, 56, -34, 120, -39, 88, 126, 127, 131, 132, /* 20 */ 133, 137, 139, 140, 145, 146, 143, 149, 152, 153, /* 30 */ 157, 158, 161, 154, 163, 165, 168, 170, 171, 174, /* 40 */ 177, 180, 181, 176, 182, 188, 23, 28, 46, 47, /* 50 */ 95, 129, 130, 134, 135, 138, 141, 144, 147, 148, /* 60 */ 150, 151, 156, 155, 162, 159, 164, 166, 167, 169, /* 70 */ 172, 175, 173, 178, 179, 183, 184, 185, 186, 192, /* 80 */ 193, 187, 194, 195, 196, 197, 198, 199, 204, 201, /* 90 */ 202, 203, 205, 206, 207, 208, 213, 211, 209, 212, /* 100 */ 214, 215, 216, 217, 218, 223, 220, 221, 222, 224, /* 110 */ 225, 226, 227, 232, 228, 200, 234, 210, 239, 219, /* 120 */ 266, 237, 267, 244, 242, 272, 243, 276, 249, 247, /* 130 */ 229, 248, 279, 256, 255, 284, 259, 285, 262, 269, /* 140 */ 230, 270, 288, 280, 281, 292, 286, 293, 294, 296, /* 150 */ 298, 299, 300, 305, 306, 312, 309, 308, 320, 321, /* 160 */ 322, 324, 303, 323, 328, 325, 326, 338, 339, 340, /* 170 */ 313, 341, 344, 342, 343, 349, 350, 351, 327, 353, /* 180 */ 359, 355, 354, 361, 363, 337, 345, 356, 347, 348, /* 190 */ 352, 357, 346, 360, 358, 362, 364, 365, 366, 370, /* 200 */ 369, 367, 371, 375, 373, 387, 379, 380, 383, 381, /* 210 */ 374, 385, 389, 388, 390, 372, 396, 397, 394, 402, /* 220 */ 403, 404, 408, 412, 413, 418, 419, 420, 422, 423, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 888, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 10 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 20 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 30 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 40 */ 691, 691, 691, 691, 691, 691, 879, 691, 879, 879, /* 50 */ 879, 879, 879, 879, 691, 879, 879, 879, 879, 879, /* 60 */ 879, 879, 691, 864, 691, 864, 864, 864, 864, 864, /* 70 */ 864, 691, 864, 864, 864, 864, 864, 864, 864, 691, /* 80 */ 849, 691, 849, 849, 849, 849, 849, 849, 691, 849, /* 90 */ 849, 849, 849, 849, 849, 849, 691, 834, 691, 834, /* 100 */ 834, 834, 834, 834, 834, 691, 834, 834, 834, 834, /* 110 */ 834, 834, 834, 691, 821, 691, 821, 691, 691, 818, /* 120 */ 691, 818, 691, 691, 815, 691, 815, 691, 691, 812, /* 130 */ 691, 812, 691, 691, 805, 691, 805, 691, 691, 802, /* 140 */ 691, 802, 691, 691, 799, 691, 799, 691, 691, 796, /* 150 */ 691, 796, 691, 691, 741, 691, 741, 749, 691, 691, /* 160 */ 691, 691, 691, 739, 691, 739, 747, 691, 691, 691, /* 170 */ 691, 737, 691, 737, 745, 691, 691, 691, 691, 735, /* 180 */ 691, 735, 743, 691, 691, 691, 777, 749, 691, 777, /* 190 */ 691, 691, 774, 747, 691, 774, 691, 691, 771, 745, /* 200 */ 691, 771, 691, 691, 768, 743, 691, 768, 691, 691, /* 210 */ 749, 749, 691, 747, 747, 691, 745, 745, 691, 743, /* 220 */ 743, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 230 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 240 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 250 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 260 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 270 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 280 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 290 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 300 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, /* 310 */ 691, 691, 691, 691, 691, }; /********** End of lemon-generated parsing tables *****************************/ /* The next table maps tokens (terminal symbols) into fallback tokens. ** If a construct like the following: ** ** %fallback ID X Y Z. ** ................................................................................ ** the information used by the action routines in the grammar. ** It is sometimes called the "minor" token. ** ** After the "shift" half of a SHIFTREDUCE action, the stateno field ** actually contains the reduce action for the second half of the ** SHIFTREDUCE. */ struct yyStackEntry { YYACTIONTYPE stateno; /* The state-number, or reduce action in SHIFTREDUCE */ YYCODETYPE major; /* The major token value. This is the code ** number for the token at this stack level */ YYMINORTYPE minor; /* The user-supplied minor token value. This ** is the value of the token */ }; typedef struct yyStackEntry yyStackEntry; /* The state of the parser is completely contained in an instance of ** the following structure */ struct yyParser { yyStackEntry *yytos; /* Pointer to top element of the stack */ #ifdef YYTRACKMAXSTACKDEPTH int yyhwm; /* High-water mark of the stack */ #endif #ifndef YYNOERRORRECOVERY int yyerrcnt; /* Shifts left before out of the error */ #endif ParseARG_SDECL /* A place to hold %extra_argument */ #if YYSTACKDEPTH<=0 int yystksz; /* Current side of the stack */ yyStackEntry *yystack; /* The parser's stack */ yyStackEntry yystk0; /* First stack entry */ #else yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ yyStackEntry *yystackEnd; /* Last entry in the stack */ #endif }; typedef struct yyParser yyParser; #ifndef NDEBUG #include <stdio.h> static FILE *yyTraceFILE = 0; ................................................................................ ** line of trace output. If NULL, then tracing is ** turned off. ** </ul> ** ** Outputs: ** None. */ void ParseTrace (FILE * TraceFILE, char *zTracePrompt) { yyTraceFILE = TraceFILE; yyTracePrompt = zTracePrompt; if (yyTraceFILE == 0) yyTracePrompt = 0; else if (yyTracePrompt == 0) yyTraceFILE = 0; } #endif /* NDEBUG */ #if defined(YYCOVERAGE) || !defined(NDEBUG) /* For tracing shifts, the names of all terminals and nonterminals ** are required. The following table supplies these names */ static const char *const yyTokenName[] = { /* 0 */ "$", /* 1 */ "VANUATU_NEWLINE", /* 2 */ "VANUATU_POINT", /* 3 */ "VANUATU_OPEN_BRACKET", /* 4 */ "VANUATU_CLOSE_BRACKET", /* 5 */ "VANUATU_POINT_M", /* 6 */ "VANUATU_POINT_Z", /* 7 */ "VANUATU_POINT_ZM", /* 8 */ "VANUATU_NUM", /* 9 */ "VANUATU_COMMA", /* 10 */ "VANUATU_LINESTRING", /* 11 */ "VANUATU_LINESTRING_M", /* 12 */ "VANUATU_LINESTRING_Z", /* 13 */ "VANUATU_LINESTRING_ZM", /* 14 */ "VANUATU_POLYGON", /* 15 */ "VANUATU_POLYGON_M", /* 16 */ "VANUATU_POLYGON_Z", /* 17 */ "VANUATU_POLYGON_ZM", /* 18 */ "VANUATU_MULTIPOINT", /* 19 */ "VANUATU_MULTIPOINT_M", /* 20 */ "VANUATU_MULTIPOINT_Z", /* 21 */ "VANUATU_MULTIPOINT_ZM", /* 22 */ "VANUATU_MULTILINESTRING", /* 23 */ "VANUATU_MULTILINESTRING_M", /* 24 */ "VANUATU_MULTILINESTRING_Z", /* 25 */ "VANUATU_MULTILINESTRING_ZM", /* 26 */ "VANUATU_MULTIPOLYGON", /* 27 */ "VANUATU_MULTIPOLYGON_M", /* 28 */ "VANUATU_MULTIPOLYGON_Z", /* 29 */ "VANUATU_MULTIPOLYGON_ZM", /* 30 */ "VANUATU_GEOMETRYCOLLECTION", /* 31 */ "VANUATU_GEOMETRYCOLLECTION_M", /* 32 */ "VANUATU_GEOMETRYCOLLECTION_Z", /* 33 */ "VANUATU_GEOMETRYCOLLECTION_ZM", /* 34 */ "error", /* 35 */ "main", /* 36 */ "in", /* 37 */ "state", /* 38 */ "program", /* 39 */ "geo_text", /* 40 */ "geo_textz", /* 41 */ "geo_textm", /* 42 */ "geo_textzm", /* 43 */ "point", /* 44 */ "linestring", /* 45 */ "polygon", /* 46 */ "multipoint", /* 47 */ "multilinestring", /* 48 */ "multipolygon", /* 49 */ "geocoll", /* 50 */ "pointz", /* 51 */ "linestringz", /* 52 */ "polygonz", /* 53 */ "multipointz", /* 54 */ "multilinestringz", /* 55 */ "multipolygonz", /* 56 */ "geocollz", /* 57 */ "pointm", /* 58 */ "linestringm", /* 59 */ "polygonm", /* 60 */ "multipointm", /* 61 */ "multilinestringm", /* 62 */ "multipolygonm", /* 63 */ "geocollm", /* 64 */ "pointzm", /* 65 */ "linestringzm", /* 66 */ "polygonzm", /* 67 */ "multipointzm", /* 68 */ "multilinestringzm", /* 69 */ "multipolygonzm", /* 70 */ "geocollzm", /* 71 */ "point_coordxy", /* 72 */ "point_coordxym", /* 73 */ "point_coordxyz", /* 74 */ "point_coordxyzm", /* 75 */ "point_brkt_coordxy", /* 76 */ "coord", /* 77 */ "point_brkt_coordxym", /* 78 */ "point_brkt_coordxyz", /* 79 */ "point_brkt_coordxyzm", /* 80 */ "extra_brkt_pointsxy", /* 81 */ "extra_brkt_pointsxym", /* 82 */ "extra_brkt_pointsxyz", /* 83 */ "extra_brkt_pointsxyzm", /* 84 */ "extra_pointsxy", /* 85 */ "extra_pointsxym", /* 86 */ "extra_pointsxyz", /* 87 */ "extra_pointsxyzm", /* 88 */ "linestring_text", /* 89 */ "linestring_textm", /* 90 */ "linestring_textz", /* 91 */ "linestring_textzm", /* 92 */ "polygon_text", /* 93 */ "polygon_textm", /* 94 */ "polygon_textz", /* 95 */ "polygon_textzm", /* 96 */ "ring", /* 97 */ "extra_rings", /* 98 */ "ringm", /* 99 */ "extra_ringsm", /* 100 */ "ringz", /* 101 */ "extra_ringsz", /* 102 */ "ringzm", /* 103 */ "extra_ringszm", /* 104 */ "multipoint_text", /* 105 */ "multipoint_textm", /* 106 */ "multipoint_textz", /* 107 */ "multipoint_textzm", /* 108 */ "multilinestring_text", /* 109 */ "multilinestring_textm", /* 110 */ "multilinestring_textz", /* 111 */ "multilinestring_textzm", /* 112 */ "multilinestring_text2", /* 113 */ "multilinestring_textm2", /* 114 */ "multilinestring_textz2", /* 115 */ "multilinestring_textzm2", /* 116 */ "multipolygon_text", /* 117 */ "multipolygon_textm", /* 118 */ "multipolygon_textz", /* 119 */ "multipolygon_textzm", /* 120 */ "multipolygon_text2", /* 121 */ "multipolygon_textm2", /* 122 */ "multipolygon_textz2", /* 123 */ "multipolygon_textzm2", /* 124 */ "geocoll_text", /* 125 */ "geocoll_textm", /* 126 */ "geocoll_textz", /* 127 */ "geocoll_textzm", /* 128 */ "geocoll_text2", /* 129 */ "geocoll_textm2", /* 130 */ "geocoll_textz2", /* 131 */ "geocoll_textzm2", }; #endif /* defined(YYCOVERAGE) || !defined(NDEBUG) */ #ifndef NDEBUG /* For tracing reduce actions, the names of all rules are required. */ static const char *const yyRuleName[] = { /* 0 */ "geo_text ::= point", /* 1 */ "geo_text ::= linestring", /* 2 */ "geo_text ::= polygon", /* 3 */ "geo_text ::= multipoint", /* 4 */ "geo_text ::= multilinestring", /* 5 */ "geo_text ::= multipolygon", /* 6 */ "geo_text ::= geocoll", /* 7 */ "geo_textz ::= pointz", /* 8 */ "geo_textz ::= linestringz", /* 9 */ "geo_textz ::= polygonz", /* 10 */ "geo_textz ::= multipointz", /* 11 */ "geo_textz ::= multilinestringz", /* 12 */ "geo_textz ::= multipolygonz", /* 13 */ "geo_textz ::= geocollz", /* 14 */ "geo_textm ::= pointm", /* 15 */ "geo_textm ::= linestringm", /* 16 */ "geo_textm ::= polygonm", /* 17 */ "geo_textm ::= multipointm", /* 18 */ "geo_textm ::= multilinestringm", /* 19 */ "geo_textm ::= multipolygonm", /* 20 */ "geo_textm ::= geocollm", /* 21 */ "geo_textzm ::= pointzm", /* 22 */ "geo_textzm ::= linestringzm", /* 23 */ "geo_textzm ::= polygonzm", /* 24 */ "geo_textzm ::= multipointzm", /* 25 */ "geo_textzm ::= multilinestringzm", /* 26 */ "geo_textzm ::= multipolygonzm", /* 27 */ "geo_textzm ::= geocollzm", /* 28 */ "point ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy VANUATU_CLOSE_BRACKET", /* 29 */ "pointm ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym VANUATU_CLOSE_BRACKET", /* 30 */ "pointz ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz VANUATU_CLOSE_BRACKET", /* 31 */ "pointzm ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_CLOSE_BRACKET", /* 32 */ "point_brkt_coordxy ::= VANUATU_OPEN_BRACKET coord coord VANUATU_CLOSE_BRACKET", /* 33 */ "point_brkt_coordxym ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET", /* 34 */ "point_brkt_coordxyz ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET", /* 35 */ "point_brkt_coordxyzm ::= VANUATU_OPEN_BRACKET coord coord coord coord VANUATU_CLOSE_BRACKET", /* 36 */ "point_coordxy ::= coord coord", /* 37 */ "point_coordxym ::= coord coord coord", /* 38 */ "point_coordxyz ::= coord coord coord", /* 39 */ "point_coordxyzm ::= coord coord coord coord", /* 40 */ "coord ::= VANUATU_NUM", /* 41 */ "extra_brkt_pointsxy ::=", /* 42 */ "extra_brkt_pointsxy ::= VANUATU_COMMA point_brkt_coordxy extra_brkt_pointsxy", /* 43 */ "extra_brkt_pointsxym ::=", /* 44 */ "extra_brkt_pointsxym ::= VANUATU_COMMA point_brkt_coordxym extra_brkt_pointsxym", /* 45 */ "extra_brkt_pointsxyz ::=", /* 46 */ "extra_brkt_pointsxyz ::= VANUATU_COMMA point_brkt_coordxyz extra_brkt_pointsxyz", /* 47 */ "extra_brkt_pointsxyzm ::=", /* 48 */ "extra_brkt_pointsxyzm ::= VANUATU_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm", /* 49 */ "extra_pointsxy ::=", /* 50 */ "extra_pointsxy ::= VANUATU_COMMA point_coordxy extra_pointsxy", /* 51 */ "extra_pointsxym ::=", /* 52 */ "extra_pointsxym ::= VANUATU_COMMA point_coordxym extra_pointsxym", /* 53 */ "extra_pointsxyz ::=", /* 54 */ "extra_pointsxyz ::= VANUATU_COMMA point_coordxyz extra_pointsxyz", /* 55 */ "extra_pointsxyzm ::=", /* 56 */ "extra_pointsxyzm ::= VANUATU_COMMA point_coordxyzm extra_pointsxyzm", /* 57 */ "linestring ::= VANUATU_LINESTRING linestring_text", /* 58 */ "linestringm ::= VANUATU_LINESTRING_M linestring_textm", /* 59 */ "linestringz ::= VANUATU_LINESTRING_Z linestring_textz", /* 60 */ "linestringzm ::= VANUATU_LINESTRING_ZM linestring_textzm", /* 61 */ "linestring_text ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", /* 62 */ "linestring_textm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", /* 63 */ "linestring_textz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", /* 64 */ "linestring_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", /* 65 */ "polygon ::= VANUATU_POLYGON polygon_text", /* 66 */ "polygonm ::= VANUATU_POLYGON_M polygon_textm", /* 67 */ "polygonz ::= VANUATU_POLYGON_Z polygon_textz", /* 68 */ "polygonzm ::= VANUATU_POLYGON_ZM polygon_textzm", /* 69 */ "polygon_text ::= VANUATU_OPEN_BRACKET ring extra_rings VANUATU_CLOSE_BRACKET", /* 70 */ "polygon_textm ::= VANUATU_OPEN_BRACKET ringm extra_ringsm VANUATU_CLOSE_BRACKET", /* 71 */ "polygon_textz ::= VANUATU_OPEN_BRACKET ringz extra_ringsz VANUATU_CLOSE_BRACKET", /* 72 */ "polygon_textzm ::= VANUATU_OPEN_BRACKET ringzm extra_ringszm VANUATU_CLOSE_BRACKET", /* 73 */ "ring ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", /* 74 */ "extra_rings ::=", /* 75 */ "extra_rings ::= VANUATU_COMMA ring extra_rings", /* 76 */ "ringm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", /* 77 */ "extra_ringsm ::=", /* 78 */ "extra_ringsm ::= VANUATU_COMMA ringm extra_ringsm", /* 79 */ "ringz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", /* 80 */ "extra_ringsz ::=", /* 81 */ "extra_ringsz ::= VANUATU_COMMA ringz extra_ringsz", /* 82 */ "ringzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", /* 83 */ "extra_ringszm ::=", /* 84 */ "extra_ringszm ::= VANUATU_COMMA ringzm extra_ringszm", /* 85 */ "multipoint ::= VANUATU_MULTIPOINT multipoint_text", /* 86 */ "multipointm ::= VANUATU_MULTIPOINT_M multipoint_textm", /* 87 */ "multipointz ::= VANUATU_MULTIPOINT_Z multipoint_textz", /* 88 */ "multipointzm ::= VANUATU_MULTIPOINT_ZM multipoint_textzm", /* 89 */ "multipoint_text ::= VANUATU_OPEN_BRACKET point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", /* 90 */ "multipoint_textm ::= VANUATU_OPEN_BRACKET point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", /* 91 */ "multipoint_textz ::= VANUATU_OPEN_BRACKET point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", /* 92 */ "multipoint_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", /* 93 */ "multipoint_text ::= VANUATU_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy VANUATU_CLOSE_BRACKET", /* 94 */ "multipoint_textm ::= VANUATU_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym VANUATU_CLOSE_BRACKET", /* 95 */ "multipoint_textz ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz VANUATU_CLOSE_BRACKET", /* 96 */ "multipoint_textzm ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm VANUATU_CLOSE_BRACKET", /* 97 */ "multilinestring ::= VANUATU_MULTILINESTRING multilinestring_text", /* 98 */ "multilinestringm ::= VANUATU_MULTILINESTRING_M multilinestring_textm", /* 99 */ "multilinestringz ::= VANUATU_MULTILINESTRING_Z multilinestring_textz", /* 100 */ "multilinestringzm ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm", /* 101 */ "multilinestring_text ::= VANUATU_OPEN_BRACKET linestring_text multilinestring_text2 VANUATU_CLOSE_BRACKET", /* 102 */ "multilinestring_text2 ::=", /* 103 */ "multilinestring_text2 ::= VANUATU_COMMA linestring_text multilinestring_text2", /* 104 */ "multilinestring_textm ::= VANUATU_OPEN_BRACKET linestring_textm multilinestring_textm2 VANUATU_CLOSE_BRACKET", /* 105 */ "multilinestring_textm2 ::=", /* 106 */ "multilinestring_textm2 ::= VANUATU_COMMA linestring_textm multilinestring_textm2", /* 107 */ "multilinestring_textz ::= VANUATU_OPEN_BRACKET linestring_textz multilinestring_textz2 VANUATU_CLOSE_BRACKET", /* 108 */ "multilinestring_textz2 ::=", /* 109 */ "multilinestring_textz2 ::= VANUATU_COMMA linestring_textz multilinestring_textz2", /* 110 */ "multilinestring_textzm ::= VANUATU_OPEN_BRACKET linestring_textzm multilinestring_textzm2 VANUATU_CLOSE_BRACKET", /* 111 */ "multilinestring_textzm2 ::=", /* 112 */ "multilinestring_textzm2 ::= VANUATU_COMMA linestring_textzm multilinestring_textzm2", /* 113 */ "multipolygon ::= VANUATU_MULTIPOLYGON multipolygon_text", /* 114 */ "multipolygonm ::= VANUATU_MULTIPOLYGON_M multipolygon_textm", /* 115 */ "multipolygonz ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz", /* 116 */ "multipolygonzm ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm", /* 117 */ "multipolygon_text ::= VANUATU_OPEN_BRACKET polygon_text multipolygon_text2 VANUATU_CLOSE_BRACKET", /* 118 */ "multipolygon_text2 ::=", /* 119 */ "multipolygon_text2 ::= VANUATU_COMMA polygon_text multipolygon_text2", /* 120 */ "multipolygon_textm ::= VANUATU_OPEN_BRACKET polygon_textm multipolygon_textm2 VANUATU_CLOSE_BRACKET", /* 121 */ "multipolygon_textm2 ::=", /* 122 */ "multipolygon_textm2 ::= VANUATU_COMMA polygon_textm multipolygon_textm2", /* 123 */ "multipolygon_textz ::= VANUATU_OPEN_BRACKET polygon_textz multipolygon_textz2 VANUATU_CLOSE_BRACKET", /* 124 */ "multipolygon_textz2 ::=", /* 125 */ "multipolygon_textz2 ::= VANUATU_COMMA polygon_textz multipolygon_textz2", /* 126 */ "multipolygon_textzm ::= VANUATU_OPEN_BRACKET polygon_textzm multipolygon_textzm2 VANUATU_CLOSE_BRACKET", /* 127 */ "multipolygon_textzm2 ::=", /* 128 */ "multipolygon_textzm2 ::= VANUATU_COMMA polygon_textzm multipolygon_textzm2", /* 129 */ "geocoll ::= VANUATU_GEOMETRYCOLLECTION geocoll_text", /* 130 */ "geocollm ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm", /* 131 */ "geocollz ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz", /* 132 */ "geocollzm ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm", /* 133 */ "geocoll_text ::= VANUATU_OPEN_BRACKET point geocoll_text2 VANUATU_CLOSE_BRACKET", /* 134 */ "geocoll_text ::= VANUATU_OPEN_BRACKET linestring geocoll_text2 VANUATU_CLOSE_BRACKET", /* 135 */ "geocoll_text ::= VANUATU_OPEN_BRACKET polygon geocoll_text2 VANUATU_CLOSE_BRACKET", /* 136 */ "geocoll_text ::= VANUATU_OPEN_BRACKET multipoint geocoll_text2 VANUATU_CLOSE_BRACKET", /* 137 */ "geocoll_text ::= VANUATU_OPEN_BRACKET multilinestring geocoll_text2 VANUATU_CLOSE_BRACKET", /* 138 */ "geocoll_text ::= VANUATU_OPEN_BRACKET multipolygon geocoll_text2 VANUATU_CLOSE_BRACKET", /* 139 */ "geocoll_text ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 VANUATU_CLOSE_BRACKET", /* 140 */ "geocoll_text2 ::=", /* 141 */ "geocoll_text2 ::= VANUATU_COMMA point geocoll_text2", /* 142 */ "geocoll_text2 ::= VANUATU_COMMA linestring geocoll_text2", /* 143 */ "geocoll_text2 ::= VANUATU_COMMA polygon geocoll_text2", /* 144 */ "geocoll_text2 ::= VANUATU_COMMA multipoint geocoll_text2", /* 145 */ "geocoll_text2 ::= VANUATU_COMMA multilinestring geocoll_text2", /* 146 */ "geocoll_text2 ::= VANUATU_COMMA multipolygon geocoll_text2", /* 147 */ "geocoll_text2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2", /* 148 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET pointm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 149 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET linestringm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 150 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET polygonm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 151 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET multipointm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 152 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET multilinestringm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 153 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET multipolygonm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 154 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 VANUATU_CLOSE_BRACKET", /* 155 */ "geocoll_textm2 ::=", /* 156 */ "geocoll_textm2 ::= VANUATU_COMMA pointm geocoll_textm2", /* 157 */ "geocoll_textm2 ::= VANUATU_COMMA linestringm geocoll_textm2", /* 158 */ "geocoll_textm2 ::= VANUATU_COMMA polygonm geocoll_textm2", /* 159 */ "geocoll_textm2 ::= VANUATU_COMMA multipointm geocoll_textm2", /* 160 */ "geocoll_textm2 ::= VANUATU_COMMA multilinestringm geocoll_textm2", /* 161 */ "geocoll_textm2 ::= VANUATU_COMMA multipolygonm geocoll_textm2", /* 162 */ "geocoll_textm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2", /* 163 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET pointz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 164 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET linestringz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 165 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET polygonz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 166 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET multipointz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 167 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET multilinestringz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 168 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET multipolygonz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 169 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 VANUATU_CLOSE_BRACKET", /* 170 */ "geocoll_textz2 ::=", /* 171 */ "geocoll_textz2 ::= VANUATU_COMMA pointz geocoll_textz2", /* 172 */ "geocoll_textz2 ::= VANUATU_COMMA linestringz geocoll_textz2", /* 173 */ "geocoll_textz2 ::= VANUATU_COMMA polygonz geocoll_textz2", /* 174 */ "geocoll_textz2 ::= VANUATU_COMMA multipointz geocoll_textz2", /* 175 */ "geocoll_textz2 ::= VANUATU_COMMA multilinestringz geocoll_textz2", /* 176 */ "geocoll_textz2 ::= VANUATU_COMMA multipolygonz geocoll_textz2", /* 177 */ "geocoll_textz2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2", /* 178 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET pointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 179 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET linestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 180 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET polygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 181 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET multipointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 182 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET multilinestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 183 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET multipolygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 184 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", /* 185 */ "geocoll_textzm2 ::=", /* 186 */ "geocoll_textzm2 ::= VANUATU_COMMA pointzm geocoll_textzm2", /* 187 */ "geocoll_textzm2 ::= VANUATU_COMMA linestringzm geocoll_textzm2", /* 188 */ "geocoll_textzm2 ::= VANUATU_COMMA polygonzm geocoll_textzm2", /* 189 */ "geocoll_textzm2 ::= VANUATU_COMMA multipointzm geocoll_textzm2", /* 190 */ "geocoll_textzm2 ::= VANUATU_COMMA multilinestringzm geocoll_textzm2", /* 191 */ "geocoll_textzm2 ::= VANUATU_COMMA multipolygonzm geocoll_textzm2", /* 192 */ "geocoll_textzm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2", /* 193 */ "main ::= in", /* 194 */ "in ::=", /* 195 */ "in ::= in state VANUATU_NEWLINE", /* 196 */ "state ::= program", /* 197 */ "program ::= geo_text", /* 198 */ "program ::= geo_textz", /* 199 */ "program ::= geo_textm", /* 200 */ "program ::= geo_textzm", }; #endif /* NDEBUG */ #if YYSTACKDEPTH<=0 /* ** Try to increase the size of the parser stack. Return the number ** of errors. Return 0 on success. */ static int yyGrowStack (yyParser * p) { int newSize; int idx; yyStackEntry *pNew; newSize = p->yystksz * 2 + 100; idx = p->yytos ? (int) (p->yytos - p->yystack) : 0; if (p->yystack == &p->yystk0) { pNew = malloc (newSize * sizeof (pNew[0])); if (pNew) pNew[0] = p->yystk0; } else { pNew = realloc (p->yystack, newSize * sizeof (pNew[0])); } if (pNew) { p->yystack = pNew; p->yytos = &p->yystack[idx]; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sStack grows from %d to %d entries.\n", yyTracePrompt, p->yystksz, newSize); } #endif p->yystksz = newSize; } return pNew == 0; } #endif /* Datatype of the argument to the memory allocated passed as the ** second argument to ParseAlloc() below. This can be changed by ** putting an appropriate #define in the %include section of the input ** grammar. */ #ifndef YYMALLOCARGTYPE #define YYMALLOCARGTYPE size_t #endif /* Initialize a new parser that has already been allocated. */ static void ParseInit (void *yypParser) { yyParser *pParser = (yyParser *) yypParser; #ifdef YYTRACKMAXSTACKDEPTH pParser->yyhwm = 0; #endif #if YYSTACKDEPTH<=0 pParser->yytos = NULL; pParser->yystack = NULL; pParser->yystksz = 0; if (yyGrowStack (pParser)) { pParser->yystack = &pParser->yystk0; pParser->yystksz = 1; } #endif #ifndef YYNOERRORRECOVERY pParser->yyerrcnt = -1; #endif pParser->yytos = pParser->yystack; pParser->yystack[0].stateno = 0; pParser->yystack[0].major = 0; #if YYSTACKDEPTH>0 pParser->yystackEnd = &pParser->yystack[YYSTACKDEPTH - 1]; #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** This function allocates a new parser. ** The only argument is a pointer to a function which works like ................................................................................ ** Inputs: ** A pointer to the function used to allocate memory. ** ** Outputs: ** A pointer to a parser. This pointer is used in subsequent calls ** to Parse and ParseFree. */ void * ParseAlloc (void *(*mallocProc) (YYMALLOCARGTYPE)) { yyParser *pParser; pParser = (yyParser *) (*mallocProc) ((YYMALLOCARGTYPE) sizeof (yyParser)); if (pParser) ParseInit (pParser); return pParser; } #endif /* Parse_ENGINEALWAYSONSTACK */ /* The following function deletes the "minor type" or semantic value ** associated with a symbol. The symbol can be either a terminal ** or nonterminal. "yymajor" is the symbol code, and "yypminor" is ** a pointer to the value to be deleted. The code used to do the ** deletions is derived from the %destructor and/or %token_destructor ** directives of the input grammar. */ static void yy_destructor (yyParser * yypParser, /* The parser */ YYCODETYPE yymajor, /* Type code for object to destroy */ YYMINORTYPE * yypminor /* The object to be destroyed */ ) { ParseARG_FETCH; switch (yymajor) { /* Here is inserted the actions which take place when a ** terminal or non-terminal is destroyed. This can happen ** when the symbol is popped from the stack during a ** reduce or during error processing or when a parser is ** being destroyed before it is finished parsing. ** ** Note: during a reduce, the only symbols destroyed are those ** which appear on the RHS of the rule, but which are *not* used ** inside the C code. */ /********* Begin destructor definitions ***************************************/ /********* End destructor definitions *****************************************/ default: break; /* If no destructor action specified: do nothing */ } } /* ** Pop the parser's stack once. ** ** If there is a destructor routine associated with the token which ** is popped from the stack, then call it. */ static void yy_pop_parser_stack (yyParser * pParser) { yyStackEntry *yytos; assert (pParser->yytos != 0); assert (pParser->yytos > pParser->yystack); yytos = pParser->yytos--; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sPopping %s\n", yyTracePrompt, yyTokenName[yytos->major]); } #endif yy_destructor (pParser, yytos->major, &yytos->minor); } /* ** Clear all secondary memory allocations from the parser */ static void ParseFinalize (void *p) { yyParser *pParser = (yyParser *) p; while (pParser->yytos > pParser->yystack) yy_pop_parser_stack (pParser); #if YYSTACKDEPTH<=0 if (pParser->yystack != &pParser->yystk0) free (pParser->yystack); #endif } #ifndef Parse_ENGINEALWAYSONSTACK /* ** Deallocate and destroy a parser. Destructors are called for ** all stack elements before shutting the parser down. ** ** If the YYPARSEFREENEVERNULL macro exists (for example because it ** is defined in a %include section of the input grammar) then it is ** assumed that the input pointer is never NULL. */ void ParseFree (void *p, /* The parser to be deleted */ void (*freeProc) (void *) /* Function used to reclaim memory */ ) { #ifndef YYPARSEFREENEVERNULL if (p == 0) return; #endif ParseFinalize (p); (*freeProc) (p); } #endif /* Parse_ENGINEALWAYSONSTACK */ /* ** Return the peak depth of the stack for a parser. */ #ifdef YYTRACKMAXSTACKDEPTH int ParseStackPeak (void *p) { yyParser *pParser = (yyParser *) p; return pParser->yyhwm; } #endif /* This array of booleans keeps track of the parser statement ** coverage. The element yycoverage[X][Y] is set when the parser ** is in state X and has a lookahead token Y. In a well-tested ** systems, every element of this matrix should end up being set. ................................................................................ ** ** (1) has not been used by the parser, and ** (2) is not a syntax error. ** ** Return the number of missed state/lookahead combinations. */ #if defined(YYCOVERAGE) int ParseCoverage (FILE * out) { int stateno, iLookAhead, i; int nMissed = 0; for (stateno = 0; stateno < YYNSTATE; stateno++) { i = yy_shift_ofst[stateno]; for (iLookAhead = 0; iLookAhead < YYNTOKEN; iLookAhead++) { if (yy_lookahead[i + iLookAhead] != iLookAhead) continue; if (yycoverage[stateno][iLookAhead] == 0) nMissed++; if (out) { fprintf (out, "State %d lookahead %s %s\n", stateno, yyTokenName[iLookAhead], yycoverage[stateno][iLookAhead] ? "ok" : "missed"); } } } return nMissed; } #endif /* ** Find the appropriate action for a parser given the terminal ** look-ahead token iLookAhead. */ static unsigned int yy_find_shift_action (yyParser * pParser, /* The parser */ YYCODETYPE iLookAhead /* The look-ahead token */ ) { int i; int stateno = pParser->yytos->stateno; if (stateno > YY_MAX_SHIFT) return stateno; assert (stateno <= YY_SHIFT_COUNT); #if defined(YYCOVERAGE) yycoverage[stateno][iLookAhead] = 1; #endif do { i = yy_shift_ofst[stateno]; assert (i >= 0); assert (i + YYNTOKEN <= (int) sizeof (yy_lookahead) / sizeof (yy_lookahead[0])); assert (iLookAhead != YYNOCODE); assert (iLookAhead < YYNTOKEN); i += iLookAhead; if (yy_lookahead[i] != iLookAhead) { #ifdef YYFALLBACK YYCODETYPE iFallback; /* Fallback token */ if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0]) && (iFallback = yyFallback[iLookAhead]) != 0) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); } #endif assert (yyFallback[iFallback] == 0); /* Fallback loop must terminate */ iLookAhead = iFallback; continue; } #endif #ifdef YYWILDCARD { int j = i - iLookAhead + YYWILDCARD; if ( #if YY_SHIFT_MIN+YYWILDCARD<0 j >= 0 && #endif #if YY_SHIFT_MAX+YYWILDCARD>=YY_ACTTAB_COUNT j < YY_ACTTAB_COUNT && #endif yy_lookahead[j] == YYWILDCARD && iLookAhead > 0) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n", yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); } #endif /* NDEBUG */ return yy_action[j]; } } #endif /* YYWILDCARD */ return yy_default[stateno]; } else { return yy_action[i]; } } while (1); } /* ** Find the appropriate action for a parser given the non-terminal ** look-ahead token iLookAhead. */ static int yy_find_reduce_action (int stateno, /* Current state number */ YYCODETYPE iLookAhead /* The look-ahead token */ ) { int i; #ifdef YYERRORSYMBOL if (stateno > YY_REDUCE_COUNT) { return yy_default[stateno]; } #else assert (stateno <= YY_REDUCE_COUNT); #endif i = yy_reduce_ofst[stateno]; assert (iLookAhead != YYNOCODE); i += iLookAhead; #ifdef YYERRORSYMBOL if (i < 0 || i >= YY_ACTTAB_COUNT || yy_lookahead[i] != iLookAhead) { return yy_default[stateno]; } #else assert (i >= 0 && i < YY_ACTTAB_COUNT); assert (yy_lookahead[i] == iLookAhead); #endif return yy_action[i]; } /* ** The following routine is called if the stack overflows. */ static void yyStackOverflow (yyParser * yypParser) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt); } #endif while (yypParser->yytos > yypParser->yystack) yy_pop_parser_stack (yypParser); /* Here code is inserted which will execute if the parser ** stack every overflows */ /******** Begin %stack_overflow code ******************************************/ spatialite_e ("Giving up. Parser stack overflow\n"); /******** End %stack_overflow code ********************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ } /* ** Print tracing information for a SHIFT action */ #ifndef NDEBUG static void yyTraceShift (yyParser * yypParser, int yyNewState, const char *zTag) { if (yyTraceFILE) { if (yyNewState < YYNSTATE) { fprintf (yyTraceFILE, "%s%s '%s', go to state %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState); } else { fprintf (yyTraceFILE, "%s%s '%s', pending reduce %d\n", yyTracePrompt, zTag, yyTokenName[yypParser->yytos->major], yyNewState - YY_MIN_REDUCE); } } } #else #define yyTraceShift(X,Y,Z) #endif /* ** Perform a shift action. */ static void yy_shift (yyParser * yypParser, /* The parser to be shifted */ int yyNewState, /* The new state to shift in */ int yyMajor, /* The major token to shift in */ ParseTOKENTYPE yyMinor /* The minor token to shift in */ ) { yyStackEntry *yytos; yypParser->yytos++; #ifdef YYTRACKMAXSTACKDEPTH if ((int) (yypParser->yytos - yypParser->yystack) > yypParser->yyhwm) { yypParser->yyhwm++; assert (yypParser->yyhwm == (int) (yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if (yypParser->yytos > yypParser->yystackEnd) { yypParser->yytos--; yyStackOverflow (yypParser); return; } #else if (yypParser->yytos >= &yypParser->yystack[yypParser->yystksz]) { if (yyGrowStack (yypParser)) { yypParser->yytos--; yyStackOverflow (yypParser); return; } } #endif if (yyNewState > YY_MAX_SHIFT) { yyNewState += YY_MIN_REDUCE - YY_MIN_SHIFTREDUCE; } yytos = yypParser->yytos; yytos->stateno = (YYACTIONTYPE) yyNewState; yytos->major = (YYCODETYPE) yyMajor; yytos->minor.yy0 = yyMinor; yyTraceShift (yypParser, yyNewState, "Shift"); } /* The following table contains information about every rule that ** is used during the reduce. */ static const struct { YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ signed char nrhs; /* Negative of the number of RHS symbols in the rule */ } yyRuleInfo[] = { {39, -1}, /* (0) geo_text ::= point */ {39, -1}, /* (1) geo_text ::= linestring */ {39, -1}, /* (2) geo_text ::= polygon */ {39, -1}, /* (3) geo_text ::= multipoint */ {39, -1}, /* (4) geo_text ::= multilinestring */ {39, -1}, /* (5) geo_text ::= multipolygon */ {39, -1}, /* (6) geo_text ::= geocoll */ {40, -1}, /* (7) geo_textz ::= pointz */ {40, -1}, /* (8) geo_textz ::= linestringz */ {40, -1}, /* (9) geo_textz ::= polygonz */ {40, -1}, /* (10) geo_textz ::= multipointz */ {40, -1}, /* (11) geo_textz ::= multilinestringz */ {40, -1}, /* (12) geo_textz ::= multipolygonz */ {40, -1}, /* (13) geo_textz ::= geocollz */ {41, -1}, /* (14) geo_textm ::= pointm */ {41, -1}, /* (15) geo_textm ::= linestringm */ {41, -1}, /* (16) geo_textm ::= polygonm */ {41, -1}, /* (17) geo_textm ::= multipointm */ {41, -1}, /* (18) geo_textm ::= multilinestringm */ {41, -1}, /* (19) geo_textm ::= multipolygonm */ {41, -1}, /* (20) geo_textm ::= geocollm */ {42, -1}, /* (21) geo_textzm ::= pointzm */ {42, -1}, /* (22) geo_textzm ::= linestringzm */ {42, -1}, /* (23) geo_textzm ::= polygonzm */ {42, -1}, /* (24) geo_textzm ::= multipointzm */ {42, -1}, /* (25) geo_textzm ::= multilinestringzm */ {42, -1}, /* (26) geo_textzm ::= multipolygonzm */ {42, -1}, /* (27) geo_textzm ::= geocollzm */ {43, -4}, /* (28) point ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy VANUATU_CLOSE_BRACKET */ {57, -4}, /* (29) pointm ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym VANUATU_CLOSE_BRACKET */ {50, -4}, /* (30) pointz ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz VANUATU_CLOSE_BRACKET */ {64, -4}, /* (31) pointzm ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_CLOSE_BRACKET */ {75, -4}, /* (32) point_brkt_coordxy ::= VANUATU_OPEN_BRACKET coord coord VANUATU_CLOSE_BRACKET */ {77, -5}, /* (33) point_brkt_coordxym ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ {78, -5}, /* (34) point_brkt_coordxyz ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ {79, -6}, /* (35) point_brkt_coordxyzm ::= VANUATU_OPEN_BRACKET coord coord coord coord VANUATU_CLOSE_BRACKET */ {71, -2}, /* (36) point_coordxy ::= coord coord */ {72, -3}, /* (37) point_coordxym ::= coord coord coord */ {73, -3}, /* (38) point_coordxyz ::= coord coord coord */ {74, -4}, /* (39) point_coordxyzm ::= coord coord coord coord */ {76, -1}, /* (40) coord ::= VANUATU_NUM */ {80, 0}, /* (41) extra_brkt_pointsxy ::= */ {80, -3}, /* (42) extra_brkt_pointsxy ::= VANUATU_COMMA point_brkt_coordxy extra_brkt_pointsxy */ {81, 0}, /* (43) extra_brkt_pointsxym ::= */ {81, -3}, /* (44) extra_brkt_pointsxym ::= VANUATU_COMMA point_brkt_coordxym extra_brkt_pointsxym */ {82, 0}, /* (45) extra_brkt_pointsxyz ::= */ {82, -3}, /* (46) extra_brkt_pointsxyz ::= VANUATU_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ {83, 0}, /* (47) extra_brkt_pointsxyzm ::= */ {83, -3}, /* (48) extra_brkt_pointsxyzm ::= VANUATU_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ {84, 0}, /* (49) extra_pointsxy ::= */ {84, -3}, /* (50) extra_pointsxy ::= VANUATU_COMMA point_coordxy extra_pointsxy */ {85, 0}, /* (51) extra_pointsxym ::= */ {85, -3}, /* (52) extra_pointsxym ::= VANUATU_COMMA point_coordxym extra_pointsxym */ {86, 0}, /* (53) extra_pointsxyz ::= */ {86, -3}, /* (54) extra_pointsxyz ::= VANUATU_COMMA point_coordxyz extra_pointsxyz */ {87, 0}, /* (55) extra_pointsxyzm ::= */ {87, -3}, /* (56) extra_pointsxyzm ::= VANUATU_COMMA point_coordxyzm extra_pointsxyzm */ {44, -2}, /* (57) linestring ::= VANUATU_LINESTRING linestring_text */ {58, -2}, /* (58) linestringm ::= VANUATU_LINESTRING_M linestring_textm */ {51, -2}, /* (59) linestringz ::= VANUATU_LINESTRING_Z linestring_textz */ {65, -2}, /* (60) linestringzm ::= VANUATU_LINESTRING_ZM linestring_textzm */ {88, -6}, /* (61) linestring_text ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ {89, -6}, /* (62) linestring_textm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ {90, -6}, /* (63) linestring_textz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ {91, -6}, /* (64) linestring_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ {45, -2}, /* (65) polygon ::= VANUATU_POLYGON polygon_text */ {59, -2}, /* (66) polygonm ::= VANUATU_POLYGON_M polygon_textm */ {52, -2}, /* (67) polygonz ::= VANUATU_POLYGON_Z polygon_textz */ {66, -2}, /* (68) polygonzm ::= VANUATU_POLYGON_ZM polygon_textzm */ {92, -4}, /* (69) polygon_text ::= VANUATU_OPEN_BRACKET ring extra_rings VANUATU_CLOSE_BRACKET */ {93, -4}, /* (70) polygon_textm ::= VANUATU_OPEN_BRACKET ringm extra_ringsm VANUATU_CLOSE_BRACKET */ {94, -4}, /* (71) polygon_textz ::= VANUATU_OPEN_BRACKET ringz extra_ringsz VANUATU_CLOSE_BRACKET */ {95, -4}, /* (72) polygon_textzm ::= VANUATU_OPEN_BRACKET ringzm extra_ringszm VANUATU_CLOSE_BRACKET */ {96, -10}, /* (73) ring ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ {97, 0}, /* (74) extra_rings ::= */ {97, -3}, /* (75) extra_rings ::= VANUATU_COMMA ring extra_rings */ {98, -10}, /* (76) ringm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ {99, 0}, /* (77) extra_ringsm ::= */ {99, -3}, /* (78) extra_ringsm ::= VANUATU_COMMA ringm extra_ringsm */ {100, -10}, /* (79) ringz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ {101, 0}, /* (80) extra_ringsz ::= */ {101, -3}, /* (81) extra_ringsz ::= VANUATU_COMMA ringz extra_ringsz */ {102, -10}, /* (82) ringzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ {103, 0}, /* (83) extra_ringszm ::= */ {103, -3}, /* (84) extra_ringszm ::= VANUATU_COMMA ringzm extra_ringszm */ {46, -2}, /* (85) multipoint ::= VANUATU_MULTIPOINT multipoint_text */ {60, -2}, /* (86) multipointm ::= VANUATU_MULTIPOINT_M multipoint_textm */ {53, -2}, /* (87) multipointz ::= VANUATU_MULTIPOINT_Z multipoint_textz */ {67, -2}, /* (88) multipointzm ::= VANUATU_MULTIPOINT_ZM multipoint_textzm */ {104, -4}, /* (89) multipoint_text ::= VANUATU_OPEN_BRACKET point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ {105, -4}, /* (90) multipoint_textm ::= VANUATU_OPEN_BRACKET point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ {106, -4}, /* (91) multipoint_textz ::= VANUATU_OPEN_BRACKET point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ {107, -4}, /* (92) multipoint_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ {104, -4}, /* (93) multipoint_text ::= VANUATU_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy VANUATU_CLOSE_BRACKET */ {105, -4}, /* (94) multipoint_textm ::= VANUATU_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym VANUATU_CLOSE_BRACKET */ {106, -4}, /* (95) multipoint_textz ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz VANUATU_CLOSE_BRACKET */ {107, -4}, /* (96) multipoint_textzm ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm VANUATU_CLOSE_BRACKET */ {47, -2}, /* (97) multilinestring ::= VANUATU_MULTILINESTRING multilinestring_text */ {61, -2}, /* (98) multilinestringm ::= VANUATU_MULTILINESTRING_M multilinestring_textm */ {54, -2}, /* (99) multilinestringz ::= VANUATU_MULTILINESTRING_Z multilinestring_textz */ {68, -2}, /* (100) multilinestringzm ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm */ {108, -4}, /* (101) multilinestring_text ::= VANUATU_OPEN_BRACKET linestring_text multilinestring_text2 VANUATU_CLOSE_BRACKET */ {112, 0}, /* (102) multilinestring_text2 ::= */ {112, -3}, /* (103) multilinestring_text2 ::= VANUATU_COMMA linestring_text multilinestring_text2 */ {109, -4}, /* (104) multilinestring_textm ::= VANUATU_OPEN_BRACKET linestring_textm multilinestring_textm2 VANUATU_CLOSE_BRACKET */ {113, 0}, /* (105) multilinestring_textm2 ::= */ {113, -3}, /* (106) multilinestring_textm2 ::= VANUATU_COMMA linestring_textm multilinestring_textm2 */ {110, -4}, /* (107) multilinestring_textz ::= VANUATU_OPEN_BRACKET linestring_textz multilinestring_textz2 VANUATU_CLOSE_BRACKET */ {114, 0}, /* (108) multilinestring_textz2 ::= */ {114, -3}, /* (109) multilinestring_textz2 ::= VANUATU_COMMA linestring_textz multilinestring_textz2 */ {111, -4}, /* (110) multilinestring_textzm ::= VANUATU_OPEN_BRACKET linestring_textzm multilinestring_textzm2 VANUATU_CLOSE_BRACKET */ {115, 0}, /* (111) multilinestring_textzm2 ::= */ {115, -3}, /* (112) multilinestring_textzm2 ::= VANUATU_COMMA linestring_textzm multilinestring_textzm2 */ {48, -2}, /* (113) multipolygon ::= VANUATU_MULTIPOLYGON multipolygon_text */ {62, -2}, /* (114) multipolygonm ::= VANUATU_MULTIPOLYGON_M multipolygon_textm */ {55, -2}, /* (115) multipolygonz ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz */ {69, -2}, /* (116) multipolygonzm ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm */ {116, -4}, /* (117) multipolygon_text ::= VANUATU_OPEN_BRACKET polygon_text multipolygon_text2 VANUATU_CLOSE_BRACKET */ {120, 0}, /* (118) multipolygon_text2 ::= */ {120, -3}, /* (119) multipolygon_text2 ::= VANUATU_COMMA polygon_text multipolygon_text2 */ {117, -4}, /* (120) multipolygon_textm ::= VANUATU_OPEN_BRACKET polygon_textm multipolygon_textm2 VANUATU_CLOSE_BRACKET */ {121, 0}, /* (121) multipolygon_textm2 ::= */ {121, -3}, /* (122) multipolygon_textm2 ::= VANUATU_COMMA polygon_textm multipolygon_textm2 */ {118, -4}, /* (123) multipolygon_textz ::= VANUATU_OPEN_BRACKET polygon_textz multipolygon_textz2 VANUATU_CLOSE_BRACKET */ {122, 0}, /* (124) multipolygon_textz2 ::= */ {122, -3}, /* (125) multipolygon_textz2 ::= VANUATU_COMMA polygon_textz multipolygon_textz2 */ {119, -4}, /* (126) multipolygon_textzm ::= VANUATU_OPEN_BRACKET polygon_textzm multipolygon_textzm2 VANUATU_CLOSE_BRACKET */ {123, 0}, /* (127) multipolygon_textzm2 ::= */ {123, -3}, /* (128) multipolygon_textzm2 ::= VANUATU_COMMA polygon_textzm multipolygon_textzm2 */ {49, -2}, /* (129) geocoll ::= VANUATU_GEOMETRYCOLLECTION geocoll_text */ {63, -2}, /* (130) geocollm ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm */ {56, -2}, /* (131) geocollz ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz */ {70, -2}, /* (132) geocollzm ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm */ {124, -4}, /* (133) geocoll_text ::= VANUATU_OPEN_BRACKET point geocoll_text2 VANUATU_CLOSE_BRACKET */ {124, -4}, /* (134) geocoll_text ::= VANUATU_OPEN_BRACKET linestring geocoll_text2 VANUATU_CLOSE_BRACKET */ {124, -4}, /* (135) geocoll_text ::= VANUATU_OPEN_BRACKET polygon geocoll_text2 VANUATU_CLOSE_BRACKET */ {124, -4}, /* (136) geocoll_text ::= VANUATU_OPEN_BRACKET multipoint geocoll_text2 VANUATU_CLOSE_BRACKET */ {124, -4}, /* (137) geocoll_text ::= VANUATU_OPEN_BRACKET multilinestring geocoll_text2 VANUATU_CLOSE_BRACKET */ {124, -4}, /* (138) geocoll_text ::= VANUATU_OPEN_BRACKET multipolygon geocoll_text2 VANUATU_CLOSE_BRACKET */ {124, -5}, /* (139) geocoll_text ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 VANUATU_CLOSE_BRACKET */ {128, 0}, /* (140) geocoll_text2 ::= */ {128, -3}, /* (141) geocoll_text2 ::= VANUATU_COMMA point geocoll_text2 */ {128, -3}, /* (142) geocoll_text2 ::= VANUATU_COMMA linestring geocoll_text2 */ {128, -3}, /* (143) geocoll_text2 ::= VANUATU_COMMA polygon geocoll_text2 */ {128, -3}, /* (144) geocoll_text2 ::= VANUATU_COMMA multipoint geocoll_text2 */ {128, -3}, /* (145) geocoll_text2 ::= VANUATU_COMMA multilinestring geocoll_text2 */ {128, -3}, /* (146) geocoll_text2 ::= VANUATU_COMMA multipolygon geocoll_text2 */ {128, -4}, /* (147) geocoll_text2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ {125, -4}, /* (148) geocoll_textm ::= VANUATU_OPEN_BRACKET pointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ {125, -4}, /* (149) geocoll_textm ::= VANUATU_OPEN_BRACKET linestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ {125, -4}, /* (150) geocoll_textm ::= VANUATU_OPEN_BRACKET polygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ {125, -4}, /* (151) geocoll_textm ::= VANUATU_OPEN_BRACKET multipointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ {125, -4}, /* (152) geocoll_textm ::= VANUATU_OPEN_BRACKET multilinestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ {125, -4}, /* (153) geocoll_textm ::= VANUATU_OPEN_BRACKET multipolygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ {125, -5}, /* (154) geocoll_textm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 VANUATU_CLOSE_BRACKET */ {129, 0}, /* (155) geocoll_textm2 ::= */ {129, -3}, /* (156) geocoll_textm2 ::= VANUATU_COMMA pointm geocoll_textm2 */ {129, -3}, /* (157) geocoll_textm2 ::= VANUATU_COMMA linestringm geocoll_textm2 */ {129, -3}, /* (158) geocoll_textm2 ::= VANUATU_COMMA polygonm geocoll_textm2 */ {129, -3}, /* (159) geocoll_textm2 ::= VANUATU_COMMA multipointm geocoll_textm2 */ {129, -3}, /* (160) geocoll_textm2 ::= VANUATU_COMMA multilinestringm geocoll_textm2 */ {129, -3}, /* (161) geocoll_textm2 ::= VANUATU_COMMA multipolygonm geocoll_textm2 */ {129, -4}, /* (162) geocoll_textm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ {126, -4}, /* (163) geocoll_textz ::= VANUATU_OPEN_BRACKET pointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ {126, -4}, /* (164) geocoll_textz ::= VANUATU_OPEN_BRACKET linestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ {126, -4}, /* (165) geocoll_textz ::= VANUATU_OPEN_BRACKET polygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ {126, -4}, /* (166) geocoll_textz ::= VANUATU_OPEN_BRACKET multipointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ {126, -4}, /* (167) geocoll_textz ::= VANUATU_OPEN_BRACKET multilinestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ {126, -4}, /* (168) geocoll_textz ::= VANUATU_OPEN_BRACKET multipolygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ {126, -5}, /* (169) geocoll_textz ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 VANUATU_CLOSE_BRACKET */ {130, 0}, /* (170) geocoll_textz2 ::= */ {130, -3}, /* (171) geocoll_textz2 ::= VANUATU_COMMA pointz geocoll_textz2 */ {130, -3}, /* (172) geocoll_textz2 ::= VANUATU_COMMA linestringz geocoll_textz2 */ {130, -3}, /* (173) geocoll_textz2 ::= VANUATU_COMMA polygonz geocoll_textz2 */ {130, -3}, /* (174) geocoll_textz2 ::= VANUATU_COMMA multipointz geocoll_textz2 */ {130, -3}, /* (175) geocoll_textz2 ::= VANUATU_COMMA multilinestringz geocoll_textz2 */ {130, -3}, /* (176) geocoll_textz2 ::= VANUATU_COMMA multipolygonz geocoll_textz2 */ {130, -4}, /* (177) geocoll_textz2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 */ {127, -4}, /* (178) geocoll_textzm ::= VANUATU_OPEN_BRACKET pointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ {127, -4}, /* (179) geocoll_textzm ::= VANUATU_OPEN_BRACKET linestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ {127, -4}, /* (180) geocoll_textzm ::= VANUATU_OPEN_BRACKET polygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ {127, -4}, /* (181) geocoll_textzm ::= VANUATU_OPEN_BRACKET multipointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ {127, -4}, /* (182) geocoll_textzm ::= VANUATU_OPEN_BRACKET multilinestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ {127, -4}, /* (183) geocoll_textzm ::= VANUATU_OPEN_BRACKET multipolygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ {127, -5}, /* (184) geocoll_textzm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ {131, 0}, /* (185) geocoll_textzm2 ::= */ {131, -3}, /* (186) geocoll_textzm2 ::= VANUATU_COMMA pointzm geocoll_textzm2 */ {131, -3}, /* (187) geocoll_textzm2 ::= VANUATU_COMMA linestringzm geocoll_textzm2 */ {131, -3}, /* (188) geocoll_textzm2 ::= VANUATU_COMMA polygonzm geocoll_textzm2 */ {131, -3}, /* (189) geocoll_textzm2 ::= VANUATU_COMMA multipointzm geocoll_textzm2 */ {131, -3}, /* (190) geocoll_textzm2 ::= VANUATU_COMMA multilinestringzm geocoll_textzm2 */ {131, -3}, /* (191) geocoll_textzm2 ::= VANUATU_COMMA multipolygonzm geocoll_textzm2 */ {131, -4}, /* (192) geocoll_textzm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 */ {35, -1}, /* (193) main ::= in */ {36, 0}, /* (194) in ::= */ {36, -3}, /* (195) in ::= in state VANUATU_NEWLINE */ {37, -1}, /* (196) state ::= program */ {38, -1}, /* (197) program ::= geo_text */ {38, -1}, /* (198) program ::= geo_textz */ {38, -1}, /* (199) program ::= geo_textm */ {38, -1}, /* (200) program ::= geo_textzm */ }; static void yy_accept (yyParser *); /* Forward Declaration */ /* ** Perform a reduce action and the shift that must immediately ** follow the reduce. ** ** The yyLookahead and yyLookaheadToken parameters provide reduce actions ** access to the lookahead token (if any). The yyLookahead will be YYNOCODE ** if the lookahead token has already been consumed. As this procedure is ** only called from one place, optimizing compilers will in-line it, which ** means that the extra parameters have no performance impact. */ static void yy_reduce (yyParser * yypParser, /* The parser */ unsigned int yyruleno, /* Number of the rule by which to reduce */ int yyLookahead, /* Lookahead token, or YYNOCODE if none */ ParseTOKENTYPE yyLookaheadToken /* Value of the lookahead token */ ) { int yygoto; /* The next state */ int yyact; /* The next action */ yyStackEntry *yymsp; /* The top of the parser's stack */ int yysize; /* Amount to pop the stack */ ParseARG_FETCH; (void) yyLookahead; (void) yyLookaheadToken; yymsp = yypParser->yytos; #ifndef NDEBUG if (yyTraceFILE && yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0]))) { yysize = yyRuleInfo[yyruleno].nrhs; if (yysize) { fprintf (yyTraceFILE, "%sReduce %d [%s], go to state %d.\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno], yymsp[yysize].stateno); } else { fprintf (yyTraceFILE, "%sReduce %d [%s].\n", yyTracePrompt, yyruleno, yyRuleName[yyruleno]); } } #endif /* NDEBUG */ /* Check that the stack is large enough to grow by a single entry ** if the RHS of the rule is empty. This ensures that there is room ** enough on the stack to push the LHS value */ if (yyRuleInfo[yyruleno].nrhs == 0) { #ifdef YYTRACKMAXSTACKDEPTH if ((int) (yypParser->yytos - yypParser->yystack) > yypParser->yyhwm) { yypParser->yyhwm++; assert (yypParser->yyhwm == (int) (yypParser->yytos - yypParser->yystack)); } #endif #if YYSTACKDEPTH>0 if (yypParser->yytos >= yypParser->yystackEnd) { yyStackOverflow (yypParser); return; } #else if (yypParser->yytos >= &yypParser->yystack[yypParser->yystksz - 1]) { if (yyGrowStack (yypParser)) { yyStackOverflow (yypParser); return; } yymsp = yypParser->yytos; } #endif } switch (yyruleno) { /* Beginning here are the reduction cases. A typical example ** follows: ** case 0: ** #line <lineno> <grammarfile> ** { ... } // User supplied code ** #line <lineno> <thisfile> ** break; */ /********** Begin reduce actions **********************************************/ YYMINORTYPE yylhsminor; case 0: /* geo_text ::= point */ case 1: /* geo_text ::= linestring */ yytestcase (yyruleno == 1); case 2: /* geo_text ::= polygon */ yytestcase (yyruleno == 2); case 3: /* geo_text ::= multipoint */ yytestcase (yyruleno == 3); case 4: /* geo_text ::= multilinestring */ yytestcase (yyruleno == 4); case 5: /* geo_text ::= multipolygon */ yytestcase (yyruleno == 5); case 6: /* geo_text ::= geocoll */ yytestcase (yyruleno == 6); case 7: /* geo_textz ::= pointz */ yytestcase (yyruleno == 7); case 8: /* geo_textz ::= linestringz */ yytestcase (yyruleno == 8); case 9: /* geo_textz ::= polygonz */ yytestcase (yyruleno == 9); case 10: /* geo_textz ::= multipointz */ yytestcase (yyruleno == 10); case 11: /* geo_textz ::= multilinestringz */ yytestcase (yyruleno == 11); case 12: /* geo_textz ::= multipolygonz */ yytestcase (yyruleno == 12); case 13: /* geo_textz ::= geocollz */ yytestcase (yyruleno == 13); case 14: /* geo_textm ::= pointm */ yytestcase (yyruleno == 14); case 15: /* geo_textm ::= linestringm */ yytestcase (yyruleno == 15); case 16: /* geo_textm ::= polygonm */ yytestcase (yyruleno == 16); case 17: /* geo_textm ::= multipointm */ yytestcase (yyruleno == 17); case 18: /* geo_textm ::= multilinestringm */ yytestcase (yyruleno == 18); case 19: /* geo_textm ::= multipolygonm */ yytestcase (yyruleno == 19); case 20: /* geo_textm ::= geocollm */ yytestcase (yyruleno == 20); case 21: /* geo_textzm ::= pointzm */ yytestcase (yyruleno == 21); case 22: /* geo_textzm ::= linestringzm */ yytestcase (yyruleno == 22); case 23: /* geo_textzm ::= polygonzm */ yytestcase (yyruleno == 23); case 24: /* geo_textzm ::= multipointzm */ yytestcase (yyruleno == 24); case 25: /* geo_textzm ::= multilinestringzm */ yytestcase (yyruleno == 25); case 26: /* geo_textzm ::= multipolygonzm */ yytestcase (yyruleno == 26); case 27: /* geo_textzm ::= geocollzm */ yytestcase (yyruleno == 27); { p_data->result = yymsp[0].minor.yy0; } break; case 28: /* point ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy VANUATU_CLOSE_BRACKET */ { yymsp[-3].minor.yy0 = vanuatu_buildGeomFromPoint (p_data, (gaiaPointPtr) yymsp[-1]. minor.yy0); } break; case 29: /* pointm ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym VANUATU_CLOSE_BRACKET */ case 30: /* pointz ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 30); case 31: /* pointzm ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 31); { yymsp[-3].minor.yy0 = vanuatu_buildGeomFromPoint (p_data, (gaiaPointPtr) yymsp[-1]. minor.yy0); } break; case 32: /* point_brkt_coordxy ::= VANUATU_OPEN_BRACKET coord coord VANUATU_CLOSE_BRACKET */ { yymsp[-3].minor.yy0 = (void *) vanuatu_point_xy (p_data, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0); } break; case 33: /* point_brkt_coordxym ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ { yymsp[-4].minor.yy0 = (void *) vanuatu_point_xym (p_data, (double *) yymsp[-3].minor.yy0, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0); } break; case 34: /* point_brkt_coordxyz ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ { yymsp[-4].minor.yy0 = (void *) vanuatu_point_xyz (p_data, (double *) yymsp[-3].minor.yy0, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0); } break; case 35: /* point_brkt_coordxyzm ::= VANUATU_OPEN_BRACKET coord coord coord coord VANUATU_CLOSE_BRACKET */ { yymsp[-5].minor.yy0 = (void *) vanuatu_point_xyzm (p_data, (double *) yymsp[-4].minor.yy0, (double *) yymsp[-3].minor.yy0, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0); } break; case 36: /* point_coordxy ::= coord coord */ { yylhsminor.yy0 = (void *) vanuatu_point_xy (p_data, (double *) yymsp[-1].minor.yy0, (double *) yymsp[0].minor.yy0); } yymsp[-1].minor.yy0 = yylhsminor.yy0; break; case 37: /* point_coordxym ::= coord coord coord */ { yylhsminor.yy0 = (void *) vanuatu_point_xym (p_data, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0, (double *) yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 38: /* point_coordxyz ::= coord coord coord */ { yylhsminor.yy0 = (void *) vanuatu_point_xyz (p_data, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0, (double *) yymsp[0].minor.yy0); } yymsp[-2].minor.yy0 = yylhsminor.yy0; break; case 39: /* point_coordxyzm ::= coord coord coord coord */ { yylhsminor.yy0 = (void *) vanuatu_point_xyzm (p_data, (double *) yymsp[-3].minor.yy0, (double *) yymsp[-2].minor.yy0, (double *) yymsp[-1].minor.yy0, (double *) yymsp[0].minor.yy0); } yymsp[-3].minor.yy0 = yylhsminor.yy0; break; case 40: /* coord ::= VANUATU_NUM */ { yylhsminor.yy0 = yymsp[0].minor.yy0; } yymsp[0].minor.yy0 = yylhsminor.yy0; break; case 41: /* extra_brkt_pointsxy ::= */ case 43: /* extra_brkt_pointsxym ::= */ yytestcase (yyruleno == 43); case 45: /* extra_brkt_pointsxyz ::= */ yytestcase (yyruleno == 45); case 47: /* extra_brkt_pointsxyzm ::= */ yytestcase (yyruleno == 47); case 49: /* extra_pointsxy ::= */ yytestcase (yyruleno == 49); case 51: /* extra_pointsxym ::= */ yytestcase (yyruleno == 51); case 53: /* extra_pointsxyz ::= */ yytestcase (yyruleno == 53); case 55: /* extra_pointsxyzm ::= */ yytestcase (yyruleno == 55); case 74: /* extra_rings ::= */ yytestcase (yyruleno == 74); case 77: /* extra_ringsm ::= */ yytestcase (yyruleno == 77); case 80: /* extra_ringsz ::= */ yytestcase (yyruleno == 80); case 83: /* extra_ringszm ::= */ yytestcase (yyruleno == 83); case 102: /* multilinestring_text2 ::= */ yytestcase (yyruleno == 102); case 105: /* multilinestring_textm2 ::= */ yytestcase (yyruleno == 105); case 108: /* multilinestring_textz2 ::= */ yytestcase (yyruleno == 108); case 111: /* multilinestring_textzm2 ::= */ yytestcase (yyruleno == 111); case 118: /* multipolygon_text2 ::= */ yytestcase (yyruleno == 118); case 121: /* multipolygon_textm2 ::= */ yytestcase (yyruleno == 121); case 124: /* multipolygon_textz2 ::= */ yytestcase (yyruleno == 124); case 127: /* multipolygon_textzm2 ::= */ yytestcase (yyruleno == 127); case 140: /* geocoll_text2 ::= */ yytestcase (yyruleno == 140); case 155: /* geocoll_textm2 ::= */ yytestcase (yyruleno == 155); case 170: /* geocoll_textz2 ::= */ yytestcase (yyruleno == 170); case 185: /* geocoll_textzm2 ::= */ yytestcase (yyruleno == 185); { yymsp[1].minor.yy0 = NULL; } break; case 42: /* extra_brkt_pointsxy ::= VANUATU_COMMA point_brkt_coordxy extra_brkt_pointsxy */ case 44: /* extra_brkt_pointsxym ::= VANUATU_COMMA point_brkt_coordxym extra_brkt_pointsxym */ yytestcase (yyruleno == 44); case 46: /* extra_brkt_pointsxyz ::= VANUATU_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ yytestcase (yyruleno == 46); case 48: /* extra_brkt_pointsxyzm ::= VANUATU_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ yytestcase (yyruleno == 48); case 50: /* extra_pointsxy ::= VANUATU_COMMA point_coordxy extra_pointsxy */ yytestcase (yyruleno == 50); case 52: /* extra_pointsxym ::= VANUATU_COMMA point_coordxym extra_pointsxym */ yytestcase (yyruleno == 52); case 54: /* extra_pointsxyz ::= VANUATU_COMMA point_coordxyz extra_pointsxyz */ yytestcase (yyruleno == 54); case 56: /* extra_pointsxyzm ::= VANUATU_COMMA point_coordxyzm extra_pointsxyzm */ yytestcase (yyruleno == 56); { ((gaiaPointPtr) yymsp[-1].minor.yy0)->Next = (gaiaPointPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 57: /* linestring ::= VANUATU_LINESTRING linestring_text */ case 58: /* linestringm ::= VANUATU_LINESTRING_M linestring_textm */ yytestcase (yyruleno == 58); case 59: /* linestringz ::= VANUATU_LINESTRING_Z linestring_textz */ yytestcase (yyruleno == 59); case 60: /* linestringzm ::= VANUATU_LINESTRING_ZM linestring_textzm */ yytestcase (yyruleno == 60); { yymsp[-1].minor.yy0 = vanuatu_buildGeomFromLinestring (p_data, (gaiaLinestringPtr) yymsp[0].minor.yy0); } break; case 61: /* linestring_text ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) vanuatu_linestring_xy (p_data, (gaiaPointPtr) yymsp[-4].minor.yy0); } break; case 62: /* linestring_textm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) vanuatu_linestring_xym (p_data, (gaiaPointPtr) yymsp[-4].minor.yy0); } break; case 63: /* linestring_textz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) vanuatu_linestring_xyz (p_data, (gaiaPointPtr) yymsp[-4].minor.yy0); } break; case 64: /* linestring_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; yymsp[-5].minor.yy0 = (void *) vanuatu_linestring_xyzm (p_data, (gaiaPointPtr) yymsp[-4].minor.yy0); } break; case 65: /* polygon ::= VANUATU_POLYGON polygon_text */ case 66: /* polygonm ::= VANUATU_POLYGON_M polygon_textm */ yytestcase (yyruleno == 66); case 67: /* polygonz ::= VANUATU_POLYGON_Z polygon_textz */ yytestcase (yyruleno == 67); case 68: /* polygonzm ::= VANUATU_POLYGON_ZM polygon_textzm */ yytestcase (yyruleno == 68); { yymsp[-1].minor.yy0 = vanuatu_buildGeomFromPolygon (p_data, (gaiaPolygonPtr) yymsp[0]. minor.yy0); } break; case 69: /* polygon_text ::= VANUATU_OPEN_BRACKET ring extra_rings VANUATU_CLOSE_BRACKET */ { ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = (gaiaRingPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_polygon_xy (p_data, (gaiaRingPtr) yymsp[-2]. minor.yy0); } break; case 70: /* polygon_textm ::= VANUATU_OPEN_BRACKET ringm extra_ringsm VANUATU_CLOSE_BRACKET */ { ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = (gaiaRingPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_polygon_xym (p_data, (gaiaRingPtr) yymsp[-2]. minor.yy0); } break; case 71: /* polygon_textz ::= VANUATU_OPEN_BRACKET ringz extra_ringsz VANUATU_CLOSE_BRACKET */ { ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = (gaiaRingPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_polygon_xyz (p_data, (gaiaRingPtr) yymsp[-2]. minor.yy0); } break; case 72: /* polygon_textzm ::= VANUATU_OPEN_BRACKET ringzm extra_ringszm VANUATU_CLOSE_BRACKET */ { ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = (gaiaRingPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_polygon_xyzm (p_data, (gaiaRingPtr) yymsp[-2]. minor.yy0); } break; case 73: /* ring ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = (gaiaPointPtr) yymsp[-6].minor.yy0; ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = (gaiaPointPtr) yymsp[-4].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) vanuatu_ring_xy (p_data, (gaiaPointPtr) yymsp[-8].minor.yy0); } break; case 75: /* extra_rings ::= VANUATU_COMMA ring extra_rings */ case 78: /* extra_ringsm ::= VANUATU_COMMA ringm extra_ringsm */ yytestcase (yyruleno == 78); case 81: /* extra_ringsz ::= VANUATU_COMMA ringz extra_ringsz */ yytestcase (yyruleno == 81); case 84: /* extra_ringszm ::= VANUATU_COMMA ringzm extra_ringszm */ yytestcase (yyruleno == 84); { ((gaiaRingPtr) yymsp[-1].minor.yy0)->Next = (gaiaRingPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 76: /* ringm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = (gaiaPointPtr) yymsp[-6].minor.yy0; ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = (gaiaPointPtr) yymsp[-4].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) vanuatu_ring_xym (p_data, (gaiaPointPtr) yymsp[-8]. minor.yy0); } break; case 79: /* ringz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = (gaiaPointPtr) yymsp[-6].minor.yy0; ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = (gaiaPointPtr) yymsp[-4].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) vanuatu_ring_xyz (p_data, (gaiaPointPtr) yymsp[-8]. minor.yy0); } break; case 82: /* ringzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ { ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = (gaiaPointPtr) yymsp[-6].minor.yy0; ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = (gaiaPointPtr) yymsp[-4].minor.yy0; ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = (gaiaPointPtr) yymsp[-2].minor.yy0; ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-9].minor.yy0 = (void *) vanuatu_ring_xyzm (p_data, (gaiaPointPtr) yymsp[-8]. minor.yy0); } break; case 85: /* multipoint ::= VANUATU_MULTIPOINT multipoint_text */ case 86: /* multipointm ::= VANUATU_MULTIPOINT_M multipoint_textm */ yytestcase (yyruleno == 86); case 87: /* multipointz ::= VANUATU_MULTIPOINT_Z multipoint_textz */ yytestcase (yyruleno == 87); case 88: /* multipointzm ::= VANUATU_MULTIPOINT_ZM multipoint_textzm */ yytestcase (yyruleno == 88); case 97: /* multilinestring ::= VANUATU_MULTILINESTRING multilinestring_text */ yytestcase (yyruleno == 97); case 98: /* multilinestringm ::= VANUATU_MULTILINESTRING_M multilinestring_textm */ yytestcase (yyruleno == 98); case 99: /* multilinestringz ::= VANUATU_MULTILINESTRING_Z multilinestring_textz */ yytestcase (yyruleno == 99); case 100: /* multilinestringzm ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm */ yytestcase (yyruleno == 100); case 113: /* multipolygon ::= VANUATU_MULTIPOLYGON multipolygon_text */ yytestcase (yyruleno == 113); case 114: /* multipolygonm ::= VANUATU_MULTIPOLYGON_M multipolygon_textm */ yytestcase (yyruleno == 114); case 115: /* multipolygonz ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz */ yytestcase (yyruleno == 115); case 116: /* multipolygonzm ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm */ yytestcase (yyruleno == 116); case 129: /* geocoll ::= VANUATU_GEOMETRYCOLLECTION geocoll_text */ yytestcase (yyruleno == 129); case 130: /* geocollm ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm */ yytestcase (yyruleno == 130); case 131: /* geocollz ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz */ yytestcase (yyruleno == 131); case 132: /* geocollzm ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm */ yytestcase (yyruleno == 132); { yymsp[-1].minor.yy0 = yymsp[0].minor.yy0; } break; case 89: /* multipoint_text ::= VANUATU_OPEN_BRACKET point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ case 93: /* multipoint_text ::= VANUATU_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 93); { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipoint_xy (p_data, (gaiaPointPtr) yymsp[-2].minor.yy0); } break; case 90: /* multipoint_textm ::= VANUATU_OPEN_BRACKET point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ case 94: /* multipoint_textm ::= VANUATU_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 94); { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipoint_xym (p_data, (gaiaPointPtr) yymsp[-2].minor.yy0); } break; case 91: /* multipoint_textz ::= VANUATU_OPEN_BRACKET point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ case 95: /* multipoint_textz ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 95); { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipoint_xyz (p_data, (gaiaPointPtr) yymsp[-2].minor.yy0); } break; case 92: /* multipoint_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ case 96: /* multipoint_textzm ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 96); { ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = (gaiaPointPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipoint_xyzm (p_data, (gaiaPointPtr) yymsp[-2].minor.yy0); } break; case 101: /* multilinestring_text ::= VANUATU_OPEN_BRACKET linestring_text multilinestring_text2 VANUATU_CLOSE_BRACKET */ { ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multilinestring_xy (p_data, (gaiaLinestringPtr) yymsp[-2].minor.yy0); } break; case 103: /* multilinestring_text2 ::= VANUATU_COMMA linestring_text multilinestring_text2 */ case 106: /* multilinestring_textm2 ::= VANUATU_COMMA linestring_textm multilinestring_textm2 */ yytestcase (yyruleno == 106); case 109: /* multilinestring_textz2 ::= VANUATU_COMMA linestring_textz multilinestring_textz2 */ yytestcase (yyruleno == 109); case 112: /* multilinestring_textzm2 ::= VANUATU_COMMA linestring_textzm multilinestring_textzm2 */ yytestcase (yyruleno == 112); { ((gaiaLinestringPtr) yymsp[-1].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 104: /* multilinestring_textm ::= VANUATU_OPEN_BRACKET linestring_textm multilinestring_textm2 VANUATU_CLOSE_BRACKET */ { ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multilinestring_xym (p_data, (gaiaLinestringPtr) yymsp[-2].minor.yy0); } break; case 107: /* multilinestring_textz ::= VANUATU_OPEN_BRACKET linestring_textz multilinestring_textz2 VANUATU_CLOSE_BRACKET */ { ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multilinestring_xyz (p_data, (gaiaLinestringPtr) yymsp[-2].minor.yy0); } break; case 110: /* multilinestring_textzm ::= VANUATU_OPEN_BRACKET linestring_textzm multilinestring_textzm2 VANUATU_CLOSE_BRACKET */ { ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multilinestring_xyzm (p_data, (gaiaLinestringPtr) yymsp[-2].minor.yy0); } break; case 117: /* multipolygon_text ::= VANUATU_OPEN_BRACKET polygon_text multipolygon_text2 VANUATU_CLOSE_BRACKET */ { ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipolygon_xy (p_data, (gaiaPolygonPtr) yymsp[-2].minor.yy0); } break; case 119: /* multipolygon_text2 ::= VANUATU_COMMA polygon_text multipolygon_text2 */ case 122: /* multipolygon_textm2 ::= VANUATU_COMMA polygon_textm multipolygon_textm2 */ yytestcase (yyruleno == 122); case 125: /* multipolygon_textz2 ::= VANUATU_COMMA polygon_textz multipolygon_textz2 */ yytestcase (yyruleno == 125); case 128: /* multipolygon_textzm2 ::= VANUATU_COMMA polygon_textzm multipolygon_textzm2 */ yytestcase (yyruleno == 128); { ((gaiaPolygonPtr) yymsp[-1].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 120: /* multipolygon_textm ::= VANUATU_OPEN_BRACKET polygon_textm multipolygon_textm2 VANUATU_CLOSE_BRACKET */ { ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipolygon_xym (p_data, (gaiaPolygonPtr) yymsp[-2].minor.yy0); } break; case 123: /* multipolygon_textz ::= VANUATU_OPEN_BRACKET polygon_textz multipolygon_textz2 VANUATU_CLOSE_BRACKET */ { ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipolygon_xyz (p_data, (gaiaPolygonPtr) yymsp[-2].minor.yy0); } break; case 126: /* multipolygon_textzm ::= VANUATU_OPEN_BRACKET polygon_textzm multipolygon_textzm2 VANUATU_CLOSE_BRACKET */ { ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_multipolygon_xyzm (p_data, (gaiaPolygonPtr) yymsp[-2].minor.yy0); } break; case 133: /* geocoll_text ::= VANUATU_OPEN_BRACKET point geocoll_text2 VANUATU_CLOSE_BRACKET */ case 134: /* geocoll_text ::= VANUATU_OPEN_BRACKET linestring geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 134); case 135: /* geocoll_text ::= VANUATU_OPEN_BRACKET polygon geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 135); case 136: /* geocoll_text ::= VANUATU_OPEN_BRACKET multipoint geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 136); case 137: /* geocoll_text ::= VANUATU_OPEN_BRACKET multilinestring geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 137); case 138: /* geocoll_text ::= VANUATU_OPEN_BRACKET multipolygon geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 138); { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_geomColl_xy (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; case 139: /* geocoll_text ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 VANUATU_CLOSE_BRACKET */ { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) vanuatu_geomColl_xy (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; case 141: /* geocoll_text2 ::= VANUATU_COMMA point geocoll_text2 */ case 142: /* geocoll_text2 ::= VANUATU_COMMA linestring geocoll_text2 */ yytestcase (yyruleno == 142); case 143: /* geocoll_text2 ::= VANUATU_COMMA polygon geocoll_text2 */ yytestcase (yyruleno == 143); case 144: /* geocoll_text2 ::= VANUATU_COMMA multipoint geocoll_text2 */ yytestcase (yyruleno == 144); case 145: /* geocoll_text2 ::= VANUATU_COMMA multilinestring geocoll_text2 */ yytestcase (yyruleno == 145); case 146: /* geocoll_text2 ::= VANUATU_COMMA multipolygon geocoll_text2 */ yytestcase (yyruleno == 146); case 156: /* geocoll_textm2 ::= VANUATU_COMMA pointm geocoll_textm2 */ yytestcase (yyruleno == 156); case 157: /* geocoll_textm2 ::= VANUATU_COMMA linestringm geocoll_textm2 */ yytestcase (yyruleno == 157); case 158: /* geocoll_textm2 ::= VANUATU_COMMA polygonm geocoll_textm2 */ yytestcase (yyruleno == 158); case 159: /* geocoll_textm2 ::= VANUATU_COMMA multipointm geocoll_textm2 */ yytestcase (yyruleno == 159); case 160: /* geocoll_textm2 ::= VANUATU_COMMA multilinestringm geocoll_textm2 */ yytestcase (yyruleno == 160); case 161: /* geocoll_textm2 ::= VANUATU_COMMA multipolygonm geocoll_textm2 */ yytestcase (yyruleno == 161); case 171: /* geocoll_textz2 ::= VANUATU_COMMA pointz geocoll_textz2 */ yytestcase (yyruleno == 171); case 172: /* geocoll_textz2 ::= VANUATU_COMMA linestringz geocoll_textz2 */ yytestcase (yyruleno == 172); case 173: /* geocoll_textz2 ::= VANUATU_COMMA polygonz geocoll_textz2 */ yytestcase (yyruleno == 173); case 174: /* geocoll_textz2 ::= VANUATU_COMMA multipointz geocoll_textz2 */ yytestcase (yyruleno == 174); case 175: /* geocoll_textz2 ::= VANUATU_COMMA multilinestringz geocoll_textz2 */ yytestcase (yyruleno == 175); case 176: /* geocoll_textz2 ::= VANUATU_COMMA multipolygonz geocoll_textz2 */ yytestcase (yyruleno == 176); case 186: /* geocoll_textzm2 ::= VANUATU_COMMA pointzm geocoll_textzm2 */ yytestcase (yyruleno == 186); case 187: /* geocoll_textzm2 ::= VANUATU_COMMA linestringzm geocoll_textzm2 */ yytestcase (yyruleno == 187); case 188: /* geocoll_textzm2 ::= VANUATU_COMMA polygonzm geocoll_textzm2 */ yytestcase (yyruleno == 188); case 189: /* geocoll_textzm2 ::= VANUATU_COMMA multipointzm geocoll_textzm2 */ yytestcase (yyruleno == 189); case 190: /* geocoll_textzm2 ::= VANUATU_COMMA multilinestringzm geocoll_textzm2 */ yytestcase (yyruleno == 190); case 191: /* geocoll_textzm2 ::= VANUATU_COMMA multipolygonzm geocoll_textzm2 */ yytestcase (yyruleno == 191); { ((gaiaGeomCollPtr) yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[0].minor.yy0; yymsp[-2].minor.yy0 = yymsp[-1].minor.yy0; } break; case 147: /* geocoll_text2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ case 162: /* geocoll_textm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ yytestcase (yyruleno == 162); case 177: /* geocoll_textz2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 */ yytestcase (yyruleno == 177); case 192: /* geocoll_textzm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 */ yytestcase (yyruleno == 192); { ((gaiaGeomCollPtr) yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[0].minor.yy0; yymsp[-3].minor.yy0 = yymsp[-1].minor.yy0; } break; case 148: /* geocoll_textm ::= VANUATU_OPEN_BRACKET pointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ case 149: /* geocoll_textm ::= VANUATU_OPEN_BRACKET linestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 149); case 150: /* geocoll_textm ::= VANUATU_OPEN_BRACKET polygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 150); case 151: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multipointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 151); case 152: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multilinestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 152); case 153: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multipolygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 153); { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_geomColl_xym (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; case 154: /* geocoll_textm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 VANUATU_CLOSE_BRACKET */ { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) vanuatu_geomColl_xym (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; case 163: /* geocoll_textz ::= VANUATU_OPEN_BRACKET pointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ case 164: /* geocoll_textz ::= VANUATU_OPEN_BRACKET linestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 164); case 165: /* geocoll_textz ::= VANUATU_OPEN_BRACKET polygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 165); case 166: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multipointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 166); case 167: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multilinestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 167); case 168: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multipolygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 168); { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_geomColl_xyz (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; case 169: /* geocoll_textz ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 VANUATU_CLOSE_BRACKET */ { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) vanuatu_geomColl_xyz (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; case 178: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET pointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ case 179: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET linestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 179); case 180: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET polygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 180); case 181: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multipointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 181); case 182: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multilinestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 182); case 183: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multipolygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase (yyruleno == 183); { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-3].minor.yy0 = (void *) vanuatu_geomColl_xyzm (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; case 184: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ { ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr) yymsp[-1].minor.yy0; yymsp[-4].minor.yy0 = (void *) vanuatu_geomColl_xyzm (p_data, (gaiaGeomCollPtr) yymsp[-2].minor.yy0); } break; default: /* (193) main ::= in */ yytestcase (yyruleno == 193); /* (194) in ::= */ yytestcase (yyruleno == 194); /* (195) in ::= in state VANUATU_NEWLINE */ yytestcase (yyruleno == 195); /* (196) state ::= program (OPTIMIZED OUT) */ assert (yyruleno != 196); /* (197) program ::= geo_text (OPTIMIZED OUT) */ assert (yyruleno != 197); /* (198) program ::= geo_textz (OPTIMIZED OUT) */ assert (yyruleno != 198); /* (199) program ::= geo_textm (OPTIMIZED OUT) */ assert (yyruleno != 199); /* (200) program ::= geo_textzm (OPTIMIZED OUT) */ assert (yyruleno != 200); break; /********** End reduce actions ************************************************/ }; assert (yyruleno < sizeof (yyRuleInfo) / sizeof (yyRuleInfo[0])); yygoto = yyRuleInfo[yyruleno].lhs; yysize = yyRuleInfo[yyruleno].nrhs; yyact = yy_find_reduce_action (yymsp[yysize].stateno, (YYCODETYPE) yygoto); /* There are no SHIFTREDUCE actions on nonterminals because the table ** generator has simplified them to pure REDUCE actions. */ assert (!(yyact > YY_MAX_SHIFT && yyact <= YY_MAX_SHIFTREDUCE)); /* It is not possible for a REDUCE to be followed by an error */ assert (yyact != YY_ERROR_ACTION); yymsp += yysize + 1; yypParser->yytos = yymsp; yymsp->stateno = (YYACTIONTYPE) yyact; yymsp->major = (YYCODETYPE) yygoto; yyTraceShift (yypParser, yyact, "... then shift"); } /* ** The following code executes when the parse fails */ #ifndef YYNOERRORRECOVERY static void yy_parse_failed (yyParser * yypParser /* The parser */ ) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt); } #endif while (yypParser->yytos > yypParser->yystack) yy_pop_parser_stack (yypParser); /* Here code is inserted which will be executed whenever the ** parser fails */ /************ Begin %parse_failure code ***************************************/ /************ End %parse_failure code *****************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } #endif /* YYNOERRORRECOVERY */ /* ** The following code executes when a syntax error first occurs. */ static void yy_syntax_error (yyParser * yypParser, /* The parser */ int yymajor, /* The major type of the error token */ ParseTOKENTYPE yyminor /* The minor type of the error token */ ) { ParseARG_FETCH; #define TOKEN yyminor /************ Begin %syntax_error code ****************************************/ /* ** Sandro Furieri 2010 Apr 4 ** when the LEMON parser encounters an error ** then this global variable is set */ p_data->vanuatu_parse_error = 1; p_data->result = NULL; /************ End %syntax_error code ******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* ** The following is executed when the parser accepts */ static void yy_accept (yyParser * yypParser /* The parser */ ) { ParseARG_FETCH; #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt); } #endif #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif assert (yypParser->yytos == yypParser->yystack); /* Here code is inserted which will be executed whenever the ** parser accepts */ /*********** Begin %parse_accept code *****************************************/ /*********** End %parse_accept code *******************************************/ ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ } /* The main parser program. ** The first argument is a pointer to a structure obtained from ** "ParseAlloc" which describes the current state of the parser. ** The second argument is the major token number. The third is ** the minor token. The fourth optional argument is whatever the ................................................................................ ** <li> The minor token number. ** <li> An option argument of a grammar-specified type. ** </ul> ** ** Outputs: ** None. */ void Parse (void *yyp, /* The parser */ int yymajor, /* The major token code number */ ParseTOKENTYPE yyminor /* The value for the token */ ParseARG_PDECL /* Optional %extra_argument parameter */ ) { YYMINORTYPE yyminorunion; unsigned int yyact; /* The parser action. */ #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) int yyendofinput; /* True if we are at the end of input */ #endif #ifdef YYERRORSYMBOL int yyerrorhit = 0; /* True if yymajor has invoked an error */ #endif yyParser *yypParser; /* The parser */ yypParser = (yyParser *) yyp; assert (yypParser->yytos != 0); #if !defined(YYERRORSYMBOL) && !defined(YYNOERRORRECOVERY) yyendofinput = (yymajor == 0); #endif ParseARG_STORE; #ifndef NDEBUG if (yyTraceFILE) { int stateno = yypParser->yytos->stateno; if (stateno < YY_MIN_REDUCE) { fprintf (yyTraceFILE, "%sInput '%s' in state %d\n", yyTracePrompt, yyTokenName[yymajor], stateno); } else { fprintf (yyTraceFILE, "%sInput '%s' with pending reduce %d\n", yyTracePrompt, yyTokenName[yymajor], stateno - YY_MIN_REDUCE); } } #endif do { yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor); if (yyact >= YY_MIN_REDUCE) { yy_reduce (yypParser, yyact - YY_MIN_REDUCE, yymajor, yyminor); } else if (yyact <= YY_MAX_SHIFTREDUCE) { yy_shift (yypParser, yyact, yymajor, yyminor); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt--; #endif yymajor = YYNOCODE; } else if (yyact == YY_ACCEPT_ACTION) { yypParser->yytos--; yy_accept (yypParser); return; } else { assert (yyact == YY_ERROR_ACTION); yyminorunion.yy0 = yyminor; #ifdef YYERRORSYMBOL int yymx; #endif #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt); } #endif #ifdef YYERRORSYMBOL /* A syntax error has occurred. ** The response to an error depends upon whether or not the ** grammar defines an error token "ERROR". ** ** This is what we do if the grammar does define ERROR: ** ** * Call the %syntax_error function. ** ** * Begin popping the stack until we enter a state where ** it is legal to shift the error symbol, then shift ** the error symbol. ** ** * Set the error count to three. ** ** * Begin accepting and shifting new tokens. No new error ** processing will occur until three tokens have been ** shifted successfully. ** */ if (yypParser->yyerrcnt < 0) { yy_syntax_error (yypParser, yymajor, yyminor); } yymx = yypParser->yytos->major; if (yymx == YYERRORSYMBOL || yyerrorhit) { #ifndef NDEBUG if (yyTraceFILE) { fprintf (yyTraceFILE, "%sDiscard input token %s\n", yyTracePrompt, yyTokenName[yymajor]); } #endif yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yymajor = YYNOCODE; } else { while (yypParser->yytos >= yypParser->yystack && yymx != YYERRORSYMBOL && (yyact = yy_find_reduce_action (yypParser-> yytos->stateno, YYERRORSYMBOL)) >= YY_MIN_REDUCE) { yy_pop_parser_stack (yypParser); } if (yypParser->yytos < yypParser->yystack || yymajor == 0) { yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yy_parse_failed (yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif yymajor = YYNOCODE; } else if (yymx != YYERRORSYMBOL) { yy_shift (yypParser, yyact, YYERRORSYMBOL, yyminor); } } yypParser->yyerrcnt = 3; yyerrorhit = 1; #elif defined(YYNOERRORRECOVERY) /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to ** do any kind of error recovery. Instead, simply invoke the syntax ** error routine and continue going as if nothing had happened. ** ** Applications can set this macro (for example inside %include) if ** they intend to abandon the parse upon the first syntax error seen. */ yy_syntax_error (yypParser, yymajor, yyminor); yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); yymajor = YYNOCODE; #else /* YYERRORSYMBOL is not defined */ /* This is what we do if the grammar does not define ERROR: ** ** * Report an error message, and throw away the input token. ** ** * If the input token is $, then fail the parse. ** ** As before, subsequent error messages are suppressed until ** three input tokens have been successfully shifted. */ if (yypParser->yyerrcnt <= 0) { yy_syntax_error (yypParser, yymajor, yyminor); } yypParser->yyerrcnt = 3; yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); if (yyendofinput) { yy_parse_failed (yypParser); #ifndef YYNOERRORRECOVERY yypParser->yyerrcnt = -1; #endif } yymajor = YYNOCODE; #endif } } while (yymajor != YYNOCODE && yypParser->yytos > yypParser->yystack); #ifndef NDEBUG if (yyTraceFILE) { yyStackEntry *i; char cDiv = '['; fprintf (yyTraceFILE, "%sReturn. Stack=", yyTracePrompt); for (i = &yypParser->yystack[1]; i <= yypParser->yytos; i++) { fprintf (yyTraceFILE, "%c%s", cDiv, yyTokenName[i->major]); cDiv = ' '; } fprintf (yyTraceFILE, "]\n"); } #endif return; } |
Changes to src/headers/spatialite.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* spatialite.h -- Gaia spatial support for SQLite version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* spatialite.h -- Gaia spatial support for SQLite version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/headers/spatialite/control_points.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* control_points.h -- Gaia implementation of RMSE and TPS Control Points version 4.3, 2015 May 5 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* control_points.h -- Gaia implementation of RMSE and TPS Control Points version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/headers/spatialite/debug.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* debug.h -- abstract defs for standard output functions version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2012-2015 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* debug.h -- abstract defs for standard output functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2012-2020 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gaia_network.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaia_network.h -- Gaia common support for Topology-Network version 4.3, 2015 August 11 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaia_network.h -- Gaia common support for Topology-Network version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/headers/spatialite/gaia_topology.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaia_topology.h -- Gaia common support for Topology version 4.3, 2015 July 15 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaia_topology.h -- Gaia common support for Topology version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/headers/spatialite/gaiaaux.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaiaaux.h -- Gaia common utility functions version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaiaaux.h -- Gaia common utility functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/headers/spatialite/gaiaexif.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaiaexif.h -- Gaia common EXIF Metadata reading functions version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaiaexif.h -- Gaia common EXIF Metadata reading functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/headers/spatialite/gaiageo.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaiageo.h -- Gaia common support for geometries version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Klaus Foerster klaus.foerster@svg.cc Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaiageo.h -- Gaia common support for geometries version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Klaus Foerster klaus.foerster@svg.cc Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gaiamatrix.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaiamatrix.h -- Gaia common utility functions: affine trasform Matrix version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gaiamatrix.h -- Gaia common utility functions: affine trasform Matrix version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/headers/spatialite/geojson.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* geojson.h -- Gaia common support for the GeoJSON parser version 5.0, 2018 Novenmber 26 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2018 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* geojson.h -- Gaia common support for the GeoJSON parser version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2018-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/geopackage.h.
1
2
3
4
5
6
7
8
9
10
11
12
..
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/* GeoPackage extensions for SpatiaLite / SQLite version 4.3, 2015 June 29 Version: MPL 1.1/GPL 2.0/LGPL 2.1 The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is GeoPackage Extensions The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) Portions created by the Initial Developer are Copyright (C) 2012-2015 the Initial Developer. All Rights Reserved. Contributor(s): Sandro Furieri (a.furieri@lqt.it) Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/* GeoPackage extensions for SpatiaLite / SQLite version 5.0, 2020 August 1 Version: MPL 1.1/GPL 2.0/LGPL 2.1 The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is GeoPackage Extensions The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) Portions created by the Initial Developer are Copyright (C) 2012-2020 the Initial Developer. All Rights Reserved. Contributor(s): Sandro Furieri (a.furieri@lqt.it) Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gg_advanced.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_advanced.h -- Gaia common support for geometries: advanced version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_advanced.h -- Gaia common support for geometries: advanced version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gg_const.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_const.h -- Gaia common support for geometries: constants version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Klaus Foerster klaus.foerster@svg.cc Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_const.h -- Gaia common support for geometries: constants version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Klaus Foerster klaus.foerster@svg.cc Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gg_core.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_core.h -- Gaia common support for geometries: core functions version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_core.h -- Gaia common support for geometries: core functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gg_dxf.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_dxf.h -- Gaia common support for DXF files version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_dxf.h -- Gaia common support for DXF files version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/headers/spatialite/gg_dynamic.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_dynamic.h -- Gaia common support for geometries: DynamicLine functions version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_dynamic.h -- Gaia common support for geometries: DynamicLine functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gg_formats.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_formats.h -- Gaia common support for geometries: formats version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Klaus Foerster klaus.foerster@svg.cc Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_formats.h -- Gaia common support for geometries: formats version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Klaus Foerster klaus.foerster@svg.cc Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gg_mbr.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_mbr.h -- Gaia common support for geometries: MBR functions version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_mbr.h -- Gaia common support for geometries: MBR functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gg_sequence.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_sequence.h -- Gaia support for Spatialite's own Sequence version 4.4, 2016 August 12 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_sequence.h -- Gaia support for Spatialite's own Sequence version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gg_structs.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_structs.h -- Gaia common support for geometries: structures version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* gg_structs.h -- Gaia common support for geometries: structures version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/gg_wfs.h.
1 2 3 4 5 6 7 8 9 10 11 .. 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
/* gg_wfs.h -- Gaia common support for WFS version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ \note an eventual error message returned via err_msg requires to be deallocated by invoking free() \note the progress_callback function must have this signature: \b void \b myfunct(\b int \b count, \b void \b *ptr); \n and will cyclically report how many features have been processed since the initial call start. */ SPATIALITE_DECLARE int load_from_wfs_paged_ex(sqlite3 * sqlite, const char *wfs_version, const char *path_or_url, const char *alt_describe_uri, const char *layer_name, int swap_axes, const char *table, const char *pk_column_name, int spatial_index, int page_size, int *rows, char **err_msg, void (*progress_callback) (int, void *), void *callback_ptr); /** Creates a Catalog for some WFS service \param path_or_url pointer to some WFS-GetCapabilities XML Document (could be a pathname or an URL). \param err_msg on completion will contain an error message (if any) |
| | | > | | | | | | | | | | | | |
1 2 3 4 5 6 7 8 9 10 11 .. 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 |
/* gg_wfs.h -- Gaia common support for WFS version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ \note an eventual error message returned via err_msg requires to be deallocated by invoking free() \note the progress_callback function must have this signature: \b void \b myfunct(\b int \b count, \b void \b *ptr); \n and will cyclically report how many features have been processed since the initial call start. */ SPATIALITE_DECLARE int load_from_wfs_paged_ex (sqlite3 * sqlite, const char *wfs_version, const char *path_or_url, const char *alt_describe_uri, const char *layer_name, int swap_axes, const char *table, const char *pk_column_name, int spatial_index, int page_size, int *rows, char **err_msg, void (*progress_callback) (int, void *), void *callback_ptr); /** Creates a Catalog for some WFS service \param path_or_url pointer to some WFS-GetCapabilities XML Document (could be a pathname or an URL). \param err_msg on completion will contain an error message (if any) |
Changes to src/headers/spatialite/gg_xml.h.
1 2 3 4 5 6 7 8 9 10 11 .. 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 |
/* gg_xml.h -- Gaia common support for XML documents version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ \sa gaiaIsValidXmlBlob, gaiaIsSchemaValidatedXmlBlob, gaiaIsCompressedXmlBlob, gaiaIsIsoMetadataXmlBlob, gaiaIsSldSeVectorStyleXmlBlob, gaiaIsSldSeRasterXmlBlob, gaiaIsSvgXmlBlob, gaiaIsGpxXmlBlob, gaiaIsSldStyleXmlBlob */ GAIAGEO_DECLARE int gaiaIsMapConfigXmlBlob (const unsigned char *blob, int size); /** Checks if a valid XmlBLOB buffer does contain an SVG Symbol or not \param blob pointer to the XmlBLOB buffer. \param size XmlBLOB's size (in bytes). |
| | | |
1 2 3 4 5 6 7 8 9 10 11 .. 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 |
/* gg_xml.h -- Gaia common support for XML documents version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ \sa gaiaIsValidXmlBlob, gaiaIsSchemaValidatedXmlBlob, gaiaIsCompressedXmlBlob, gaiaIsIsoMetadataXmlBlob, gaiaIsSldSeVectorStyleXmlBlob, gaiaIsSldSeRasterXmlBlob, gaiaIsSvgXmlBlob, gaiaIsGpxXmlBlob, gaiaIsSldStyleXmlBlob */ GAIAGEO_DECLARE int gaiaIsMapConfigXmlBlob (const unsigned char *blob, int size); /** Checks if a valid XmlBLOB buffer does contain an SVG Symbol or not \param blob pointer to the XmlBLOB buffer. \param size XmlBLOB's size (in bytes). |
Changes to src/headers/spatialite/spatialite.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* spatialite.h -- Gaia support for SQLite extensions version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* spatialite.h -- Gaia support for SQLite extensions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/headers/spatialite/sqlite.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* sqlite.h -- supporting SQLite headers in a flexible way version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2013-2015 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* sqlite.h -- supporting SQLite headers in a flexible way version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2013-2020 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/headers/spatialite/stored_procedures.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* stored_procedues.h -- SQL Procedures and Stored Procedures functions version 4.5, 2017 October 22 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2017 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* stored_procedues.h -- SQL Procedures and Stored Procedures functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2017-20 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/headers/spatialite_private.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* spatialite.h -- Gaia spatial support for SQLite version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* spatialite.h -- Gaia spatial support for SQLite version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/md5/gaia_md5.c.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/* gaia_md5.c -- a thin wrapper built around the original MD5 implementation from Alexander Peslyak (released on the Public Domain) version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/* gaia_md5.c -- a thin wrapper built around the original MD5 implementation from Alexander Peslyak (released on the Public Domain) version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/shapefiles/shapefiles.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 ... 549 550 551 552 553 554 555 556 557 558 559 560 561 562 ... 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 .... 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 .... 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 .... 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 .... 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 .... 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 .... 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 .... 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 .... 7523 7524 7525 7526 7527 7528 7529 7530 7531 7532 7533 7534 7535 7536 7537 7538 7539 7540 7541 7542 7543 7544 7545 7546 7547 7548 7549 7550 7551 7552 7553 7554 7555 7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 7577 7578 7579 7580 7581 7582 7583 7584 7585 7586 7587 7588 7589 7590 7591 7592 7593 7594 7595 7596 7597 7598 7599 7600 7601 7602 7603 7604 7605 7606 7607 7608 7609 7610 7611 7612 7613 7614 7615 7616 7617 7618 7619 7620 7621 7622 7623 7624 7625 7626 7627 7628 7629 7630 7631 7632 7633 7634 7635 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 7662 7663 7664 7665 7666 7667 7668 7669 7670 7671 7672 7673 7674 7675 7676 7677 7678 7679 7680 7681 7682 7683 7684 7685 7686 7687 7688 7689 7690 7691 7692 7693 7694 7695 7696 7697 7698 7699 7700 7701 7702 7703 7704 7705 7706 7707 7708 7709 7710 7711 7712 7713 7714 7715 7716 7717 7718 7719 7720 7721 7722 7723 7724 7725 7726 7727 7728 7729 7730 7731 7732 7733 7734 7735 7736 7737 7738 7739 7740 7741 7742 7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 7773 7774 7775 7776 7777 7778 7779 7780 7781 7782 7783 7784 7785 7786 7787 7788 7789 7790 7791 7792 7793 7794 7795 7796 7797 7798 7799 7800 7801 7802 7803 7804 7805 7806 7807 7808 7809 7810 7811 7812 7813 7814 7815 7816 7817 7818 7819 7820 7821 7822 7823 7824 7825 7826 7827 7828 7829 7830 7831 7832 7833 7834 7835 7836 7837 7838 7839 7840 7841 7842 7843 7844 7845 7846 7847 7848 7849 7850 7851 7852 7853 7854 7855 7856 7857 7858 7859 7860 7861 7862 7863 7864 7865 7866 7867 7868 7869 7870 7871 7872 7873 7874 7875 7876 7877 7878 7879 7880 7881 7882 7883 7884 7885 7886 7887 7888 7889 7890 7891 7892 7893 7894 7895 7896 7897 7898 7899 7900 7901 7902 7903 7904 7905 7906 7907 7908 7909 7910 7911 7912 7913 7914 7915 7916 7917 7918 7919 7920 7921 7922 7923 7924 7925 7926 7927 7928 7929 7930 7931 7932 7933 7934 7935 7936 7937 7938 7939 7940 7941 7942 7943 7944 7945 7946 7947 7948 7949 7950 7951 7952 7953 7954 7955 7956 7957 7958 7959 7960 7961 7962 7963 7964 7965 7966 7967 7968 7969 7970 7971 7972 7973 7974 7975 7976 7977 7978 7979 7980 7981 7982 7983 7984 7985 7986 7987 7988 7989 7990 7991 7992 7993 7994 7995 7996 7997 7998 7999 8000 8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 8602 8603 8604 8605 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 |
/* shapefiles.c -- implements shapefile support [import - export] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Brad Hards <bradh@frogmouth.net> Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ struct zip_mem_shp_list { /* a list of Shapefiles within a Zipfile */ struct zip_mem_shp_item *first; struct zip_mem_shp_item *last; }; static struct zip_mem_shp_item * alloc_zip_mem_shp_item (const char *basename, int wich, int dbf_only) { /* creating a Shapefile within a Zipfile */ struct zip_mem_shp_item *item = malloc (sizeof (struct zip_mem_shp_item)); if (basename == NULL) item->basename = NULL; else { int len = strlen (basename); item->basename = malloc (len + 1); strcpy (item->basename, basename); if (!dbf_only) { if (*(item->basename + len - 4) == '.') *(item->basename + len - 4) = '\0'; } } item->shp = 0; item->shx = 0; item->dbf = 0; item->prj = 0; switch (wich) { case GAIA_ZIPFILE_SHP: item->shp = 1; break; case GAIA_ZIPFILE_SHX: item->shx = 1; break; case GAIA_ZIPFILE_DBF: item->dbf = 1; break; case GAIA_ZIPFILE_PRJ: item->prj = 1; break; }; item->next = NULL; return item; } static void add_item_into_zip_mem_shp_list (struct zip_mem_shp_list *list, const char *filename, int wich, int dbf_only) { /* populating the list of Zipfile Shapefiles */ struct zip_mem_shp_item *item; if (list == NULL) return; item = list->first; while (item != NULL) { /* verifying an already existing basename */ char *name = NULL; switch (wich) { case GAIA_ZIPFILE_SHP: name = sqlite3_mprintf ("%s.shp", item->basename); break; case GAIA_ZIPFILE_SHX: name = sqlite3_mprintf ("%s.shx", item->basename); break; case GAIA_ZIPFILE_DBF: name = sqlite3_mprintf ("%s.dbf", item->basename); break; case GAIA_ZIPFILE_PRJ: name = sqlite3_mprintf ("%s.prj", item->basename); break; }; if (name != NULL) { if (strcasecmp (name, filename) == 0) { /* found a mathcing basename */ sqlite3_free (name); switch (wich) { case GAIA_ZIPFILE_SHP: item->shp = 1; break; case GAIA_ZIPFILE_SHX: item->shx = 1; break; case GAIA_ZIPFILE_DBF: item->dbf = 1; break; case GAIA_ZIPFILE_PRJ: item->prj = 1; break; }; return; } sqlite3_free (name); } item = item->next; } /* inserting a new basename into the list */ item = alloc_zip_mem_shp_item (filename, wich, dbf_only); if (list->first == NULL) list->first = item; if (list->last != NULL) list->last->next = item; list->last = item; } static struct zip_mem_shapefile * alloc_zip_mem_shapefile () { /* allocating a Memory Zip Shapefile */ struct zip_mem_shapefile *mem_shp = malloc (sizeof (struct zip_mem_shapefile)); mem_shp->shp.path = NULL; mem_shp->shp.buf = NULL; mem_shp->shp.size = 0; mem_shp->shp.offset = 0; mem_shp->shx.path = NULL; mem_shp->shx.buf = NULL; mem_shp->shx.size = 0; mem_shp->shx.offset = 0; mem_shp->dbf.path = NULL; mem_shp->dbf.buf = NULL; mem_shp->dbf.size = 0; mem_shp->dbf.offset = 0; mem_shp->prj.path = NULL; mem_shp->prj.buf = NULL; mem_shp->prj.size = 0; mem_shp->prj.offset = 0; return mem_shp; } static void destroy_zip_mem_file (gaiaMemFilePtr mem) { /* memory cleanup: destroying a Memoroy Zip File */ if (mem == NULL) return; if (mem->path != NULL) free (mem->path); if (mem->buf != NULL) free (mem->buf); } static void destroy_zip_mem_shapefile (struct zip_mem_shapefile *mem_shp) { /* memory cleanup: destroying a Memory Zip Shapefile */ if (mem_shp == NULL) return; destroy_zip_mem_file (&(mem_shp->shp)); destroy_zip_mem_file (&(mem_shp->shx)); destroy_zip_mem_file (&(mem_shp->dbf)); destroy_zip_mem_file (&(mem_shp->prj)); free (mem_shp); } static void destroy_zip_mem_shp_item (struct zip_mem_shp_item *item) { /* destroying a Shapefile item */ if (item == NULL) return; if (item->basename != NULL) free (item->basename); free (item); } static struct zip_mem_shp_list * alloc_zip_mem_shp_list () { /* creating a list of Shapefiles within a Shapefile */ struct zip_mem_shp_list *list = malloc (sizeof (struct zip_mem_shp_list)); list->first = NULL; list->last = NULL; return list; } static void destroy_zip_mem_shp_list (struct zip_mem_shp_list *list) { /* memory cleanup: destroying a list of Shapefiles within a Shapefile */ struct zip_mem_shp_item *item; struct zip_mem_shp_item *item_n; if (list == NULL) return; item = list->first; while (item != NULL) { item_n = item->next; destroy_zip_mem_shp_item (item); item = item_n; } free (list); } static struct resultset_comparator * create_resultset_comparator (int columns) { /* creating an empty resultset comparator object */ int i; ................................................................................ val_prev->txt_blob_value = val_curr->txt_blob_value; val_prev->txt_blob_size = val_curr->txt_blob_size; val_curr->type = SQLITE_NULL; val_curr->txt_blob_value = NULL; } } static struct auxdbf_list * alloc_auxdbf (gaiaDbfListPtr dbf_list) { /* allocating the auxiliary DBF struct */ gaiaDbfFieldPtr fld; struct auxdbf_fld *fld_ex; struct auxdbf_list *auxdbf = malloc (sizeof (struct auxdbf_list)); ................................................................................ return fld->dbf_field; } fld = fld->next; } return NULL; } #ifndef OMIT_ICONV /* ICONV enabled: supporting SHP */ static int do_check_shp_unique_pk_values (sqlite3 * sqlite, gaiaShapefilePtr shp, int srid, int text_dates, const char *pk_name, int pk_type) { /* checking for duplicate PK values */ char *sql; sqlite3_stmt *stmt = NULL; ................................................................................ { return load_shapefile_common (NULL, sqlite, shp_path, table, charset, srid, g_column, gtype, pk_column, coerce2d, compressed, verbose, spatial_index, text_dates, rows, colname_case, err_msg); } #ifdef ENABLE_MINIZIP /* MINIZIP is enabled */ static int do_sniff_zipfile_dir (unzFile uf, struct zip_mem_shp_list *list, int dbf_only) { /* sniffing a Zipfile directory */ int retval = 1; unz_global_info64 gi; int ret; unsigned int i; ret = unzGetGlobalInfo64 (uf, &gi); if (ret != UNZ_OK) { spatialite_e ("Error %d within zipfile in unzGetGlobalInfo\n", ret); return 0; } for (i = 0; i < gi.number_entry; i++) { unsigned int len; char suffix[6]; char filename[256]; unz_file_info64 file_info; ret = unzGetCurrentFileInfo64 (uf, &file_info, filename, 256, NULL, 0, NULL, 0); if (ret != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGetCurrentFileInfo\n", ret); retval = 0; goto stop; } suffix[0] = '\0'; len = strlen (filename); if (len >= 5) { suffix[0] = *(filename + len - 4); suffix[1] = *(filename + len - 3); suffix[2] = *(filename + len - 2); suffix[3] = *(filename + len - 1); suffix[4] = '\0'; } if (strcasecmp (suffix, ".shp") == 0) add_item_into_zip_mem_shp_list (list, filename, GAIA_ZIPFILE_SHP, 0); if (strcasecmp (suffix, ".shx") == 0) add_item_into_zip_mem_shp_list (list, filename, GAIA_ZIPFILE_SHX, 0); if (strcasecmp (suffix, ".dbf") == 0) add_item_into_zip_mem_shp_list (list, filename, GAIA_ZIPFILE_DBF, dbf_only); if (strcasecmp (suffix, ".prj") == 0) add_item_into_zip_mem_shp_list (list, filename, GAIA_ZIPFILE_PRJ, 0); if (i + 1 == gi.number_entry) break; ret = unzGoToNextFile (uf); if (ret != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGoToNextFile\n", ret); retval = 0; goto stop; } } stop: return retval; } static struct zip_mem_shapefile * do_list_zipfile_dir (unzFile uf, const char *shp_path, int dbf_mode) { /* parsing a Zipfile directory */ unz_global_info64 gi; int ret; unsigned int i; int len; int shp = 0; int dbf = 0; int shx = 0; int prj = 0; struct zip_mem_shapefile *mem_shp = NULL; ret = unzGetGlobalInfo64 (uf, &gi); if (ret != UNZ_OK) { spatialite_e ("Error %d within zipfile in unzGetGlobalInfo\n", ret); return 0; } mem_shp = alloc_zip_mem_shapefile (); for (i = 0; i < gi.number_entry; i++) { char *path; char filename[256]; unz_file_info64 file_info; ret = unzGetCurrentFileInfo64 (uf, &file_info, filename, 256, NULL, 0, NULL, 0); if (ret != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGetCurrentFileInfo\n", ret); goto error; } if (dbf_mode) { /* searching for just a bare DBF */ if (!dbf) { if (strcasecmp (shp_path, filename) == 0) { dbf = 1; len = strlen (filename); mem_shp->dbf.path = malloc (len + 1); strcpy (mem_shp->dbf.path, filename); } } } else { /* searching for a Shapefile */ if (!shp) { path = sqlite3_mprintf ("%s.shp", shp_path); if (strcasecmp (path, filename) == 0) { shp = 1; len = strlen (filename); mem_shp->shp.path = malloc (len + 1); strcpy (mem_shp->shp.path, filename); } sqlite3_free (path); } if (!shx) { path = sqlite3_mprintf ("%s.shx", shp_path); if (strcasecmp (path, filename) == 0) { shx = 1; len = strlen (filename); mem_shp->shx.path = malloc (len + 1); strcpy (mem_shp->shx.path, filename); } sqlite3_free (path); } if (!dbf) { path = sqlite3_mprintf ("%s.dbf", shp_path); if (strcasecmp (path, filename) == 0) { dbf = 1; len = strlen (filename); mem_shp->dbf.path = malloc (len + 1); strcpy (mem_shp->dbf.path, filename); } sqlite3_free (path); } if (!prj) { path = sqlite3_mprintf ("%s.prj", shp_path); if (strcasecmp (path, filename) == 0) { prj = 1; len = strlen (filename); mem_shp->prj.path = malloc (len + 1); strcpy (mem_shp->prj.path, filename); } sqlite3_free (path); } } if (i + 1 == gi.number_entry) break; ret = unzGoToNextFile (uf); if (ret != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGoToNextFile\n", ret); goto error; } } if (dbf_mode && dbf) return mem_shp; if (shp && shx && dbf) return mem_shp; error: destroy_zip_mem_shapefile (mem_shp); return NULL; } static int do_read_zipfile_file (unzFile uf, struct zip_mem_shapefile *mem_shape, int wich) { // // impo int is_open = 0; int retval = 1; uint32_t size_buf; void *buf = NULL; char filename[256]; gaiaMemFilePtr mem_file; unz_file_info64 file_info; int err; switch (wich) { case GAIA_ZIPFILE_SHP: mem_file = &(mem_shape->shp); break; case GAIA_ZIPFILE_SHX: mem_file = &(mem_shape->shx); break; case GAIA_ZIPFILE_DBF: mem_file = &(mem_shape->dbf); break; case GAIA_ZIPFILE_PRJ: mem_file = &(mem_shape->prj); break; default: mem_file = NULL; }; if (mem_file == NULL) return 0; if (mem_file->path == NULL) return 0; err = unzLocateFile (uf, mem_file->path, 0); if (err != UNZ_OK) { spatialite_e ("File %s not found within zipfile\n", mem_file->path); retval = 0; goto skip; } err = unzGetCurrentFileInfo64 (uf, &file_info, filename, 256, NULL, 0, NULL, 0); if (err != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGetCurrentFileInfo\n", err); retval = 0; goto skip; } size_buf = file_info.uncompressed_size; buf = malloc (size_buf); err = unzOpenCurrentFile (uf); if (err != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGetCurrentFileInfo\n", err); retval = 0; goto skip; } is_open = 1; err = unzReadCurrentFile (uf, buf, size_buf); if (err < 0) { spatialite_e ("Error %d with zipfile in unzReadCurrentFile\n", err); retval = 0; goto skip; } mem_file->buf = buf; mem_file->size = size_buf; skip: if (buf != NULL && !retval) free (buf); if (is_open) unzCloseCurrentFile (uf); return retval; } SPATIALITE_DECLARE int load_zip_shapefile (sqlite3 * sqlite, const char *zip_path, const char *shp_path, const char *table, const char *charset, int srid, const char *g_column, const char *gtype, const char *pk_column, int coerce2d, int compressed, int verbose, int spatial_index, int text_dates, int *rows, int colname_case, char *err_msg) { /* loading a Shapefile from within a Zipfile */ unzFile uf = NULL; int retval = 0; struct zip_mem_shapefile *mem_shape = NULL; if (zip_path == NULL) { spatialite_e ("load zip shapefile error: <%s>\n", "NULL zipfile path"); return 0; } /* opening the Zipfile expected to contain the Shapefile */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); return 0; } /* parsing the Zipfile directory */ mem_shape = do_list_zipfile_dir (uf, shp_path, 0); if (mem_shape == NULL) { spatialite_e ("No SHP %s with Zipfile\n", shp_path); goto stop; } /* unzipping the SHP member */ if (!do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_SHP)) goto stop; /* unzipping the SHX member */ if (!do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_SHX)) goto stop; /* unzipping the DBF member */ if (!do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_DBF)) goto stop; /* unzipping the PRJ member */ if (!do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_PRJ)) goto stop; /* doing the hard work */ if (load_shapefile_common (mem_shape, sqlite, shp_path, table, charset, srid, g_column, gtype, pk_column, coerce2d, compressed, verbose, spatial_index, text_dates, rows, colname_case, err_msg)) retval = 1; stop: unzClose (uf); if (mem_shape != NULL) destroy_zip_mem_shapefile (mem_shape); return retval; } static int do_check_dbf_unique_pk_values (sqlite3 * sqlite, gaiaDbfPtr dbf, int text_dates, const char *pk_name, int pk_type) { /* checking for duplicate PK values */ char *sql; sqlite3_stmt *stmt = NULL; ................................................................................ if (err_msg) sprintf (err_msg, "Inserted %d rows into '%s' from DBF", current_row, table); return 1; } } GAIAGEO_DECLARE gaiaDbfPtr gaiaOpenZipDbf (const char *zip_path, const char *filename, const char *charFrom, const char *charTo) { /* creating a DBF object (just for checking its fields) */ unzFile uf = NULL; struct zip_mem_shapefile *mem_shape = NULL; gaiaDbfPtr dbf = NULL; if (zip_path == NULL) { spatialite_e ("open zip dbf error: <%s>\n", "NULL zipfile path"); return 0; } /* opening the Zipfile expected to contain the Shapefile */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); ................................................................................ if (mem_shape == NULL) { spatialite_e ("No DBF %s with Zipfile\n", filename); goto stop; } /* unzipping the DBF member */ if (!do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_DBF)) goto stop; /* attempting to create and initialize the DBF object */ dbf = gaiaAllocDbf(); dbf->memDbf = &(mem_shape->dbf); gaiaOpenDbfRead(dbf, filename, charFrom, charTo); stop: unzClose (uf); destroy_zip_mem_shapefile (mem_shape); return dbf; } SPATIALITE_DECLARE int load_zip_dbf (sqlite3 * sqlite, const char *zip_path, const char *dbf_path, const char *table, const char *pk_column, const char *charset, int verbose, int text_dates, int *rows, ................................................................................ if (mem_shape != NULL) destroy_zip_mem_shapefile (mem_shape); return retval; } #endif /* end MINIZIP */ #endif /* end ICONV (SHP) */ #ifndef OMIT_PROJ /* including PROJ */ #ifdef PROJ_NEW /* only if new PROJ.6 is supported */ static int output_prj_file_proj_new (int srid, const char *path, void *proj_ctx) { /* attempting to export a genuine ESRI WKT */ PJ_CONTEXT *ctx = (PJ_CONTEXT *) proj_ctx; ................................................................................ fclose (out); end: if (srsWkt) free (srsWkt); return; } #ifndef OMIT_ICONV /* ICONV enabled: supporting SHAPEFILE and DBF */ static int get_default_dbf_fields (sqlite3 * sqlite, const char *xtable, const char *db_prefix, const char *table_name, gaiaDbfListPtr * dbf_export_list) { /* creating DBF field definitions for an empty DBF */ int row = 0; ................................................................................ if (db_prefix != NULL) free (db_prefix); if (table_name != NULL) free (table_name); return 0; } #endif /* end ICONV (SHP and DBF) */ SPATIALITE_DECLARE int is_kml_constant (sqlite3 * sqlite, char *table, char *column) { /* checking a possible column name for KML dump */ char *sql; char *xname; int ret; ................................................................................ if (out) fclose (out); spatialite_e ("The SQL SELECT returned an empty result set\n... there is nothing to export ...\n"); return 0; } static int is_table (sqlite3 * sqlite, const char *table) { /* check if this one really is a TABLE */ char *sql; int ret; char **results; ................................................................................ else sprintf (err_msg, "XL datasource '%s' is not valid\n", path); *rows = 0; return 0; } #endif /* FreeXL enabled/disabled */ SPATIALITE_DECLARE int dump_geojson (sqlite3 * sqlite, char *table, char *geom_col, char *outfile_path, int precision, int option) { int rows; return dump_geojson_ex (sqlite, table, geom_col, outfile_path, precision, option, &rows); } SPATIALITE_DECLARE int dump_geojson_ex (sqlite3 * sqlite, char *table, char *geom_col, char *outfile_path, int precision, int option, int *xrows) { /* dumping a geometry table as GeoJSON - Brad Hards 2011-11-09 */ /* sandro furieri 2014-08-30: adding the "int *xrows" argument */ char *sql; char *xgeom_col; char *xtable; sqlite3_stmt *stmt = NULL; FILE *out = NULL; int ret; int rows = 0; *xrows = -1; /* opening/creating the GeoJSON output file */ out = fopen (outfile_path, "wb"); if (!out) goto no_file; /* preparing SQL statement */ xtable = gaiaDoubleQuotedSql (table); xgeom_col = gaiaDoubleQuotedSql (geom_col); sql = sqlite3_mprintf ("SELECT AsGeoJSON(\"%s\", %d, %d) FROM \"%s\" WHERE \"%s\" IS NOT NULL", xgeom_col, precision, option, xtable, xgeom_col); free (xtable); free (xgeom_col); ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) goto sql_error; while (1) { /* scrolling the result set */ ret = sqlite3_step (stmt); if (ret == SQLITE_DONE) { break; /* end of result set */ } if (ret == SQLITE_ROW) { rows++; fprintf (out, "%s\r\n", sqlite3_column_text (stmt, 0)); } else { goto sql_error; } } if (rows == 0) { goto empty_result_set; } sqlite3_finalize (stmt); fclose (out); *xrows = rows; return 1; sql_error: /* an SQL error occurred */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } spatialite_e ("Dump GeoJSON error: %s\n", sqlite3_errmsg (sqlite)); return 0; no_file: /* Output file could not be created / opened */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } spatialite_e ("ERROR: unable to open '%s' for writing\n", outfile_path); return 0; empty_result_set: /* the result set is empty - nothing to do */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } spatialite_e ("The SQL SELECT returned no data to export...\n"); return 0; } static int do_check_geometry (sqlite3 * sqlite, const char *table, const char *geom_col, char **geoname, int *srid, int *dims) { /* checking Geometry Column, SRID and Dimensions */ char *sql; int ret; char **results; int rows; int columns; int i; char *errMsg = NULL; if (geom_col == NULL) sql = sqlite3_mprintf ("SELECT f_geometry_column, srid, geometry_type " "FROM geometry_columns WHERE Lower(f_table_name) = Lower(%Q)", table); else sql = sqlite3_mprintf ("SELECT f_geometry_column, srid, geometry_type " "FROM geometry_columns WHERE Lower(f_table_name) = Lower(%Q) AND " "Lower(f_geometry_column) = Lower(%Q)", table, geom_col); ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); sqlite3_free (sql); if (ret != SQLITE_OK) { spatialite_e ("dump GeoJSON2 MetaData error: <%s>\n", errMsg); sqlite3_free (errMsg); return 0; } if (rows != 1) goto error; for (i = 1; i <= rows; i++) { int gtype; const char *x = results[(i * columns) + 0]; int len = strlen (x); *geoname = malloc (len + 1); strcpy (*geoname, x); *srid = atoi (results[(i * columns) + 1]); gtype = atoi (results[(i * columns) + 2]); switch (gtype) { case GAIA_POINT: case GAIA_LINESTRING: case GAIA_POLYGON: case GAIA_MULTIPOINT: case GAIA_MULTILINESTRING: case GAIA_MULTIPOLYGON: case GAIA_GEOMETRYCOLLECTION: *dims = GAIA_XY; break; case GAIA_POINTZ: case GAIA_LINESTRINGZ: case GAIA_POLYGONZ: case GAIA_MULTIPOINTZ: case GAIA_MULTILINESTRINGZ: case GAIA_MULTIPOLYGONZ: case GAIA_GEOMETRYCOLLECTIONZ: *dims = GAIA_XY_Z; break; case GAIA_POINTM: case GAIA_LINESTRINGM: case GAIA_POLYGONM: case GAIA_MULTIPOINTM: case GAIA_MULTILINESTRINGM: case GAIA_MULTIPOLYGONM: case GAIA_GEOMETRYCOLLECTIONM: *dims = GAIA_XY_M; break; case GAIA_POINTZM: case GAIA_LINESTRINGZM: case GAIA_POLYGONZM: case GAIA_MULTIPOINTZM: case GAIA_MULTILINESTRINGZM: case GAIA_MULTIPOLYGONZM: case GAIA_GEOMETRYCOLLECTIONZM: *dims = GAIA_XY_Z_M; break; default: goto error; }; } sqlite3_free_table (results); return 1; error: sqlite3_free_table (results); return 0; } static char * do_prepare_sql (sqlite3 * sqlite, const char *table, const char *geom_col, int srid, int dims, int precision, int lon_lat, int m_coords) { /* preparing the SQL statement */ char *sql; char *prev; char *xtable; char *x_col; int ret; char **results; int rows; int columns; int i; char *errMsg = NULL; xtable = gaiaDoubleQuotedSql (table); sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", table); free (xtable); ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); sqlite3_free (sql); if (ret != SQLITE_OK) { spatialite_e ("dump GeoJSON2 PRAGMA error: <%s>\n", errMsg); sqlite3_free (errMsg); return 0; } /* defining the Geometry first */ x_col = gaiaDoubleQuotedSql (geom_col); if (lon_lat) { /* exporting Geographic coordinates (lon-lat) */ if (srid == 0 || srid == 4326) { /* already lon-lan, no transformation is required */ if (m_coords) { /* exporting eventual M-Values */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(%Q, %d)", x_col, precision); } else { if (dims == GAIA_XY_M) { /* exporting XYM as XY */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(CastToXY(%Q), %d)", x_col, precision); } else if (dims == GAIA_XY_Z_M) { /* exporting XYZM as XYZ */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(CastToXYZ(%Q), %d)", x_col, precision); } else { /* unchanged dimensions */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(%Q, %d)", x_col, precision); } } } else { /* converting to lon-lat WGS84 */ if (m_coords) { /* exporting eventual M-Values */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(ST_Transform(%Q, 4326), %d)", x_col, precision); } else { if (dims == GAIA_XY_M) { /* exporting XYM as XY */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(ST_Transform(CastToXY(%Q), 4326), %d)", x_col, precision); } else if (dims == GAIA_XY_Z_M) { /* exporting XYZM as XYZ */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(ST_TransformCastToXYZ(%Q), 4326), %d)", x_col, precision); } else { /* unchanged dimensions */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(ST_Transform(%Q, 4326), %d)", x_col, precision); } } } } else { /* exporting coordinates as they are without any transformation */ if (m_coords) { /* exporting eventual M-Values */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(%Q, %d)", x_col, precision); } else { if (dims == GAIA_XY_M) { /* exporting XYM as XY */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(CastToXY(%Q), %d)", x_col, precision); } else if (dims == GAIA_XY_Z_M) { /* exporting XYZM as XYZ */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(CastToXYZ(%Q), %d)", x_col, precision); } else { /* unchanged dimensions */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(%Q, %d)", x_col, precision); } } } free (x_col); for (i = 1; i <= rows; i++) { /* then adding all Properties */ const char *col = results[(i * columns) + 1]; if (strcasecmp (col, geom_col) == 0) continue; /* skipping the Geometry itself */ x_col = gaiaDoubleQuotedSql (col); prev = sql; sql = sqlite3_mprintf ("%s, %Q", prev, x_col); free (x_col); sqlite3_free (prev); } sqlite3_free_table (results); prev = sql; xtable = gaiaDoubleQuotedSql (table); sql = sqlite3_mprintf ("%s FROM \"%s\"", prev, xtable); free (xtable); sqlite3_free (prev); return sql; } static char * do_normalize_case (const char *name, int colname_case) { /* transforming a name in full lower- or upper-case */ int len = strlen (name); char *clean = malloc (len + 1); char *p = clean; strcpy (clean, name); while (*p != '\0') { if (colname_case == GAIA_DBF_COLNAME_LOWERCASE) { if (*p >= 'A' && *p <= 'Z') *p = *p - 'A' + 'a'; } if (colname_case == GAIA_DBF_COLNAME_UPPERCASE) { if (*p >= 'a' && *p <= 'z') *p = *p - 'a' + 'A'; } p++; } return clean; } SPATIALITE_DECLARE int dump_geojson2 (sqlite3 * sqlite, char *table, char *geom_col, char *outfile_path, int precision, int lon_lat, int m_coords, int indented, int colname_case, int *xrows, char **error_message) { /* dumping a geometry table as GeoJSON FeatureCollection (RFC 7946) */ /* sandro furieri 2018-11-25 */ char *sql; sqlite3_stmt *stmt = NULL; FILE *out = NULL; int ret; int rows = 0; char *geoname = NULL; int srid; int dims; int first_feature = 1; sqlite3_int64 ival; double dval; const char *tval; char *xtval; *error_message = NULL; /* checking Geometry Column, SRID and Dimensions */ if (!do_check_geometry (sqlite, table, geom_col, &geoname, &srid, &dims)) goto no_geom; *xrows = -1; /* opening/creating the GeoJSON output file */ out = fopen (outfile_path, "wb"); if (!out) goto no_file; /* preparing SQL statement */ sql = do_prepare_sql (sqlite, table, geoname, srid, dims, precision, lon_lat, m_coords); if (sql == NULL) goto no_sql; free (geoname); ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) goto sql_error; while (1) { /* scrolling the result set */ ret = sqlite3_step (stmt); if (ret == SQLITE_DONE) { break; /* end of result set */ } if (ret == SQLITE_ROW) { int c; int cols = sqlite3_column_count (stmt); if (first_feature) { /* FeatureCollection */ if (indented) fprintf (out, "{\r\n\t\"type\" : \"FeatureCollection\",\r\n\t\"features\" : [{\r\n"); else fprintf (out, "{\"type\":\"FeatureCollection\",\"features\":[{"); first_feature = 0; } /* Feature */ if (rows == 0) { /* first Feature */ if (indented) fprintf (out, "\t\t\"type\" : \"Feature\",\r\n\t\t\"properties\" : "); else fprintf (out, "\"type\":\"Feature\",\"properties\":"); } else { /* any other Feature except the first one */ if (indented) fprintf (out, ", {\r\n\t\t\"type\" : \"Feature\",\r\n\t\t\"properties\" : "); else fprintf (out, ",{\"type\":\"Feature\",\"properties\":"); } for (c = 1; c < cols; c++) { /* Properties */ const char *col_name = sqlite3_column_name (stmt, c); char *norm_name = do_normalize_case (col_name, colname_case); char *xcol_name = gaiaDoubleQuotedSql (norm_name); free (norm_name); if (c == 1) { if (indented) fprintf (out, "{\r\n\t\t\t\"%s\" : ", xcol_name); else fprintf (out, "{\"%s\":", xcol_name); } else { if (indented) fprintf (out, ",\r\n\t\t\t\"%s\" : ", xcol_name); else fprintf (out, ",\"%s\":", xcol_name); } free (xcol_name); switch (sqlite3_column_type (stmt, c)) { case SQLITE_INTEGER: ival = sqlite3_column_int64 (stmt, c); fprintf (out, "%lld", ival); break; case SQLITE_FLOAT: dval = sqlite3_column_double (stmt, c); fprintf (out, "%f", dval); break; case SQLITE_TEXT: tval = (const char *) sqlite3_column_text (stmt, c); xtval = gaiaDoubleQuotedSql (tval); fprintf (out, "\"%s\"", xtval); free (xtval); break; case SQLITE_BLOB: fprintf (out, "\"BLOB value\""); break; case SQLITE_NULL: default: fprintf (out, "null"); break; }; } /* geometry */ if (indented) fprintf (out, "\r\n\t\t},\r\n\t\t\"geometry\" : "); else fprintf (out, "},\"geomety\":"); switch (sqlite3_column_type (stmt, 0)) { case SQLITE_NULL: fprintf (out, "null"); break; default: tval = (const char *) sqlite3_column_text (stmt, 0); fprintf (out, "%s", tval); break; }; /* end Feature */ if (indented) fprintf (out, "\r\n\t}"); else fprintf (out, "}"); rows++; } else { goto sql_error; } } if (rows == 0) { goto empty_result_set; } if (indented) fprintf (out, "]\r\n}\r\n"); else fprintf (out, "]}"); sqlite3_finalize (stmt); fclose (out); *xrows = rows; return 1; sql_error: /* an SQL error occurred */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } *error_message = sqlite3_mprintf ("Dump GeoJSON2 error: %s\n", sqlite3_errmsg (sqlite)); return 0; no_file: /* Output file could not be created / opened */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } if (geoname != NULL) free (geoname); *error_message = sqlite3_mprintf ("ERROR: unable to open '%s' for writing\n", outfile_path); return 0; empty_result_set: /* the result set is empty - nothing to do */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } *error_message = sqlite3_mprintf ("The SQL SELECT returned no data to export...\n"); return 0; no_geom: /* not a valid Geometry Column */ if (out) { fclose (out); } *error_message = sqlite3_mprintf ("Not a valid Geometry Column.\n"); return 0; no_sql: /* unable to create a valid SQL query */ if (out) { fclose (out); } *error_message = sqlite3_mprintf ("Unable to create a valid SQL query.\n"); return 0; } SPATIALITE_DECLARE int load_geojson (sqlite3 * sqlite, char *path, char *table, char *geom_col, int spatial_index, int srid, int colname_case, int *rows, char **error_message) { /* Loads an external GeoJSON file into a newly created table */ FILE *in = NULL; sqlite3_stmt *stmt = NULL; geojson_parser_ptr parser = NULL; geojson_feature_ptr ft; int i; int ret; int pending = 0; char *sql; int ins_rows = 0; *error_message = NULL; /* attempting to open the GeoJSON file for reading */ in = fopen (path, "rb"); if (in == NULL) { *error_message = sqlite3_mprintf ("GeoJSON parser: unable to open %s for reading\n", path); return 0; } /* creating the GeoJSON parser */ parser = geojson_create_parser (in); if (!geojson_parser_init (parser, error_message)) goto err; if (!geojson_create_features_index (parser, error_message)) goto err; if (!geojson_check_features (parser, error_message)) goto err; /* creating the output table */ sql = geojson_sql_create_table (parser, table, colname_case); if (sql == NULL) goto err; ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: unable to create the output table (%s)\n", sqlite3_errmsg (sqlite)); goto err; } /* adding the Geometry Column */ sql = geojson_sql_add_geometry (parser, table, geom_col, colname_case, srid); if (sql == NULL) goto err; ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: unable to create the Geometry column (%s)\n", sqlite3_errmsg (sqlite)); goto err; } if (spatial_index) { /* creating the Spatial Index */ sql = geojson_sql_create_rtree (table, geom_col, colname_case); if (sql == NULL) goto err; ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: unable to create the SpatialIndex (%s)\n", sqlite3_errmsg (sqlite)); goto err; } } /* the whole import will be enclosed in a single Transaction */ ret = sqlite3_exec (sqlite, "SAVEPOINT import_geo_json", NULL, NULL, NULL); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: SAVEPOINT error (%s)\n", sqlite3_errmsg (sqlite)); goto err; } pending = 1; sql = geojson_sql_insert_into (parser, table); ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: INSERT INTO error (%s)\n", sqlite3_errmsg (sqlite)); goto err; } for (i = 0; i < parser->count; i++) { /* inserting all features into the output table */ ft = parser->features + i; if (geojson_init_feature (parser, ft, error_message)) { /* inserting a single Feature */ geojson_column_ptr col; int cnt = 1; sqlite3_reset (stmt); sqlite3_clear_bindings (stmt); col = parser->first_col; while (col != NULL) { /* binding column values */ geojson_property_ptr prop = geojson_get_property_by_name (ft, col->name); if (prop == NULL) sqlite3_bind_null (stmt, cnt++); else { switch (prop->type) { case GEOJSON_TEXT: sqlite3_bind_text (stmt, cnt++, prop->txt_value, strlen (prop->txt_value), SQLITE_STATIC); break; case GEOJSON_INTEGER: sqlite3_bind_int64 (stmt, cnt++, prop->int_value); break; case GEOJSON_DOUBLE: sqlite3_bind_double (stmt, cnt++, prop->dbl_value); break; case GEOJSON_FALSE: sqlite3_bind_int (stmt, cnt++, 0); break; case GEOJSON_TRUE: sqlite3_bind_int (stmt, cnt++, 0); break; case GEOJSON_NULL: default: sqlite3_bind_null (stmt, cnt++); break; }; } col = col->next; } if (ft->geometry == NULL) sqlite3_bind_null (stmt, cnt++); else { gaiaGeomCollPtr geo = gaiaParseGeoJSON ((const unsigned char *) (ft->geometry)); if (geo != NULL) { /* binding the Geometry BLOB */ unsigned char *blob; int blob_size; geo->Srid = srid; gaiaToSpatiaLiteBlobWkb (geo, &blob, &blob_size); sqlite3_bind_blob (stmt, cnt, blob, blob_size, free); gaiaFreeGeomColl (geo); } else { *error_message = sqlite3_mprintf ("GeoJSON import: invalid Geometry (fid=%d)\n", ft->fid); goto err; } } /* inserting the Feature into the DB Table */ ret = sqlite3_step (stmt); if (ret == SQLITE_DONE || ret == SQLITE_ROW) ins_rows++; else { *error_message = sqlite3_mprintf ("GeoJSON import: INSERT INTO failure (fid=%d) %s\n", ft->fid, sqlite3_errmsg (sqlite)); goto err; } geojson_reset_feature (ft); } else goto err; } sqlite3_finalize (stmt); stmt = NULL; /* Committing the still pending Transaction */ ret = sqlite3_exec (sqlite, "RELEASE SAVEPOINT import_geo_json", NULL, NULL, NULL); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: RELEASE SAVEPOINT error (%s)\n", sqlite3_errmsg (sqlite)); goto err; } geojson_destroy_parser (parser); *rows = ins_rows; return 1; err: if (stmt != NULL) sqlite3_finalize (stmt); if (pending) { /* Rolling back the Transaction */ sqlite3_exec (sqlite, "ROLLBAKC TO SAVEPOINT import_geo_json", NULL, NULL, NULL); sqlite3_exec (sqlite, "RELEASE SAVEPOINT import_geo_json", NULL, NULL, NULL); } geojson_destroy_parser (parser); *rows = 0; return 0; } SPATIALITE_PRIVATE const void * gaiaElemGeomOptionsCreate () { /* creating an Elementary Geometries Options object */ struct aux_elemgeom_options *options = malloc (sizeof (struct aux_elemgeom_options)); options->first = NULL; options->last = NULL; options->cast2multi = 0; return options; } SPATIALITE_PRIVATE void gaiaElemGeomOptionsDestroy (const void *opts) { /* destroying an Elementary Geometries Options object */ struct aux_elemgeom_ignore *ign; struct aux_elemgeom_ignore *ign2; struct aux_elemgeom_options *options = (struct aux_elemgeom_options *) opts; if (options == NULL) return; ign = options->first; while (ign != NULL) { ign2 = ign->next; if (ign->column != NULL) free (ign->column); free (ign); ign = ign2; } free (options); } static void ignore_column (struct aux_elemgeom_options *options, const char *column) { /* marking a Column to be ignored */ int len; struct aux_elemgeom_ignore *ign; if (options == NULL) return; ign = malloc (sizeof (struct aux_elemgeom_ignore)); len = strlen (column); ign->column = malloc (len + 1); strcpy (ign->column, column); ign->next = NULL; if (options->first == NULL) options->first = ign; if (options->last != NULL) options->last->next = ign; options->last = ign; } SPATIALITE_PRIVATE void gaiaElemGeomOptionsAdd (const void *opts, const char *option) { /* adding an Elementary Geometries Option */ struct aux_elemgeom_options *options = (struct aux_elemgeom_options *) opts; if (options == NULL) return; if (strncasecmp (option, "::cast2multi::", 14) == 0) options->cast2multi = 1; if (strncasecmp (option, "::ignore::", 10) == 0) ignore_column (options, option + 10); } #ifdef ENABLE_MINIZIP /* MINIZIP is enabled */ GAIAGEO_DECLARE char * gaiaReadWktFromZipShp (const char *zip_path, const char *basename) { /* attempting to read the .PRJ member of some zipped Shapefile */ char *wkt = NULL; unzFile uf = NULL; struct zip_mem_shapefile *mem_shape = NULL; if (zip_path == NULL) { spatialite_e ("read_wkt_from_zipshp error: <%s>\n", "NULL zipfile path"); return NULL; } /* opening the Zipfile expected to contain the Shapefile */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); return NULL; } /* parsing the Zipfile directory */ mem_shape = do_list_zipfile_dir (uf, basename, 0); if (mem_shape == NULL) { spatialite_e ("No SHP %s with Zipfile\n", basename); goto stop; } /* unzipping the PRJ member (if any) */ do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_PRJ); if (mem_shape->prj.buf != NULL) { wkt = malloc (mem_shape->prj.size + 1); memcpy (wkt, mem_shape->prj.buf, mem_shape->prj.size); *(wkt + mem_shape->prj.size) = '\0'; } stop: unzClose (uf); if (mem_shape != NULL) destroy_zip_mem_shapefile (mem_shape); return wkt; } GAIAGEO_DECLARE int gaiaZipfileNumSHP (const char *zip_path, int *count) { /* attempting to count how many Shapefiles are within a given Zipfile */ int ret; int retval = 1; struct zip_mem_shp_item *item; struct zip_mem_shp_list *list = alloc_zip_mem_shp_list (); unzFile uf = NULL; *count = 0; if (zip_path == NULL) { spatialite_e ("zipfile NumSHP error: <%s>\n", "NULL zipfile path"); retval = 0; goto stop; } /* opening the Zipfile expected to contain the Shapefile */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); retval = 0; goto stop; } /* sniffing the Zipfile */ ret = do_sniff_zipfile_dir (uf, list, 0); if (!ret) { retval = 0; goto stop; } item = list->first; while (item != NULL) { /* counting how many Shapefiles are there */ if (item->shp && item->shx && item->dbf) *count += 1; item = item->next; } stop: unzClose (uf); destroy_zip_mem_shp_list (list); return retval; } GAIAGEO_DECLARE char * gaiaZipfileShpN (const char *zip_path, int idx) { /* attempting to return the Nth Shapefile's basename fromt within a given Zipfile */ int ret; int count = 0; char *basename = NULL; struct zip_mem_shp_item *item; struct zip_mem_shp_list *list = alloc_zip_mem_shp_list (); unzFile uf = NULL; count = 0; if (zip_path == NULL) { spatialite_e ("zipfile NumSHP error: <%s>\n", "NULL zipfile path"); goto stop; } /* opening the Zipfile expected to contain the Shapefile */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); goto stop; } /* sniffing the Zipfile */ ret = do_sniff_zipfile_dir (uf, list, 0); if (!ret) goto stop; item = list->first; while (item != NULL) { /* counting how many Shapefiles are there */ if (item->shp && item->shx && item->dbf) count++; if (count == idx) { int len = strlen (item->basename); basename = malloc (len + 1); strcpy (basename, item->basename); break; } item = item->next; } stop: unzClose (uf); destroy_zip_mem_shp_list (list); return basename; } GAIAGEO_DECLARE int gaiaZipfileNumDBF (const char *zip_path, int *count) { /* attempting to count how many DBF files are within a given Zipfile */ int ret; int retval = 1; struct zip_mem_shp_item *item; struct zip_mem_shp_list *list = alloc_zip_mem_shp_list (); unzFile uf = NULL; *count = 0; if (zip_path == NULL) { spatialite_e ("zipfile NumDBF error: <%s>\n", "NULL zipfile path"); retval = 0; goto stop; } /* opening the Zipfile expected to contain the DBF file */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); retval = 0; goto stop; } /* sniffing the Zipfile */ ret = do_sniff_zipfile_dir (uf, list, 1); if (!ret) { retval = 0; goto stop; } item = list->first; while (item != NULL) { /* counting how many DBF files are there */ if (item->dbf) *count += 1; item = item->next; } stop: unzClose (uf); destroy_zip_mem_shp_list (list); return retval; } GAIAGEO_DECLARE char * gaiaZipfileDbfN (const char *zip_path, int idx) { /* attempting to return the Nth DBF filename fromt within a given Zipfile */ int ret; int count = 0; char *filename = NULL; struct zip_mem_shp_item *item; struct zip_mem_shp_list *list = alloc_zip_mem_shp_list (); unzFile uf = NULL; count = 0; if (zip_path == NULL) { spatialite_e ("zipfile NumDBF error: <%s>\n", "NULL zipfile path"); goto stop; } /* opening the Zipfile expected to contain the DBF file */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); goto stop; } /* sniffing the Zipfile */ ret = do_sniff_zipfile_dir (uf, list, 1); if (!ret) goto stop; item = list->first; while (item != NULL) { /* counting how many DBF files are there */ if (item->dbf) count++; if (count == idx) { int len = strlen (item->basename); filename = malloc (len + 1); strcpy (filename, item->basename); break; } item = item->next; } stop: unzClose (uf); destroy_zip_mem_shp_list (list); return filename; } #endif /* end MINIZIP */ |
| | | | | > | < | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | > | < < < > > < < < > > > > | | < < < < < < < < < < < < < < < < < < < | | < < < < < < < < < < < < < < < < < < < < < < < | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < | > | > | < < < < < < < < < < < | < > < > > > | < < < | > > > > > < < < < < > | > > | < < < > > < < < < > > | < < | < < < < < > > > > > > < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | | > | | < | | | | | < < < < < < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 ... 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 ... 496 497 498 499 500 501 502 503 504 505 506 507 508 509 .... 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 .... 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 .... 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 .... 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 .... 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 .... 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 .... 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 .... 8705 8706 8707 8708 8709 8710 8711 |
/* shapefiles.c -- implements shapefile support [import - export] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Brad Hards <bradh@frogmouth.net> Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ struct zip_mem_shp_list { /* a list of Shapefiles within a Zipfile */ struct zip_mem_shp_item *first; struct zip_mem_shp_item *last; }; SPATIALITE_PRIVATE const void * gaiaElemGeomOptionsCreate () { /* creating an Elementary Geometries Options object */ struct aux_elemgeom_options *options = malloc (sizeof (struct aux_elemgeom_options)); options->first = NULL; options->last = NULL; options->cast2multi = 0; return options; } SPATIALITE_PRIVATE void gaiaElemGeomOptionsDestroy (const void *opts) { /* destroying an Elementary Geometries Options object */ struct aux_elemgeom_ignore *ign; struct aux_elemgeom_ignore *ign2; struct aux_elemgeom_options *options = (struct aux_elemgeom_options *) opts; if (options == NULL) return; ign = options->first; while (ign != NULL) { ign2 = ign->next; if (ign->column != NULL) free (ign->column); free (ign); ign = ign2; } free (options); } static void ignore_column (struct aux_elemgeom_options *options, const char *column) { /* marking a Column to be ignored */ int len; struct aux_elemgeom_ignore *ign; if (options == NULL) return; ign = malloc (sizeof (struct aux_elemgeom_ignore)); len = strlen (column); ign->column = malloc (len + 1); strcpy (ign->column, column); ign->next = NULL; if (options->first == NULL) options->first = ign; if (options->last != NULL) options->last->next = ign; options->last = ign; } SPATIALITE_PRIVATE void gaiaElemGeomOptionsAdd (const void *opts, const char *option) { /* adding an Elementary Geometries Option */ struct aux_elemgeom_options *options = (struct aux_elemgeom_options *) opts; if (options == NULL) return; if (strncasecmp (option, "::cast2multi::", 14) == 0) options->cast2multi = 1; if (strncasecmp (option, "::ignore::", 10) == 0) ignore_column (options, option + 10); } static struct resultset_comparator * create_resultset_comparator (int columns) { /* creating an empty resultset comparator object */ int i; ................................................................................ val_prev->txt_blob_value = val_curr->txt_blob_value; val_prev->txt_blob_size = val_curr->txt_blob_size; val_curr->type = SQLITE_NULL; val_curr->txt_blob_value = NULL; } } #ifndef OMIT_ICONV /* ICONV enabled: supporting SHP */ static struct auxdbf_list * alloc_auxdbf (gaiaDbfListPtr dbf_list) { /* allocating the auxiliary DBF struct */ gaiaDbfFieldPtr fld; struct auxdbf_fld *fld_ex; struct auxdbf_list *auxdbf = malloc (sizeof (struct auxdbf_list)); ................................................................................ return fld->dbf_field; } fld = fld->next; } return NULL; } static int do_check_shp_unique_pk_values (sqlite3 * sqlite, gaiaShapefilePtr shp, int srid, int text_dates, const char *pk_name, int pk_type) { /* checking for duplicate PK values */ char *sql; sqlite3_stmt *stmt = NULL; ................................................................................ { return load_shapefile_common (NULL, sqlite, shp_path, table, charset, srid, g_column, gtype, pk_column, coerce2d, compressed, verbose, spatial_index, text_dates, rows, colname_case, err_msg); } static int do_check_dbf_unique_pk_values (sqlite3 * sqlite, gaiaDbfPtr dbf, int text_dates, const char *pk_name, int pk_type) { /* checking for duplicate PK values */ char *sql; sqlite3_stmt *stmt = NULL; ................................................................................ if (err_msg) sprintf (err_msg, "Inserted %d rows into '%s' from DBF", current_row, table); return 1; } } #ifdef ENABLE_MINIZIP /* MINIZIP is enabled */ static struct zip_mem_shp_item * alloc_zip_mem_shp_item (const char *basename, int wich, int dbf_only) { /* creating a Shapefile within a Zipfile */ struct zip_mem_shp_item *item = malloc (sizeof (struct zip_mem_shp_item)); if (basename == NULL) item->basename = NULL; else { int len = strlen (basename); item->basename = malloc (len + 1); strcpy (item->basename, basename); if (!dbf_only) { if (*(item->basename + len - 4) == '.') *(item->basename + len - 4) = '\0'; } } item->shp = 0; item->shx = 0; item->dbf = 0; item->prj = 0; switch (wich) { case GAIA_ZIPFILE_SHP: item->shp = 1; break; case GAIA_ZIPFILE_SHX: item->shx = 1; break; case GAIA_ZIPFILE_DBF: item->dbf = 1; break; case GAIA_ZIPFILE_PRJ: item->prj = 1; break; }; item->next = NULL; return item; } static void add_item_into_zip_mem_shp_list (struct zip_mem_shp_list *list, const char *filename, int wich, int dbf_only) { /* populating the list of Zipfile Shapefiles */ struct zip_mem_shp_item *item; if (list == NULL) return; item = list->first; while (item != NULL) { /* verifying an already existing basename */ char *name = NULL; switch (wich) { case GAIA_ZIPFILE_SHP: name = sqlite3_mprintf ("%s.shp", item->basename); break; case GAIA_ZIPFILE_SHX: name = sqlite3_mprintf ("%s.shx", item->basename); break; case GAIA_ZIPFILE_DBF: name = sqlite3_mprintf ("%s.dbf", item->basename); break; case GAIA_ZIPFILE_PRJ: name = sqlite3_mprintf ("%s.prj", item->basename); break; }; if (name != NULL) { if (strcasecmp (name, filename) == 0) { /* found a mathcing basename */ sqlite3_free (name); switch (wich) { case GAIA_ZIPFILE_SHP: item->shp = 1; break; case GAIA_ZIPFILE_SHX: item->shx = 1; break; case GAIA_ZIPFILE_DBF: item->dbf = 1; break; case GAIA_ZIPFILE_PRJ: item->prj = 1; break; }; return; } sqlite3_free (name); } item = item->next; } /* inserting a new basename into the list */ item = alloc_zip_mem_shp_item (filename, wich, dbf_only); if (list->first == NULL) list->first = item; if (list->last != NULL) list->last->next = item; list->last = item; } static struct zip_mem_shapefile * alloc_zip_mem_shapefile () { /* allocating a Memory Zip Shapefile */ struct zip_mem_shapefile *mem_shp = malloc (sizeof (struct zip_mem_shapefile)); mem_shp->shp.path = NULL; mem_shp->shp.buf = NULL; mem_shp->shp.size = 0; mem_shp->shp.offset = 0; mem_shp->shx.path = NULL; mem_shp->shx.buf = NULL; mem_shp->shx.size = 0; mem_shp->shx.offset = 0; mem_shp->dbf.path = NULL; mem_shp->dbf.buf = NULL; mem_shp->dbf.size = 0; mem_shp->dbf.offset = 0; mem_shp->prj.path = NULL; mem_shp->prj.buf = NULL; mem_shp->prj.size = 0; mem_shp->prj.offset = 0; return mem_shp; } static void destroy_zip_mem_file (gaiaMemFilePtr mem) { /* memory cleanup: destroying a Memoroy Zip File */ if (mem == NULL) return; if (mem->path != NULL) free (mem->path); if (mem->buf != NULL) free (mem->buf); } static void destroy_zip_mem_shapefile (struct zip_mem_shapefile *mem_shp) { /* memory cleanup: destroying a Memory Zip Shapefile */ if (mem_shp == NULL) return; destroy_zip_mem_file (&(mem_shp->shp)); destroy_zip_mem_file (&(mem_shp->shx)); destroy_zip_mem_file (&(mem_shp->dbf)); destroy_zip_mem_file (&(mem_shp->prj)); free (mem_shp); } static void destroy_zip_mem_shp_item (struct zip_mem_shp_item *item) { /* destroying a Shapefile item */ if (item == NULL) return; if (item->basename != NULL) free (item->basename); free (item); } static struct zip_mem_shp_list * alloc_zip_mem_shp_list () { /* creating a list of Shapefiles within a Shapefile */ struct zip_mem_shp_list *list = malloc (sizeof (struct zip_mem_shp_list)); list->first = NULL; list->last = NULL; return list; } static void destroy_zip_mem_shp_list (struct zip_mem_shp_list *list) { /* memory cleanup: destroying a list of Shapefiles within a Shapefile */ struct zip_mem_shp_item *item; struct zip_mem_shp_item *item_n; if (list == NULL) return; item = list->first; while (item != NULL) { item_n = item->next; destroy_zip_mem_shp_item (item); item = item_n; } free (list); } static int do_sniff_zipfile_dir (unzFile uf, struct zip_mem_shp_list *list, int dbf_only) { /* sniffing a Zipfile directory */ int retval = 1; unz_global_info64 gi; int ret; unsigned int i; ret = unzGetGlobalInfo64 (uf, &gi); if (ret != UNZ_OK) { spatialite_e ("Error %d within zipfile in unzGetGlobalInfo\n", ret); return 0; } for (i = 0; i < gi.number_entry; i++) { unsigned int len; char suffix[6]; char filename[256]; unz_file_info64 file_info; ret = unzGetCurrentFileInfo64 (uf, &file_info, filename, 256, NULL, 0, NULL, 0); if (ret != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGetCurrentFileInfo\n", ret); retval = 0; goto stop; } suffix[0] = '\0'; len = strlen (filename); if (len >= 5) { suffix[0] = *(filename + len - 4); suffix[1] = *(filename + len - 3); suffix[2] = *(filename + len - 2); suffix[3] = *(filename + len - 1); suffix[4] = '\0'; } if (strcasecmp (suffix, ".shp") == 0) add_item_into_zip_mem_shp_list (list, filename, GAIA_ZIPFILE_SHP, 0); if (strcasecmp (suffix, ".shx") == 0) add_item_into_zip_mem_shp_list (list, filename, GAIA_ZIPFILE_SHX, 0); if (strcasecmp (suffix, ".dbf") == 0) add_item_into_zip_mem_shp_list (list, filename, GAIA_ZIPFILE_DBF, dbf_only); if (strcasecmp (suffix, ".prj") == 0) add_item_into_zip_mem_shp_list (list, filename, GAIA_ZIPFILE_PRJ, 0); if (i + 1 == gi.number_entry) break; ret = unzGoToNextFile (uf); if (ret != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGoToNextFile\n", ret); retval = 0; goto stop; } } stop: return retval; } static struct zip_mem_shapefile * do_list_zipfile_dir (unzFile uf, const char *shp_path, int dbf_mode) { /* parsing a Zipfile directory */ unz_global_info64 gi; int ret; unsigned int i; int len; int shp = 0; int dbf = 0; int shx = 0; int prj = 0; struct zip_mem_shapefile *mem_shp = NULL; ret = unzGetGlobalInfo64 (uf, &gi); if (ret != UNZ_OK) { spatialite_e ("Error %d within zipfile in unzGetGlobalInfo\n", ret); return 0; } mem_shp = alloc_zip_mem_shapefile (); for (i = 0; i < gi.number_entry; i++) { char *path; char filename[256]; unz_file_info64 file_info; ret = unzGetCurrentFileInfo64 (uf, &file_info, filename, 256, NULL, 0, NULL, 0); if (ret != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGetCurrentFileInfo\n", ret); goto error; } if (dbf_mode) { /* searching for just a bare DBF */ if (!dbf) { if (strcasecmp (shp_path, filename) == 0) { dbf = 1; len = strlen (filename); mem_shp->dbf.path = malloc (len + 1); strcpy (mem_shp->dbf.path, filename); } } } else { /* searching for a Shapefile */ if (!shp) { path = sqlite3_mprintf ("%s.shp", shp_path); if (strcasecmp (path, filename) == 0) { shp = 1; len = strlen (filename); mem_shp->shp.path = malloc (len + 1); strcpy (mem_shp->shp.path, filename); } sqlite3_free (path); } if (!shx) { path = sqlite3_mprintf ("%s.shx", shp_path); if (strcasecmp (path, filename) == 0) { shx = 1; len = strlen (filename); mem_shp->shx.path = malloc (len + 1); strcpy (mem_shp->shx.path, filename); } sqlite3_free (path); } if (!dbf) { path = sqlite3_mprintf ("%s.dbf", shp_path); if (strcasecmp (path, filename) == 0) { dbf = 1; len = strlen (filename); mem_shp->dbf.path = malloc (len + 1); strcpy (mem_shp->dbf.path, filename); } sqlite3_free (path); } if (!prj) { path = sqlite3_mprintf ("%s.prj", shp_path); if (strcasecmp (path, filename) == 0) { prj = 1; len = strlen (filename); mem_shp->prj.path = malloc (len + 1); strcpy (mem_shp->prj.path, filename); } sqlite3_free (path); } } if (i + 1 == gi.number_entry) break; ret = unzGoToNextFile (uf); if (ret != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGoToNextFile\n", ret); goto error; } } if (dbf_mode && dbf) return mem_shp; if (shp && shx && dbf) return mem_shp; error: destroy_zip_mem_shapefile (mem_shp); return NULL; } static int do_read_zipfile_file (unzFile uf, struct zip_mem_shapefile *mem_shape, int wich) { // // impo int is_open = 0; int retval = 1; uint32_t size_buf; void *buf = NULL; char filename[256]; gaiaMemFilePtr mem_file; unz_file_info64 file_info; int err; switch (wich) { case GAIA_ZIPFILE_SHP: mem_file = &(mem_shape->shp); break; case GAIA_ZIPFILE_SHX: mem_file = &(mem_shape->shx); break; case GAIA_ZIPFILE_DBF: mem_file = &(mem_shape->dbf); break; case GAIA_ZIPFILE_PRJ: mem_file = &(mem_shape->prj); break; default: mem_file = NULL; }; if (mem_file == NULL) return 0; if (mem_file->path == NULL) return 0; err = unzLocateFile (uf, mem_file->path, 0); if (err != UNZ_OK) { spatialite_e ("File %s not found within zipfile\n", mem_file->path); retval = 0; goto skip; } err = unzGetCurrentFileInfo64 (uf, &file_info, filename, 256, NULL, 0, NULL, 0); if (err != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGetCurrentFileInfo\n", err); retval = 0; goto skip; } size_buf = file_info.uncompressed_size; buf = malloc (size_buf); err = unzOpenCurrentFile (uf); if (err != UNZ_OK) { spatialite_e ("Error %d with zipfile in unzGetCurrentFileInfo\n", err); retval = 0; goto skip; } is_open = 1; err = unzReadCurrentFile (uf, buf, size_buf); if (err < 0) { spatialite_e ("Error %d with zipfile in unzReadCurrentFile\n", err); retval = 0; goto skip; } mem_file->buf = buf; mem_file->size = size_buf; skip: if (buf != NULL && !retval) free (buf); if (is_open) unzCloseCurrentFile (uf); return retval; } SPATIALITE_DECLARE int load_zip_shapefile (sqlite3 * sqlite, const char *zip_path, const char *shp_path, const char *table, const char *charset, int srid, const char *g_column, const char *gtype, const char *pk_column, int coerce2d, int compressed, int verbose, int spatial_index, int text_dates, int *rows, int colname_case, char *err_msg) { /* loading a Shapefile from within a Zipfile */ unzFile uf = NULL; int retval = 0; struct zip_mem_shapefile *mem_shape = NULL; if (zip_path == NULL) { spatialite_e ("load zip shapefile error: <%s>\n", "NULL zipfile path"); return 0; } /* opening the Zipfile expected to contain the Shapefile */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); return 0; } /* parsing the Zipfile directory */ mem_shape = do_list_zipfile_dir (uf, shp_path, 0); if (mem_shape == NULL) { spatialite_e ("No SHP %s with Zipfile\n", shp_path); goto stop; } /* unzipping the SHP member */ if (!do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_SHP)) goto stop; /* unzipping the SHX member */ if (!do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_SHX)) goto stop; /* unzipping the DBF member */ if (!do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_DBF)) goto stop; /* unzipping the PRJ member */ if (!do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_PRJ)) goto stop; /* doing the hard work */ if (load_shapefile_common (mem_shape, sqlite, shp_path, table, charset, srid, g_column, gtype, pk_column, coerce2d, compressed, verbose, spatial_index, text_dates, rows, colname_case, err_msg)) retval = 1; stop: unzClose (uf); if (mem_shape != NULL) destroy_zip_mem_shapefile (mem_shape); return retval; } GAIAGEO_DECLARE gaiaDbfPtr gaiaOpenZipDbf (const char *zip_path, const char *filename, const char *charFrom, const char *charTo) { /* creating a DBF object (just for checking its fields) */ unzFile uf = NULL; struct zip_mem_shapefile *mem_shape = NULL; gaiaDbfPtr dbf = NULL; if (zip_path == NULL) { spatialite_e ("open zip dbf error: <%s>\n", "NULL zipfile path"); return 0; } /* opening the Zipfile expected to contain the Shapefile */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); ................................................................................ if (mem_shape == NULL) { spatialite_e ("No DBF %s with Zipfile\n", filename); goto stop; } /* unzipping the DBF member */ if (!do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_DBF)) goto stop; /* attempting to create and initialize the DBF object */ dbf = gaiaAllocDbf (); dbf->memDbf = &(mem_shape->dbf); gaiaOpenDbfRead (dbf, filename, charFrom, charTo); stop: unzClose (uf); destroy_zip_mem_shapefile (mem_shape); return dbf; } SPATIALITE_DECLARE int load_zip_dbf (sqlite3 * sqlite, const char *zip_path, const char *dbf_path, const char *table, const char *pk_column, const char *charset, int verbose, int text_dates, int *rows, ................................................................................ if (mem_shape != NULL) destroy_zip_mem_shapefile (mem_shape); return retval; } #endif /* end MINIZIP */ #ifndef OMIT_PROJ /* including PROJ */ #ifdef PROJ_NEW /* only if new PROJ.6 is supported */ static int output_prj_file_proj_new (int srid, const char *path, void *proj_ctx) { /* attempting to export a genuine ESRI WKT */ PJ_CONTEXT *ctx = (PJ_CONTEXT *) proj_ctx; ................................................................................ fclose (out); end: if (srsWkt) free (srsWkt); return; } static int get_default_dbf_fields (sqlite3 * sqlite, const char *xtable, const char *db_prefix, const char *table_name, gaiaDbfListPtr * dbf_export_list) { /* creating DBF field definitions for an empty DBF */ int row = 0; ................................................................................ if (db_prefix != NULL) free (db_prefix); if (table_name != NULL) free (table_name); return 0; } SPATIALITE_DECLARE int is_kml_constant (sqlite3 * sqlite, char *table, char *column) { /* checking a possible column name for KML dump */ char *sql; char *xname; int ret; ................................................................................ if (out) fclose (out); spatialite_e ("The SQL SELECT returned an empty result set\n... there is nothing to export ...\n"); return 0; } SPATIALITE_DECLARE int dump_geojson (sqlite3 * sqlite, char *table, char *geom_col, char *outfile_path, int precision, int option) { int rows; return dump_geojson_ex (sqlite, table, geom_col, outfile_path, precision, option, &rows); } SPATIALITE_DECLARE int dump_geojson_ex (sqlite3 * sqlite, char *table, char *geom_col, char *outfile_path, int precision, int option, int *xrows) { /* dumping a geometry table as GeoJSON - Brad Hards 2011-11-09 */ /* sandro furieri 2014-08-30: adding the "int *xrows" argument */ char *sql; char *xgeom_col; char *xtable; sqlite3_stmt *stmt = NULL; FILE *out = NULL; int ret; int rows = 0; *xrows = -1; /* opening/creating the GeoJSON output file */ out = fopen (outfile_path, "wb"); if (!out) goto no_file; /* preparing SQL statement */ xtable = gaiaDoubleQuotedSql (table); xgeom_col = gaiaDoubleQuotedSql (geom_col); sql = sqlite3_mprintf ("SELECT AsGeoJSON(\"%s\", %d, %d) FROM \"%s\" WHERE \"%s\" IS NOT NULL", xgeom_col, precision, option, xtable, xgeom_col); free (xtable); free (xgeom_col); ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) goto sql_error; while (1) { /* scrolling the result set */ ret = sqlite3_step (stmt); if (ret == SQLITE_DONE) { break; /* end of result set */ } if (ret == SQLITE_ROW) { rows++; fprintf (out, "%s\r\n", sqlite3_column_text (stmt, 0)); } else { goto sql_error; } } if (rows == 0) { goto empty_result_set; } sqlite3_finalize (stmt); fclose (out); *xrows = rows; return 1; sql_error: /* an SQL error occurred */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } spatialite_e ("Dump GeoJSON error: %s\n", sqlite3_errmsg (sqlite)); return 0; no_file: /* Output file could not be created / opened */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } spatialite_e ("ERROR: unable to open '%s' for writing\n", outfile_path); return 0; empty_result_set: /* the result set is empty - nothing to do */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } spatialite_e ("The SQL SELECT returned no data to export...\n"); return 0; } static int do_check_geometry (sqlite3 * sqlite, const char *table, const char *geom_col, char **geoname, int *srid, int *dims) { /* checking Geometry Column, SRID and Dimensions */ char *sql; int ret; char **results; int rows; int columns; int i; char *errMsg = NULL; if (geom_col == NULL) sql = sqlite3_mprintf ("SELECT f_geometry_column, srid, geometry_type " "FROM geometry_columns WHERE Lower(f_table_name) = Lower(%Q)", table); else sql = sqlite3_mprintf ("SELECT f_geometry_column, srid, geometry_type " "FROM geometry_columns WHERE Lower(f_table_name) = Lower(%Q) AND " "Lower(f_geometry_column) = Lower(%Q)", table, geom_col); ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); sqlite3_free (sql); if (ret != SQLITE_OK) { spatialite_e ("dump GeoJSON2 MetaData error: <%s>\n", errMsg); sqlite3_free (errMsg); return 0; } if (rows != 1) goto error; for (i = 1; i <= rows; i++) { int gtype; const char *x = results[(i * columns) + 0]; int len = strlen (x); *geoname = malloc (len + 1); strcpy (*geoname, x); *srid = atoi (results[(i * columns) + 1]); gtype = atoi (results[(i * columns) + 2]); switch (gtype) { case GAIA_POINT: case GAIA_LINESTRING: case GAIA_POLYGON: case GAIA_MULTIPOINT: case GAIA_MULTILINESTRING: case GAIA_MULTIPOLYGON: case GAIA_GEOMETRYCOLLECTION: *dims = GAIA_XY; break; case GAIA_POINTZ: case GAIA_LINESTRINGZ: case GAIA_POLYGONZ: case GAIA_MULTIPOINTZ: case GAIA_MULTILINESTRINGZ: case GAIA_MULTIPOLYGONZ: case GAIA_GEOMETRYCOLLECTIONZ: *dims = GAIA_XY_Z; break; case GAIA_POINTM: case GAIA_LINESTRINGM: case GAIA_POLYGONM: case GAIA_MULTIPOINTM: case GAIA_MULTILINESTRINGM: case GAIA_MULTIPOLYGONM: case GAIA_GEOMETRYCOLLECTIONM: *dims = GAIA_XY_M; break; case GAIA_POINTZM: case GAIA_LINESTRINGZM: case GAIA_POLYGONZM: case GAIA_MULTIPOINTZM: case GAIA_MULTILINESTRINGZM: case GAIA_MULTIPOLYGONZM: case GAIA_GEOMETRYCOLLECTIONZM: *dims = GAIA_XY_Z_M; break; default: goto error; }; } sqlite3_free_table (results); return 1; error: sqlite3_free_table (results); return 0; } static char * do_prepare_sql (sqlite3 * sqlite, const char *table, const char *geom_col, int srid, int dims, int precision, int lon_lat, int m_coords) { /* preparing the SQL statement */ char *sql; char *prev; char *xtable; char *x_col; int ret; char **results; int rows; int columns; int i; char *errMsg = NULL; xtable = gaiaDoubleQuotedSql (table); sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", table); free (xtable); ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); sqlite3_free (sql); if (ret != SQLITE_OK) { spatialite_e ("dump GeoJSON2 PRAGMA error: <%s>\n", errMsg); sqlite3_free (errMsg); return 0; } /* defining the Geometry first */ x_col = gaiaDoubleQuotedSql (geom_col); if (lon_lat) { /* exporting Geographic coordinates (lon-lat) */ if (srid == 0 || srid == 4326) { /* already lon-lan, no transformation is required */ if (m_coords) { /* exporting eventual M-Values */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(%Q, %d)", x_col, precision); } else { if (dims == GAIA_XY_M) { /* exporting XYM as XY */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(CastToXY(%Q), %d)", x_col, precision); } else if (dims == GAIA_XY_Z_M) { /* exporting XYZM as XYZ */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(CastToXYZ(%Q), %d)", x_col, precision); } else { /* unchanged dimensions */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(%Q, %d)", x_col, precision); } } } else { /* converting to lon-lat WGS84 */ if (m_coords) { /* exporting eventual M-Values */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(ST_Transform(%Q, 4326), %d)", x_col, precision); } else { if (dims == GAIA_XY_M) { /* exporting XYM as XY */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(ST_Transform(CastToXY(%Q), 4326), %d)", x_col, precision); } else if (dims == GAIA_XY_Z_M) { /* exporting XYZM as XYZ */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(ST_TransformCastToXYZ(%Q), 4326), %d)", x_col, precision); } else { /* unchanged dimensions */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(ST_Transform(%Q, 4326), %d)", x_col, precision); } } } } else { /* exporting coordinates as they are without any transformation */ if (m_coords) { /* exporting eventual M-Values */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(%Q, %d)", x_col, precision); } else { if (dims == GAIA_XY_M) { /* exporting XYM as XY */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(CastToXY(%Q), %d)", x_col, precision); } else if (dims == GAIA_XY_Z_M) { /* exporting XYZM as XYZ */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(CastToXYZ(%Q), %d)", x_col, precision); } else { /* unchanged dimensions */ sql = sqlite3_mprintf ("SELECT AsGeoJSON(%Q, %d)", x_col, precision); } } } free (x_col); for (i = 1; i <= rows; i++) { /* then adding all Properties */ const char *col = results[(i * columns) + 1]; if (strcasecmp (col, geom_col) == 0) continue; /* skipping the Geometry itself */ x_col = gaiaDoubleQuotedSql (col); prev = sql; sql = sqlite3_mprintf ("%s, %Q", prev, x_col); free (x_col); sqlite3_free (prev); } sqlite3_free_table (results); prev = sql; xtable = gaiaDoubleQuotedSql (table); sql = sqlite3_mprintf ("%s FROM \"%s\"", prev, xtable); free (xtable); sqlite3_free (prev); return sql; } static char * do_normalize_case (const char *name, int colname_case) { /* transforming a name in full lower- or upper-case */ int len = strlen (name); char *clean = malloc (len + 1); char *p = clean; strcpy (clean, name); while (*p != '\0') { if (colname_case == GAIA_DBF_COLNAME_LOWERCASE) { if (*p >= 'A' && *p <= 'Z') *p = *p - 'A' + 'a'; } if (colname_case == GAIA_DBF_COLNAME_UPPERCASE) { if (*p >= 'a' && *p <= 'z') *p = *p - 'a' + 'A'; } p++; } return clean; } SPATIALITE_DECLARE int dump_geojson2 (sqlite3 * sqlite, char *table, char *geom_col, char *outfile_path, int precision, int lon_lat, int m_coords, int indented, int colname_case, int *xrows, char **error_message) { /* dumping a geometry table as GeoJSON FeatureCollection (RFC 7946) */ /* sandro furieri 2018-11-25 */ char *sql; sqlite3_stmt *stmt = NULL; FILE *out = NULL; int ret; int rows = 0; char *geoname = NULL; int srid; int dims; int first_feature = 1; sqlite3_int64 ival; double dval; const char *tval; char *xtval; *error_message = NULL; /* checking Geometry Column, SRID and Dimensions */ if (!do_check_geometry (sqlite, table, geom_col, &geoname, &srid, &dims)) goto no_geom; *xrows = -1; /* opening/creating the GeoJSON output file */ out = fopen (outfile_path, "wb"); if (!out) goto no_file; /* preparing SQL statement */ sql = do_prepare_sql (sqlite, table, geoname, srid, dims, precision, lon_lat, m_coords); if (sql == NULL) goto no_sql; free (geoname); ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) goto sql_error; while (1) { /* scrolling the result set */ ret = sqlite3_step (stmt); if (ret == SQLITE_DONE) { break; /* end of result set */ } if (ret == SQLITE_ROW) { int c; int cols = sqlite3_column_count (stmt); if (first_feature) { /* FeatureCollection */ if (indented) fprintf (out, "{\r\n\t\"type\" : \"FeatureCollection\",\r\n\t\"features\" : [{\r\n"); else fprintf (out, "{\"type\":\"FeatureCollection\",\"features\":[{"); first_feature = 0; } /* Feature */ if (rows == 0) { /* first Feature */ if (indented) fprintf (out, "\t\t\"type\" : \"Feature\",\r\n\t\t\"properties\" : "); else fprintf (out, "\"type\":\"Feature\",\"properties\":"); } else { /* any other Feature except the first one */ if (indented) fprintf (out, ", {\r\n\t\t\"type\" : \"Feature\",\r\n\t\t\"properties\" : "); else fprintf (out, ",{\"type\":\"Feature\",\"properties\":"); } for (c = 1; c < cols; c++) { /* Properties */ const char *col_name = sqlite3_column_name (stmt, c); char *norm_name = do_normalize_case (col_name, colname_case); char *xcol_name = gaiaDoubleQuotedSql (norm_name); free (norm_name); if (c == 1) { if (indented) fprintf (out, "{\r\n\t\t\t\"%s\" : ", xcol_name); else fprintf (out, "{\"%s\":", xcol_name); } else { if (indented) fprintf (out, ",\r\n\t\t\t\"%s\" : ", xcol_name); else fprintf (out, ",\"%s\":", xcol_name); } free (xcol_name); switch (sqlite3_column_type (stmt, c)) { case SQLITE_INTEGER: ival = sqlite3_column_int64 (stmt, c); fprintf (out, "%lld", ival); break; case SQLITE_FLOAT: dval = sqlite3_column_double (stmt, c); fprintf (out, "%f", dval); break; case SQLITE_TEXT: tval = (const char *) sqlite3_column_text (stmt, c); xtval = gaiaDoubleQuotedSql (tval); fprintf (out, "\"%s\"", xtval); free (xtval); break; case SQLITE_BLOB: fprintf (out, "\"BLOB value\""); break; case SQLITE_NULL: default: fprintf (out, "null"); break; }; } /* geometry */ if (indented) fprintf (out, "\r\n\t\t},\r\n\t\t\"geometry\" : "); else fprintf (out, "},\"geomety\":"); switch (sqlite3_column_type (stmt, 0)) { case SQLITE_NULL: fprintf (out, "null"); break; default: tval = (const char *) sqlite3_column_text (stmt, 0); fprintf (out, "%s", tval); break; }; /* end Feature */ if (indented) fprintf (out, "\r\n\t}"); else fprintf (out, "}"); rows++; } else { goto sql_error; } } if (rows == 0) { goto empty_result_set; } if (indented) fprintf (out, "]\r\n}\r\n"); else fprintf (out, "]}"); sqlite3_finalize (stmt); fclose (out); *xrows = rows; return 1; sql_error: /* an SQL error occurred */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } *error_message = sqlite3_mprintf ("Dump GeoJSON2 error: %s\n", sqlite3_errmsg (sqlite)); return 0; no_file: /* Output file could not be created / opened */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } if (geoname != NULL) free (geoname); *error_message = sqlite3_mprintf ("ERROR: unable to open '%s' for writing\n", outfile_path); return 0; empty_result_set: /* the result set is empty - nothing to do */ if (stmt) { sqlite3_finalize (stmt); } if (out) { fclose (out); } *error_message = sqlite3_mprintf ("The SQL SELECT returned no data to export...\n"); return 0; no_geom: /* not a valid Geometry Column */ if (out) { fclose (out); } *error_message = sqlite3_mprintf ("Not a valid Geometry Column.\n"); return 0; no_sql: /* unable to create a valid SQL query */ if (out) { fclose (out); } *error_message = sqlite3_mprintf ("Unable to create a valid SQL query.\n"); return 0; } SPATIALITE_DECLARE int load_geojson (sqlite3 * sqlite, char *path, char *table, char *geom_col, int spatial_index, int srid, int colname_case, int *rows, char **error_message) { /* Loads an external GeoJSON file into a newly created table */ FILE *in = NULL; sqlite3_stmt *stmt = NULL; geojson_parser_ptr parser = NULL; geojson_feature_ptr ft; int i; int ret; int pending = 0; char *sql; int ins_rows = 0; *error_message = NULL; /* attempting to open the GeoJSON file for reading */ in = fopen (path, "rb"); if (in == NULL) { *error_message = sqlite3_mprintf ("GeoJSON parser: unable to open %s for reading\n", path); return 0; } /* creating the GeoJSON parser */ parser = geojson_create_parser (in); if (!geojson_parser_init (parser, error_message)) goto err; if (!geojson_create_features_index (parser, error_message)) goto err; if (!geojson_check_features (parser, error_message)) goto err; /* creating the output table */ sql = geojson_sql_create_table (parser, table, colname_case); if (sql == NULL) goto err; ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: unable to create the output table (%s)\n", sqlite3_errmsg (sqlite)); goto err; } /* adding the Geometry Column */ sql = geojson_sql_add_geometry (parser, table, geom_col, colname_case, srid); if (sql == NULL) goto err; ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: unable to create the Geometry column (%s)\n", sqlite3_errmsg (sqlite)); goto err; } if (spatial_index) { /* creating the Spatial Index */ sql = geojson_sql_create_rtree (table, geom_col, colname_case); if (sql == NULL) goto err; ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: unable to create the SpatialIndex (%s)\n", sqlite3_errmsg (sqlite)); goto err; } } /* the whole import will be enclosed in a single Transaction */ ret = sqlite3_exec (sqlite, "SAVEPOINT import_geo_json", NULL, NULL, NULL); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: SAVEPOINT error (%s)\n", sqlite3_errmsg (sqlite)); goto err; } pending = 1; sql = geojson_sql_insert_into (parser, table); ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); sqlite3_free (sql); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: INSERT INTO error (%s)\n", sqlite3_errmsg (sqlite)); goto err; } for (i = 0; i < parser->count; i++) { /* inserting all features into the output table */ ft = parser->features + i; if (geojson_init_feature (parser, ft, error_message)) { /* inserting a single Feature */ geojson_column_ptr col; int cnt = 1; sqlite3_reset (stmt); sqlite3_clear_bindings (stmt); col = parser->first_col; while (col != NULL) { /* binding column values */ geojson_property_ptr prop = geojson_get_property_by_name (ft, col->name); if (prop == NULL) sqlite3_bind_null (stmt, cnt++); else { switch (prop->type) { case GEOJSON_TEXT: sqlite3_bind_text (stmt, cnt++, prop->txt_value, strlen (prop->txt_value), SQLITE_STATIC); break; case GEOJSON_INTEGER: sqlite3_bind_int64 (stmt, cnt++, prop->int_value); break; case GEOJSON_DOUBLE: sqlite3_bind_double (stmt, cnt++, prop->dbl_value); break; case GEOJSON_FALSE: sqlite3_bind_int (stmt, cnt++, 0); break; case GEOJSON_TRUE: sqlite3_bind_int (stmt, cnt++, 0); break; case GEOJSON_NULL: default: sqlite3_bind_null (stmt, cnt++); break; }; } col = col->next; } if (ft->geometry == NULL) sqlite3_bind_null (stmt, cnt++); else { gaiaGeomCollPtr geo = gaiaParseGeoJSON ((const unsigned char *) (ft->geometry)); if (geo != NULL) { /* binding the Geometry BLOB */ unsigned char *blob; int blob_size; geo->Srid = srid; gaiaToSpatiaLiteBlobWkb (geo, &blob, &blob_size); sqlite3_bind_blob (stmt, cnt, blob, blob_size, free); gaiaFreeGeomColl (geo); } else { *error_message = sqlite3_mprintf ("GeoJSON import: invalid Geometry (fid=%d)\n", ft->fid); goto err; } } /* inserting the Feature into the DB Table */ ret = sqlite3_step (stmt); if (ret == SQLITE_DONE || ret == SQLITE_ROW) ins_rows++; else { *error_message = sqlite3_mprintf ("GeoJSON import: INSERT INTO failure (fid=%d) %s\n", ft->fid, sqlite3_errmsg (sqlite)); goto err; } geojson_reset_feature (ft); } else goto err; } sqlite3_finalize (stmt); stmt = NULL; /* Committing the still pending Transaction */ ret = sqlite3_exec (sqlite, "RELEASE SAVEPOINT import_geo_json", NULL, NULL, NULL); if (ret != SQLITE_OK) { *error_message = sqlite3_mprintf ("GeoJSON import: RELEASE SAVEPOINT error (%s)\n", sqlite3_errmsg (sqlite)); goto err; } geojson_destroy_parser (parser); *rows = ins_rows; return 1; err: if (stmt != NULL) sqlite3_finalize (stmt); if (pending) { /* Rolling back the Transaction */ sqlite3_exec (sqlite, "ROLLBAKC TO SAVEPOINT import_geo_json", NULL, NULL, NULL); sqlite3_exec (sqlite, "RELEASE SAVEPOINT import_geo_json", NULL, NULL, NULL); } geojson_destroy_parser (parser); *rows = 0; return 0; } #ifdef ENABLE_MINIZIP /* MINIZIP is enabled */ GAIAGEO_DECLARE char * gaiaReadWktFromZipShp (const char *zip_path, const char *basename) { /* attempting to read the .PRJ member of some zipped Shapefile */ char *wkt = NULL; unzFile uf = NULL; struct zip_mem_shapefile *mem_shape = NULL; if (zip_path == NULL) { spatialite_e ("read_wkt_from_zipshp error: <%s>\n", "NULL zipfile path"); return NULL; } /* opening the Zipfile expected to contain the Shapefile */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); return NULL; } /* parsing the Zipfile directory */ mem_shape = do_list_zipfile_dir (uf, basename, 0); if (mem_shape == NULL) { spatialite_e ("No SHP %s with Zipfile\n", basename); goto stop; } /* unzipping the PRJ member (if any) */ do_read_zipfile_file (uf, mem_shape, GAIA_ZIPFILE_PRJ); if (mem_shape->prj.buf != NULL) { wkt = malloc (mem_shape->prj.size + 1); memcpy (wkt, mem_shape->prj.buf, mem_shape->prj.size); *(wkt + mem_shape->prj.size) = '\0'; } stop: unzClose (uf); if (mem_shape != NULL) destroy_zip_mem_shapefile (mem_shape); return wkt; } GAIAGEO_DECLARE int gaiaZipfileNumSHP (const char *zip_path, int *count) { /* attempting to count how many Shapefiles are within a given Zipfile */ int ret; int retval = 1; struct zip_mem_shp_item *item; struct zip_mem_shp_list *list = alloc_zip_mem_shp_list (); unzFile uf = NULL; *count = 0; if (zip_path == NULL) { spatialite_e ("zipfile NumSHP error: <%s>\n", "NULL zipfile path"); retval = 0; goto stop; } /* opening the Zipfile expected to contain the Shapefile */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); retval = 0; goto stop; } /* sniffing the Zipfile */ ret = do_sniff_zipfile_dir (uf, list, 0); if (!ret) { retval = 0; goto stop; } item = list->first; while (item != NULL) { /* counting how many Shapefiles are there */ if (item->shp && item->shx && item->dbf) *count += 1; item = item->next; } stop: unzClose (uf); destroy_zip_mem_shp_list (list); return retval; } GAIAGEO_DECLARE char * gaiaZipfileShpN (const char *zip_path, int idx) { /* attempting to return the Nth Shapefile's basename fromt within a given Zipfile */ int ret; int count = 0; char *basename = NULL; struct zip_mem_shp_item *item; struct zip_mem_shp_list *list = alloc_zip_mem_shp_list (); unzFile uf = NULL; count = 0; if (zip_path == NULL) { spatialite_e ("zipfile NumSHP error: <%s>\n", "NULL zipfile path"); goto stop; } /* opening the Zipfile expected to contain the Shapefile */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); goto stop; } /* sniffing the Zipfile */ ret = do_sniff_zipfile_dir (uf, list, 0); if (!ret) goto stop; item = list->first; while (item != NULL) { /* counting how many Shapefiles are there */ if (item->shp && item->shx && item->dbf) count++; if (count == idx) { int len = strlen (item->basename); basename = malloc (len + 1); strcpy (basename, item->basename); break; } item = item->next; } stop: unzClose (uf); destroy_zip_mem_shp_list (list); return basename; } GAIAGEO_DECLARE int gaiaZipfileNumDBF (const char *zip_path, int *count) { /* attempting to count how many DBF files are within a given Zipfile */ int ret; int retval = 1; struct zip_mem_shp_item *item; struct zip_mem_shp_list *list = alloc_zip_mem_shp_list (); unzFile uf = NULL; *count = 0; if (zip_path == NULL) { spatialite_e ("zipfile NumDBF error: <%s>\n", "NULL zipfile path"); retval = 0; goto stop; } /* opening the Zipfile expected to contain the DBF file */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); retval = 0; goto stop; } /* sniffing the Zipfile */ ret = do_sniff_zipfile_dir (uf, list, 1); if (!ret) { retval = 0; goto stop; } item = list->first; while (item != NULL) { /* counting how many DBF files are there */ if (item->dbf) *count += 1; item = item->next; } stop: unzClose (uf); destroy_zip_mem_shp_list (list); return retval; } GAIAGEO_DECLARE char * gaiaZipfileDbfN (const char *zip_path, int idx) { /* attempting to return the Nth DBF filename fromt within a given Zipfile */ int ret; int count = 0; char *filename = NULL; struct zip_mem_shp_item *item; struct zip_mem_shp_list *list = alloc_zip_mem_shp_list (); unzFile uf = NULL; count = 0; if (zip_path == NULL) { spatialite_e ("zipfile NumDBF error: <%s>\n", "NULL zipfile path"); goto stop; } /* opening the Zipfile expected to contain the DBF file */ uf = unzOpen64 (zip_path); if (uf == NULL) { spatialite_e ("Unable to Open %s\n", zip_path); goto stop; } /* sniffing the Zipfile */ ret = do_sniff_zipfile_dir (uf, list, 1); if (!ret) goto stop; item = list->first; while (item != NULL) { /* counting how many DBF files are there */ if (item->dbf) count++; if (count == idx) { int len = strlen (item->basename); filename = malloc (len + 1); strcpy (filename, item->basename); break; } item = item->next; } stop: unzClose (uf); destroy_zip_mem_shp_list (list); return filename; } #endif /* end MINIZIP */ #endif /* end ICONV (SHP) */ static int is_table (sqlite3 * sqlite, const char *table) { /* check if this one really is a TABLE */ char *sql; int ret; char **results; ................................................................................ else sprintf (err_msg, "XL datasource '%s' is not valid\n", path); *rows = 0; return 0; } #endif /* FreeXL enabled/disabled */ |
Changes to src/shapefiles/validator.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* validator.c -- implements geometry validation and repair version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* validator.c -- implements geometry validation and repair version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the GPL or the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only |
Changes to src/spatialite/create_routing.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 .... 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 |
/* create_routing.c -- Creating a VirtualRouting from an input table version 4.5, 2017 December 15 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2017 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ default: return 0; }; *srid = xsrid; *is_geographic = geographic; return 1; } if (count == 0) { /* testing for a possible Spatial View */ if (do_search_view (handle, table, geom, srid, dims, is_geographic)) return 1; } return 0; } static int do_check_input_table (sqlite3 * db_handle, const void *cache, const char *input_table, const char *from_column, const char *to_column, const char *geom_column, ................................................................................ ("%Q is not a valid Spatial Table (LINESTRING)", table); else msg = sqlite3_mprintf ("%Q.%Q is not a valid Spatial Table (LINESTRING)", table, geom_column); gaia_create_routing_set_error (cache, msg); sqlite3_free(msg); return 0; } /* checking the table's columns */ if (db_prefix == NULL) db_prefix = "MAIN"; xprefix = gaiaDoubleQuotedSql (db_prefix); |
| | | | | | | | | |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 .... 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 |
/* create_routing.c -- Creating a VirtualRouting from an input table version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2017-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ default: return 0; }; *srid = xsrid; *is_geographic = geographic; return 1; } if (count == 0) { /* testing for a possible Spatial View */ if (do_search_view (handle, table, geom, srid, dims, is_geographic)) return 1; } return 0; } static int do_check_input_table (sqlite3 * db_handle, const void *cache, const char *input_table, const char *from_column, const char *to_column, const char *geom_column, ................................................................................ ("%Q is not a valid Spatial Table (LINESTRING)", table); else msg = sqlite3_mprintf ("%Q.%Q is not a valid Spatial Table (LINESTRING)", table, geom_column); gaia_create_routing_set_error (cache, msg); sqlite3_free (msg); return 0; } /* checking the table's columns */ if (db_prefix == NULL) db_prefix = "MAIN"; xprefix = gaiaDoubleQuotedSql (db_prefix); |
Changes to src/spatialite/dbobj_scopes.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* dbobj_scopes.c -- DB objects scopes version 5.0, 2018 May 25 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2018 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* dbobj_scopes.c -- DB objects scopes version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/extra_tables.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* extra_tables.c -- Creating all SLD/SE and ISO Metadata extra tables version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* extra_tables.c -- Creating all SLD/SE and ISO Metadata extra tables version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/mbrcache.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* mbrcache.c -- SQLite3 extension [MBR CACHE VIRTUAL TABLE] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* mbrcache.c -- SQLite3 extension [MBR CACHE VIRTUAL TABLE] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/metatables.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .... 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 .... 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 |
/* metatables.c -- creating the metadata tables and related triggers version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> (implementing Android support) Mark Johnson <mj10777@googlemail.com> ................................................................................ "auth_srid INTEGER NOT NULL,\n" "ref_sys_name TEXT NOT NULL DEFAULT 'Unknown',\n" "proj4text TEXT NOT NULL,\n" "srtext TEXT NOT NULL DEFAULT 'Undefined')", prefix); free (prefix); ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); sqlite3_free(sql_statement); if (ret != SQLITE_OK) goto error; prefix = gaiaDoubleQuotedSql (db_prefix); sql_statement = sqlite3_mprintf ("CREATE UNIQUE INDEX \"%s\".idx_spatial_ref_sys \n" "ON spatial_ref_sys (auth_srid, auth_name)", prefix); free (prefix); ................................................................................ "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: " "f_geometry_column value must not contain a double quote')\n" "WHERE NEW.f_geometry_column LIKE ('%%\"%%');\n" "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: " "f_geometry_column value must be lower case')\n" "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n" "END", prefix); free(prefix); ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); sqlite3_free (sql); if (ret != SQLITE_OK) { spatialite_e ("SQL error: %s: %s\n", sql, errMsg); sqlite3_free (errMsg); return 0; |
| | | | |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .... 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 .... 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 |
/* metatables.c -- creating the metadata tables and related triggers version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> (implementing Android support) Mark Johnson <mj10777@googlemail.com> ................................................................................ "auth_srid INTEGER NOT NULL,\n" "ref_sys_name TEXT NOT NULL DEFAULT 'Unknown',\n" "proj4text TEXT NOT NULL,\n" "srtext TEXT NOT NULL DEFAULT 'Undefined')", prefix); free (prefix); ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); sqlite3_free (sql_statement); if (ret != SQLITE_OK) goto error; prefix = gaiaDoubleQuotedSql (db_prefix); sql_statement = sqlite3_mprintf ("CREATE UNIQUE INDEX \"%s\".idx_spatial_ref_sys \n" "ON spatial_ref_sys (auth_srid, auth_name)", prefix); free (prefix); ................................................................................ "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: " "f_geometry_column value must not contain a double quote')\n" "WHERE NEW.f_geometry_column LIKE ('%%\"%%');\n" "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: " "f_geometry_column value must be lower case')\n" "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n" "END", prefix); free (prefix); ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); sqlite3_free (sql); if (ret != SQLITE_OK) { spatialite_e ("SQL error: %s: %s\n", sql, errMsg); sqlite3_free (errMsg); return 0; |
Changes to src/spatialite/pause.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* pause.c -- implementing PAUSE() for both Unix/Linux and Windows version 5.0, 2018 May 28 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2018 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* pause.c -- implementing PAUSE() for both Unix/Linux and Windows version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/se_helpers.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .... 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 |
/* se_helpers.c -- SLD/SE helper functions version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ sqlite3_finalize (stmt); return retval; stop: return 0; } SPATIALITE_PRIVATE int unregister_raster_styled_layer (void *p_sqlite, const char *coverage_name, int style_id, const char *style_name) { /* auxiliary function: removes a Raster Styled Layer definition */ sqlite3 *sqlite = (sqlite3 *) p_sqlite; sqlite3_int64 id; if (coverage_name == NULL) |
| | | |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 .... 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 |
/* se_helpers.c -- SLD/SE helper functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ sqlite3_finalize (stmt); return retval; stop: return 0; } SPATIALITE_PRIVATE int unregister_raster_styled_layer (void *p_sqlite, const char *coverage_name, int style_id, const char *style_name) { /* auxiliary function: removes a Raster Styled Layer definition */ sqlite3 *sqlite = (sqlite3 *) p_sqlite; sqlite3_int64 id; if (coverage_name == NULL) |
Changes to src/spatialite/spatialite.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ..... 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 11142 11143 11144 11145 11146 11147 11148 11149 11150 11151 11152 11153 11154 11155 11156 11157 11158 11159 11160 11161 11162 11163 11164 11165 11166 11167 11168 11169 11170 11171 11172 11173 11174 11175 11176 11177 11178 11179 11180 11181 11182 11183 11184 11185 11186 11187 11188 11189 11190 11191 11192 11193 11194 11195 11196 11197 11198 11199 11200 11201 11202 11203 11204 11205 11206 11207 11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 11218 11219 11220 11221 11222 11223 11224 11225 11226 11227 11228 11229 11230 11231 11232 11233 11234 11235 11236 11237 11238 11239 11240 11241 11242 11243 11244 11245 11246 11247 11248 11249 11250 11251 11252 11253 11254 11255 11256 11257 11258 11259 11260 11261 11262 11263 11264 11265 11266 11267 11268 11269 11270 11271 11272 11273 11274 11275 11276 11277 ..... 34143 34144 34145 34146 34147 34148 34149 34150 34151 34152 34153 34154 34155 34156 ..... 34227 34228 34229 34230 34231 34232 34233 34234 34235 34236 34237 34238 34239 34240 ..... 39814 39815 39816 39817 39818 39819 39820 39821 39822 39823 39824 39825 39826 39827 39828 39829 ..... 39900 39901 39902 39903 39904 39905 39906 39907 39908 39909 39910 39911 39912 39913 39914 39915 39916 39917 39918 39919 39920 39921 39922 39923 39924 39925 39926 39927 39928 39929 39930 39931 39932 39933 39934 39935 39936 39937 39938 39939 39940 39941 39942 39943 39944 39945 39946 39947 39948 39949 39950 39951 39952 39953 39954 39955 39956 39957 39958 39959 39960 39961 39962 39963 39964 39965 39966 39967 39968 39969 39970 39971 39972 39973 39974 39975 39976 39977 39978 39979 39980 39981 39982 39983 39984 39985 39986 39987 39988 39989 39990 39991 39992 39993 39994 39995 39996 39997 39998 39999 40000 40001 40002 40003 40004 40005 40006 40007 40008 40009 40010 40011 40012 40013 40014 40015 40016 40017 40018 40019 40020 40021 40022 40023 40024 40025 40026 40027 40028 40029 40030 40031 40032 40033 40034 40035 40036 40037 40038 40039 40040 40041 40042 40043 40044 40045 40046 40047 40048 40049 40050 40051 40052 40053 40054 40055 40056 40057 40058 40059 40060 40061 40062 40063 40064 40065 40066 40067 40068 40069 40070 40071 40072 40073 40074 40075 40076 40077 40078 40079 40080 40081 40082 40083 40084 40085 40086 40087 40088 40089 40090 40091 40092 40093 40094 40095 40096 40097 40098 40099 40100 40101 40102 40103 40104 40105 40106 40107 40108 40109 40110 40111 40112 40113 40114 40115 40116 40117 40118 40119 40120 40121 40122 40123 40124 40125 40126 40127 40128 40129 40130 40131 40132 40133 40134 40135 40136 40137 40138 40139 40140 40141 40142 40143 40144 40145 40146 40147 40148 40149 40150 40151 40152 40153 40154 40155 40156 40157 40158 40159 40160 40161 40162 40163 40164 40165 40166 40167 40168 40169 40170 40171 40172 40173 40174 40175 40176 40177 40178 40179 40180 40181 40182 40183 40184 40185 40186 40187 40188 40189 40190 40191 40192 40193 40194 40195 40196 40197 40198 40199 40200 40201 40202 40203 40204 40205 40206 40207 40208 40209 40210 40211 40212 40213 40214 40215 40216 40217 40218 40219 40220 40221 40222 40223 40224 40225 40226 40227 40228 40229 40230 40231 40232 40233 40234 40235 40236 40237 ..... 49130 49131 49132 49133 49134 49135 49136 49137 49138 49139 49140 49141 49142 49143 49144 49145 ..... 49146 49147 49148 49149 49150 49151 49152 49153 49154 49155 49156 49157 49158 49159 ..... 50953 50954 50955 50956 50957 50958 50959 50960 50961 50962 50963 50964 50965 50966 50967 50968 50969 50970 50971 50972 50973 50974 50975 50976 50977 50978 50979 50980 50981 ..... 51010 51011 51012 51013 51014 51015 51016 51017 51018 51019 51020 51021 51022 51023 |
/* spatialite.c -- SQLite3 spatial extension version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> (implementing Android support) Mark Johnson <mj10777@googlemail.com> ................................................................................ if (ret != SQLITE_OK) sqlite3_free (errMsg); } sqlite3_result_int (context, 0); return; } #ifdef ENABLE_MINIZIP /* only id MINIZIP is enabled */ static void fnct_Zipfile_NumSHP (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / Zipfile_NumSHP(zip_path TEXT) / / return the total number of Shapefiles contained within a given Zipfile / 0 if not Shapefile exists / or NULL on error or invalid arguments */ const char *zip_path; int count; GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) zip_path = (const char *) sqlite3_value_text (argv[0]); else { sqlite3_result_null (context); return; } /* searching for Shapefiles */ if (!gaiaZipfileNumSHP (zip_path, &count)) { sqlite3_result_null (context); return; } sqlite3_result_int (context, count); } static void fnct_Zipfile_ShpN (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / Zipfile_ShpN(zip_path TEXT, idx INTEGER) / / return the name of the Nth Shapefile from within a Zipfile / or NULL on error or invalid arguments */ const char *zip_path; int idx; char *basename; GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) zip_path = (const char *) sqlite3_value_text (argv[0]); else { sqlite3_result_null (context); return; } if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) idx = sqlite3_value_int (argv[1]); else { sqlite3_result_null (context); return; } /* searching the Nth Shapefile */ basename = gaiaZipfileShpN (zip_path, idx); if (basename == NULL) { sqlite3_result_null (context); return; } sqlite3_result_text (context, basename, strlen (basename), free); } static void fnct_Zipfile_NumDBF (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / Zipfile_NumDBF(zip_path TEXT) / / return the total number of DBF files contained within a given Zipfile / 0 if not DBF file exists / or NULL on error or invalid arguments */ const char *zip_path; int count; GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) zip_path = (const char *) sqlite3_value_text (argv[0]); else { sqlite3_result_null (context); return; } /* searching for DBF files */ if (!gaiaZipfileNumDBF (zip_path, &count)) { sqlite3_result_null (context); return; } sqlite3_result_int (context, count); } static void fnct_Zipfile_DbfN (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / Zipfile_DbfN(zip_path TEXT, idx INTEGER) / / return the name of the Nth DBF file from within a Zipfile / or NULL on error or invalid arguments */ const char *zip_path; int idx; char *filename; GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) zip_path = (const char *) sqlite3_value_text (argv[0]); else { sqlite3_result_null (context); return; } if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) idx = sqlite3_value_int (argv[1]); else { sqlite3_result_null (context); return; } /* searching the Nth DBF file */ filename = gaiaZipfileDbfN (zip_path, idx); if (filename == NULL) { sqlite3_result_null (context); return; } sqlite3_result_text (context, filename, strlen (filename), free); } #endif /* end MINIZIP */ static gaiaPointPtr simplePoint (gaiaGeomCollPtr geo) { /* helper function / if this GEOMETRY contains only one POINT, and no other elementary geometry / the POINT address will be returned / otherwise NULL will be returned ................................................................................ if (checksum == NULL) sqlite3_result_null (context); else sqlite3_result_text (context, checksum, strlen (checksum), free); } #if OMIT_ICONV == 0 /* ICONV is absolutely required */ static void fnct_EncodeURL (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / EncodeURL(text url) / or ................................................................................ /* decoding the URL */ url = gaiaDecodeURL (encoded, in_charset); if (url == NULL) sqlite3_result_null (context); else sqlite3_result_text (context, url, strlen (url), free); } #endif /* ICONV enabled/disabled */ static void fnct_DirNameFromPath (sqlite3_context * context, int argc, sqlite3_value ** argv) { ................................................................................ if (rows < 0 || !ret) sqlite3_result_null (context); else sqlite3_result_int (context, rows); } #endif /* end ICONV supported */ static void fnct_ExportKML (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ExportKML(TEXT table, TEXT geom_column, TEXT filename) / ExportKML(TEXT table, TEXT geom_column, TEXT filename, INT precision) / ExportKML(TEXT table, TEXT geom_column, TEXT filename, INT precision, ................................................................................ if (rows < 0 || !ret) sqlite3_result_null (context); else sqlite3_result_int (context, rows); } static void fnct_ExportGeoJSON (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ExportGeoJSON(TEXT table, TEXT geom_column, TEXT filename) / ExportGeoJSON(TEXT table, TEXT geom_column, TEXT filename, / TEXT format) / ExportGeoJSON(TEXT table, TEXT geom_column, TEXT filename, / TEXT format, INT precision) / / returns: / the number of exported rows / NULL on invalid arguments */ int ret; char *table; char *geom_col; char *path; int format = 0; int precision = 8; char *fmt = NULL; int rows; sqlite3 *db_handle = sqlite3_context_db_handle (context); GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } table = (char *) sqlite3_value_text (argv[0]); if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } geom_col = (char *) sqlite3_value_text (argv[1]); if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } path = (char *) sqlite3_value_text (argv[2]); if (argc > 3) { if (sqlite3_value_type (argv[3]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } else { fmt = (char *) sqlite3_value_text (argv[3]); if (strcasecmp (fmt, "none") == 0) format = 0; else if (strcasecmp (fmt, "MBR") == 0) format = 1; else if (strcasecmp (fmt, "withShortCRS") == 0) format = 2; else if (strcasecmp (fmt, "MBRwithShortCRS") == 0) format = 3; else if (strcasecmp (fmt, "withLongCRS") == 0) format = 4; else if (strcasecmp (fmt, "MBRwithLongCRS") == 0) format = 5; else { sqlite3_result_null (context); return; } } } if (argc > 4) { if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } else precision = sqlite3_value_int (argv[4]); } ret = dump_geojson_ex (db_handle, table, geom_col, path, precision, format, &rows); if (rows < 0 || !ret) sqlite3_result_null (context); else sqlite3_result_int (context, rows); } static void fnct_ExportGeoJSON2 (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename) / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename, / INT precision) / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename, / INT precision, INT lon_lat) / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename, / INT precision, INT lon_lat, INT M_coords) / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename, / INT precision, INT lon_lat, INT M_coords, / INT indented) / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename, / INT precision, INT lon_lat, INT M_coords, / INT indented, TEXT colname_case) / / returns: / the number of exported rows / NULL on invalid arguments */ int ret; char *table; char *geom_col; char *path; int precision = 8; int lon_lat = 1; int m_coords = 0; int indented = 1; int colname_case = GAIA_DBF_COLNAME_LOWERCASE; int rows; char *errmsg = NULL; sqlite3 *db_handle = sqlite3_context_db_handle (context); GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } table = (char *) sqlite3_value_text (argv[0]); if (sqlite3_value_type (argv[1]) == SQLITE_NULL) geom_col = NULL; else { if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } geom_col = (char *) sqlite3_value_text (argv[1]); } if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } path = (char *) sqlite3_value_text (argv[2]); if (argc > 3) { if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } precision = sqlite3_value_int (argv[3]); } if (argc > 4) { if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } lon_lat = sqlite3_value_int (argv[4]); } if (argc > 5) { if (sqlite3_value_type (argv[5]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } m_coords = sqlite3_value_int (argv[5]); } if (argc > 6) { if (sqlite3_value_type (argv[6]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } indented = sqlite3_value_int (argv[6]); } if (argc > 7) { if (sqlite3_value_type (argv[7]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } else { const char *val = (char *) sqlite3_value_text (argv[7]); if (strcasecmp (val, "UPPER") == 0 || strcasecmp (val, "UPPERCASE") == 0) colname_case = GAIA_DBF_COLNAME_UPPERCASE; else if (strcasecmp (val, "SAME") == 0 || strcasecmp (val, "SAMECASE") == 0) colname_case = GAIA_DBF_COLNAME_CASE_IGNORE; else colname_case = GAIA_DBF_COLNAME_LOWERCASE; } } ret = dump_geojson2 (db_handle, table, geom_col, path, precision, lon_lat, m_coords, indented, colname_case, &rows, &errmsg); if (errmsg != NULL) { spatialite_e ("%s", errmsg); sqlite3_free (errmsg); } if (rows < 0 || !ret) sqlite3_result_null (context); else sqlite3_result_int (context, rows); } static void fnct_ImportGeoJSON (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ImportGeoJSON(TEXT filename, TEXT table) / ImportGeoJSON(TEXT filename, TEXT table, TEXT geom_column) / ImportGeoJSON(TEXT filename, TEXT table, TEXT geom_column, / INT spatial_index) / ImportGeoJSON(TEXT filename, TEXT table, TEXT geom_column, / INT spatial_index, INT srid) / ImportGeoJSON(TEXT filename, TEXT table, TEXT geom_column, / INT spatial_index, INT srid, TEXT colname_case) / / returns: / the number of imported rows / NULL on invalid arguments */ int ret; char *table; char *geom_col = "geometry"; char *path; int spatial_index = 0; int srid = 4326; int colname_case = GAIA_DBF_COLNAME_LOWERCASE; int rows; char *errmsg = NULL; sqlite3 *db_handle = sqlite3_context_db_handle (context); GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } path = (char *) sqlite3_value_text (argv[0]); if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } table = (char *) sqlite3_value_text (argv[1]); if (argc > 2) { if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } geom_col = (char *) sqlite3_value_text (argv[2]); } if (argc > 3) { if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } spatial_index = sqlite3_value_int (argv[3]); } if (argc > 4) { if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } srid = sqlite3_value_int (argv[4]); } if (argc > 5) { if (sqlite3_value_type (argv[5]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } else { const char *val = (char *) sqlite3_value_text (argv[5]); if (strcasecmp (val, "UPPER") == 0 || strcasecmp (val, "UPPERCASE") == 0) colname_case = GAIA_DBF_COLNAME_UPPERCASE; else if (strcasecmp (val, "SAME") == 0 || strcasecmp (val, "SAMECASE") == 0) colname_case = GAIA_DBF_COLNAME_CASE_IGNORE; else colname_case = GAIA_DBF_COLNAME_LOWERCASE; } } ret = load_geojson (db_handle, path, table, geom_col, spatial_index, srid, colname_case, &rows, &errmsg); if (errmsg != NULL) { spatialite_e ("%s", errmsg); sqlite3_free (errmsg); } if (rows < 0 || !ret) sqlite3_result_null (context); else sqlite3_result_int (context, rows); } #ifdef ENABLE_LIBXML2 /* including LIBXML2 */ static void wfs_page_done (int features, void *ptr) { /* WFS progress handler callback */ if (ptr == NULL) ................................................................................ sqlite3_create_function_v2 (db, "DecodeURL", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_DecodeURL, 0, 0, 0); sqlite3_create_function_v2 (db, "DecodeURL", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_DecodeURL, 0, 0, 0); #endif /* ICONV enabled/disabled */ #ifdef ENABLE_MINIZIP /* only if MINIZIP is enabled */ sqlite3_create_function_v2 (db, "Zipfile_NumSHP", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Zipfile_NumSHP, 0, 0, 0); sqlite3_create_function_v2 (db, "Zipfile_ShpN", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Zipfile_ShpN, 0, 0, 0); ................................................................................ sqlite3_create_function_v2 (db, "Zipfile_NumDBF", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Zipfile_NumDBF, 0, 0, 0); sqlite3_create_function_v2 (db, "Zipfile_DbfN", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Zipfile_DbfN, 0, 0, 0); #endif /* end MINIZIP */ sqlite3_create_function_v2 (db, "DirNameFromPath", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_DirNameFromPath, 0, 0, 0); sqlite3_create_function_v2 (db, "FullFileNameFromPath", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_FullFileNameFromPath, 0, 0, 0); ................................................................................ fnct_ExportSHP, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportSHP", 5, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_ExportSHP, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportSHP", 6, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_ExportSHP, 0, 0, 0); #endif /* ICONV enabled */ sqlite3_create_function_v2 (db, "ExportKML", 3, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportKML, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportKML", 4, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportKML, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportKML", 5, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportKML, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportKML", 6, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportKML, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportGeoJSON", 3, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportGeoJSON, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportGeoJSON", 4, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportGeoJSON, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportGeoJSON", 5, ................................................................................ fnct_ImportGeoJSON, 0, 0, 0); sqlite3_create_function_v2 (db, "ImportGeoJSON", 5, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ImportGeoJSON, 0, 0, 0); sqlite3_create_function_v2 (db, "ImportGeoJSON", 6, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ImportGeoJSON, 0, 0, 0); sqlite3_create_function_v2 (db, "eval", 1, SQLITE_UTF8, 0, fnct_EvalFunc, 0, 0, 0); sqlite3_create_function_v2 (db, "eval", 2, SQLITE_UTF8, 0, fnct_EvalFunc, 0, 0, 0); sqlite3_create_function_v2 (db, "SqlProc_FromFile", 1, SQLITE_UTF8, |
| | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > < < | < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < > > < < < < < < < < < < < < < < < > > > > > > > > > > > > > > > |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ..... 11128 11129 11130 11131 11132 11133 11134 11135 11136 11137 11138 11139 11140 11141 ..... 34007 34008 34009 34010 34011 34012 34013 34014 34015 34016 34017 34018 34019 34020 34021 34022 34023 34024 34025 34026 34027 34028 34029 34030 34031 34032 34033 34034 34035 34036 34037 34038 34039 34040 34041 34042 34043 34044 34045 34046 34047 34048 34049 34050 34051 34052 34053 34054 34055 34056 34057 34058 34059 34060 34061 34062 34063 34064 34065 34066 34067 34068 34069 34070 34071 34072 34073 34074 34075 34076 34077 34078 34079 34080 34081 34082 34083 34084 34085 34086 34087 34088 34089 34090 34091 34092 34093 34094 34095 34096 34097 34098 34099 34100 34101 34102 34103 34104 34105 34106 34107 34108 34109 34110 34111 34112 34113 34114 34115 34116 34117 34118 34119 34120 34121 34122 34123 34124 34125 34126 34127 34128 34129 34130 34131 34132 34133 34134 34135 34136 34137 34138 34139 34140 34141 34142 34143 34144 34145 34146 34147 34148 34149 34150 34151 34152 34153 34154 34155 34156 34157 34158 34159 34160 34161 34162 34163 34164 34165 34166 34167 34168 34169 34170 34171 34172 34173 34174 34175 34176 34177 34178 34179 34180 34181 34182 34183 34184 34185 34186 34187 34188 34189 34190 34191 34192 34193 34194 34195 34196 34197 34198 34199 34200 34201 34202 34203 34204 34205 34206 34207 34208 34209 34210 34211 34212 34213 34214 34215 34216 34217 34218 34219 34220 34221 34222 34223 34224 34225 34226 34227 34228 34229 34230 34231 34232 34233 34234 34235 34236 34237 34238 34239 34240 34241 34242 34243 34244 34245 34246 34247 34248 34249 34250 34251 34252 34253 34254 34255 34256 34257 34258 34259 34260 34261 34262 34263 34264 34265 34266 34267 34268 34269 34270 34271 34272 34273 34274 34275 34276 34277 34278 34279 34280 34281 34282 34283 34284 34285 34286 34287 34288 34289 34290 34291 34292 34293 34294 34295 34296 34297 34298 34299 34300 34301 34302 34303 34304 34305 34306 34307 34308 34309 34310 34311 34312 34313 34314 34315 34316 34317 34318 34319 34320 34321 34322 34323 34324 34325 34326 34327 34328 34329 34330 34331 34332 34333 34334 34335 34336 34337 34338 34339 34340 34341 34342 34343 34344 34345 ..... 34416 34417 34418 34419 34420 34421 34422 34423 34424 34425 34426 34427 34428 34429 34430 34431 34432 34433 34434 34435 34436 34437 34438 34439 34440 34441 34442 34443 34444 34445 34446 34447 34448 34449 34450 34451 34452 34453 34454 34455 34456 34457 34458 34459 34460 34461 34462 34463 34464 34465 34466 34467 34468 34469 34470 34471 34472 34473 34474 34475 34476 34477 34478 34479 34480 34481 34482 34483 34484 34485 34486 34487 34488 34489 34490 34491 34492 34493 34494 34495 34496 34497 34498 34499 34500 34501 34502 34503 34504 34505 34506 34507 34508 34509 34510 34511 34512 34513 34514 34515 34516 34517 34518 34519 34520 34521 34522 34523 34524 34525 34526 34527 34528 34529 34530 34531 34532 34533 34534 34535 34536 34537 34538 34539 34540 34541 34542 34543 34544 34545 34546 34547 34548 34549 34550 34551 34552 34553 34554 34555 34556 34557 34558 34559 34560 34561 34562 34563 34564 34565 ..... 40139 40140 40141 40142 40143 40144 40145 40146 40147 40148 40149 40150 40151 40152 ..... 40223 40224 40225 40226 40227 40228 40229 40230 40231 40232 40233 40234 40235 40236 40237 ..... 49130 49131 49132 49133 49134 49135 49136 49137 49138 49139 49140 49141 49142 49143 ..... 49144 49145 49146 49147 49148 49149 49150 49151 49152 49153 49154 49155 49156 49157 49158 49159 ..... 50953 50954 50955 50956 50957 50958 50959 50960 50961 50962 50963 50964 50965 50966 ..... 50995 50996 50997 50998 50999 51000 51001 51002 51003 51004 51005 51006 51007 51008 51009 51010 51011 51012 51013 51014 51015 51016 51017 51018 51019 51020 51021 51022 51023 |
/* spatialite.c -- SQLite3 spatial extension version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> (implementing Android support) Mark Johnson <mj10777@googlemail.com> ................................................................................ if (ret != SQLITE_OK) sqlite3_free (errMsg); } sqlite3_result_int (context, 0); return; } static gaiaPointPtr simplePoint (gaiaGeomCollPtr geo) { /* helper function / if this GEOMETRY contains only one POINT, and no other elementary geometry / the POINT address will be returned / otherwise NULL will be returned ................................................................................ if (checksum == NULL) sqlite3_result_null (context); else sqlite3_result_text (context, checksum, strlen (checksum), free); } #if OMIT_ICONV == 0 /* ICONV is absolutely required */ static void fnct_ExportGeoJSON (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ExportGeoJSON(TEXT table, TEXT geom_column, TEXT filename) / ExportGeoJSON(TEXT table, TEXT geom_column, TEXT filename, / TEXT format) / ExportGeoJSON(TEXT table, TEXT geom_column, TEXT filename, / TEXT format, INT precision) / / returns: / the number of exported rows / NULL on invalid arguments */ int ret; char *table; char *geom_col; char *path; int format = 0; int precision = 8; char *fmt = NULL; int rows; sqlite3 *db_handle = sqlite3_context_db_handle (context); GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } table = (char *) sqlite3_value_text (argv[0]); if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } geom_col = (char *) sqlite3_value_text (argv[1]); if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } path = (char *) sqlite3_value_text (argv[2]); if (argc > 3) { if (sqlite3_value_type (argv[3]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } else { fmt = (char *) sqlite3_value_text (argv[3]); if (strcasecmp (fmt, "none") == 0) format = 0; else if (strcasecmp (fmt, "MBR") == 0) format = 1; else if (strcasecmp (fmt, "withShortCRS") == 0) format = 2; else if (strcasecmp (fmt, "MBRwithShortCRS") == 0) format = 3; else if (strcasecmp (fmt, "withLongCRS") == 0) format = 4; else if (strcasecmp (fmt, "MBRwithLongCRS") == 0) format = 5; else { sqlite3_result_null (context); return; } } } if (argc > 4) { if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } else precision = sqlite3_value_int (argv[4]); } ret = dump_geojson_ex (db_handle, table, geom_col, path, precision, format, &rows); if (rows < 0 || !ret) sqlite3_result_null (context); else sqlite3_result_int (context, rows); } static void fnct_ExportGeoJSON2 (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename) / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename, / INT precision) / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename, / INT precision, INT lon_lat) / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename, / INT precision, INT lon_lat, INT M_coords) / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename, / INT precision, INT lon_lat, INT M_coords, / INT indented) / ExportGeoJSON2(TEXT table, TEXT geom_column, TEXT filename, / INT precision, INT lon_lat, INT M_coords, / INT indented, TEXT colname_case) / / returns: / the number of exported rows / NULL on invalid arguments */ int ret; char *table; char *geom_col; char *path; int precision = 8; int lon_lat = 1; int m_coords = 0; int indented = 1; int colname_case = GAIA_DBF_COLNAME_LOWERCASE; int rows; char *errmsg = NULL; sqlite3 *db_handle = sqlite3_context_db_handle (context); GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } table = (char *) sqlite3_value_text (argv[0]); if (sqlite3_value_type (argv[1]) == SQLITE_NULL) geom_col = NULL; else { if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } geom_col = (char *) sqlite3_value_text (argv[1]); } if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } path = (char *) sqlite3_value_text (argv[2]); if (argc > 3) { if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } precision = sqlite3_value_int (argv[3]); } if (argc > 4) { if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } lon_lat = sqlite3_value_int (argv[4]); } if (argc > 5) { if (sqlite3_value_type (argv[5]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } m_coords = sqlite3_value_int (argv[5]); } if (argc > 6) { if (sqlite3_value_type (argv[6]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } indented = sqlite3_value_int (argv[6]); } if (argc > 7) { if (sqlite3_value_type (argv[7]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } else { const char *val = (char *) sqlite3_value_text (argv[7]); if (strcasecmp (val, "UPPER") == 0 || strcasecmp (val, "UPPERCASE") == 0) colname_case = GAIA_DBF_COLNAME_UPPERCASE; else if (strcasecmp (val, "SAME") == 0 || strcasecmp (val, "SAMECASE") == 0) colname_case = GAIA_DBF_COLNAME_CASE_IGNORE; else colname_case = GAIA_DBF_COLNAME_LOWERCASE; } } ret = dump_geojson2 (db_handle, table, geom_col, path, precision, lon_lat, m_coords, indented, colname_case, &rows, &errmsg); if (errmsg != NULL) { spatialite_e ("%s", errmsg); sqlite3_free (errmsg); } if (rows < 0 || !ret) sqlite3_result_null (context); else sqlite3_result_int (context, rows); } static void fnct_ImportGeoJSON (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ImportGeoJSON(TEXT filename, TEXT table) / ImportGeoJSON(TEXT filename, TEXT table, TEXT geom_column) / ImportGeoJSON(TEXT filename, TEXT table, TEXT geom_column, / INT spatial_index) / ImportGeoJSON(TEXT filename, TEXT table, TEXT geom_column, / INT spatial_index, INT srid) / ImportGeoJSON(TEXT filename, TEXT table, TEXT geom_column, / INT spatial_index, INT srid, TEXT colname_case) / / returns: / the number of imported rows / NULL on invalid arguments */ int ret; char *table; char *geom_col = "geometry"; char *path; int spatial_index = 0; int srid = 4326; int colname_case = GAIA_DBF_COLNAME_LOWERCASE; int rows; char *errmsg = NULL; sqlite3 *db_handle = sqlite3_context_db_handle (context); GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } path = (char *) sqlite3_value_text (argv[0]); if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } table = (char *) sqlite3_value_text (argv[1]); if (argc > 2) { if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } geom_col = (char *) sqlite3_value_text (argv[2]); } if (argc > 3) { if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } spatial_index = sqlite3_value_int (argv[3]); } if (argc > 4) { if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) { sqlite3_result_null (context); return; } srid = sqlite3_value_int (argv[4]); } if (argc > 5) { if (sqlite3_value_type (argv[5]) != SQLITE_TEXT) { sqlite3_result_null (context); return; } else { const char *val = (char *) sqlite3_value_text (argv[5]); if (strcasecmp (val, "UPPER") == 0 || strcasecmp (val, "UPPERCASE") == 0) colname_case = GAIA_DBF_COLNAME_UPPERCASE; else if (strcasecmp (val, "SAME") == 0 || strcasecmp (val, "SAMECASE") == 0) colname_case = GAIA_DBF_COLNAME_CASE_IGNORE; else colname_case = GAIA_DBF_COLNAME_LOWERCASE; } } ret = load_geojson (db_handle, path, table, geom_col, spatial_index, srid, colname_case, &rows, &errmsg); if (errmsg != NULL) { spatialite_e ("%s", errmsg); sqlite3_free (errmsg); } if (rows < 0 || !ret) sqlite3_result_null (context); else sqlite3_result_int (context, rows); } static void fnct_EncodeURL (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / EncodeURL(text url) / or ................................................................................ /* decoding the URL */ url = gaiaDecodeURL (encoded, in_charset); if (url == NULL) sqlite3_result_null (context); else sqlite3_result_text (context, url, strlen (url), free); } #ifdef ENABLE_MINIZIP /* only id MINIZIP is enabled */ static void fnct_Zipfile_NumSHP (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / Zipfile_NumSHP(zip_path TEXT) / / return the total number of Shapefiles contained within a given Zipfile / 0 if not Shapefile exists / or NULL on error or invalid arguments */ const char *zip_path; int count; GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) zip_path = (const char *) sqlite3_value_text (argv[0]); else { sqlite3_result_null (context); return; } /* searching for Shapefiles */ if (!gaiaZipfileNumSHP (zip_path, &count)) { sqlite3_result_null (context); return; } sqlite3_result_int (context, count); } static void fnct_Zipfile_ShpN (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / Zipfile_ShpN(zip_path TEXT, idx INTEGER) / / return the name of the Nth Shapefile from within a Zipfile / or NULL on error or invalid arguments */ const char *zip_path; int idx; char *basename; GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) zip_path = (const char *) sqlite3_value_text (argv[0]); else { sqlite3_result_null (context); return; } if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) idx = sqlite3_value_int (argv[1]); else { sqlite3_result_null (context); return; } /* searching the Nth Shapefile */ basename = gaiaZipfileShpN (zip_path, idx); if (basename == NULL) { sqlite3_result_null (context); return; } sqlite3_result_text (context, basename, strlen (basename), free); } static void fnct_Zipfile_NumDBF (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / Zipfile_NumDBF(zip_path TEXT) / / return the total number of DBF files contained within a given Zipfile / 0 if not DBF file exists / or NULL on error or invalid arguments */ const char *zip_path; int count; GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) zip_path = (const char *) sqlite3_value_text (argv[0]); else { sqlite3_result_null (context); return; } /* searching for DBF files */ if (!gaiaZipfileNumDBF (zip_path, &count)) { sqlite3_result_null (context); return; } sqlite3_result_int (context, count); } static void fnct_Zipfile_DbfN (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / Zipfile_DbfN(zip_path TEXT, idx INTEGER) / / return the name of the Nth DBF file from within a Zipfile / or NULL on error or invalid arguments */ const char *zip_path; int idx; char *filename; GAIA_UNUSED (); /* LCOV_EXCL_LINE */ if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) zip_path = (const char *) sqlite3_value_text (argv[0]); else { sqlite3_result_null (context); return; } if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) idx = sqlite3_value_int (argv[1]); else { sqlite3_result_null (context); return; } /* searching the Nth DBF file */ filename = gaiaZipfileDbfN (zip_path, idx); if (filename == NULL) { sqlite3_result_null (context); return; } sqlite3_result_text (context, filename, strlen (filename), free); } #endif /* end MINIZIP */ #endif /* ICONV enabled/disabled */ static void fnct_DirNameFromPath (sqlite3_context * context, int argc, sqlite3_value ** argv) { ................................................................................ if (rows < 0 || !ret) sqlite3_result_null (context); else sqlite3_result_int (context, rows); } static void fnct_ExportKML (sqlite3_context * context, int argc, sqlite3_value ** argv) { /* SQL function: / ExportKML(TEXT table, TEXT geom_column, TEXT filename) / ExportKML(TEXT table, TEXT geom_column, TEXT filename, INT precision) / ExportKML(TEXT table, TEXT geom_column, TEXT filename, INT precision, ................................................................................ if (rows < 0 || !ret) sqlite3_result_null (context); else sqlite3_result_int (context, rows); } #endif /* end ICONV supported */ #ifdef ENABLE_LIBXML2 /* including LIBXML2 */ static void wfs_page_done (int features, void *ptr) { /* WFS progress handler callback */ if (ptr == NULL) ................................................................................ sqlite3_create_function_v2 (db, "DecodeURL", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_DecodeURL, 0, 0, 0); sqlite3_create_function_v2 (db, "DecodeURL", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_DecodeURL, 0, 0, 0); #ifdef ENABLE_MINIZIP /* only if MINIZIP is enabled */ sqlite3_create_function_v2 (db, "Zipfile_NumSHP", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Zipfile_NumSHP, 0, 0, 0); sqlite3_create_function_v2 (db, "Zipfile_ShpN", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Zipfile_ShpN, 0, 0, 0); ................................................................................ sqlite3_create_function_v2 (db, "Zipfile_NumDBF", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Zipfile_NumDBF, 0, 0, 0); sqlite3_create_function_v2 (db, "Zipfile_DbfN", 2, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_Zipfile_DbfN, 0, 0, 0); #endif /* end MINIZIP */ #endif /* ICONV enabled/disabled */ sqlite3_create_function_v2 (db, "DirNameFromPath", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_DirNameFromPath, 0, 0, 0); sqlite3_create_function_v2 (db, "FullFileNameFromPath", 1, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_FullFileNameFromPath, 0, 0, 0); ................................................................................ fnct_ExportSHP, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportSHP", 5, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_ExportSHP, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportSHP", 6, SQLITE_UTF8 | SQLITE_DETERMINISTIC, cache, fnct_ExportSHP, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportGeoJSON", 3, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportGeoJSON, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportGeoJSON", 4, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportGeoJSON, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportGeoJSON", 5, ................................................................................ fnct_ImportGeoJSON, 0, 0, 0); sqlite3_create_function_v2 (db, "ImportGeoJSON", 5, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ImportGeoJSON, 0, 0, 0); sqlite3_create_function_v2 (db, "ImportGeoJSON", 6, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ImportGeoJSON, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportKML", 3, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportKML, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportKML", 4, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportKML, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportKML", 5, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportKML, 0, 0, 0); sqlite3_create_function_v2 (db, "ExportKML", 6, SQLITE_UTF8 | SQLITE_DETERMINISTIC, 0, fnct_ExportKML, 0, 0, 0); #endif /* ICONV enabled */ sqlite3_create_function_v2 (db, "eval", 1, SQLITE_UTF8, 0, fnct_EvalFunc, 0, 0, 0); sqlite3_create_function_v2 (db, "eval", 2, SQLITE_UTF8, 0, fnct_EvalFunc, 0, 0, 0); sqlite3_create_function_v2 (db, "SqlProc_FromFile", 1, SQLITE_UTF8, |
Changes to src/spatialite/spatialite_init.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* spatialite_init.c -- SQLite3 spatial extension version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> (implementing Android support) Alternatively, the contents of this file may be used under the terms of |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* spatialite_init.c -- SQLite3 spatial extension version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> (implementing Android support) Alternatively, the contents of this file may be used under the terms of |
Changes to src/spatialite/srid_aux.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* srid_aux.c -- SRID auxiliary functions version 4.3.0, 2014 December 4 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2014-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* srid_aux.c -- SRID auxiliary functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2014-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/statistics.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* statistics.c -- helper functions updating internal statistics version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> (implementing Android support) Mark Johnson <mj10777@googlemail.com> (extending Drop/Rename Table and RenameColumn) |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* statistics.c -- helper functions updating internal statistics version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> (implementing Android support) Mark Johnson <mj10777@googlemail.com> (extending Drop/Rename Table and RenameColumn) |
Changes to src/spatialite/table_cloner.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* table_cloner.c -- Cloning a Table version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* table_cloner.c -- Cloning a Table version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualXL.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualXLc -- SQLite3 extension [VIRTUAL TABLE accessing .XLS] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualXLc -- SQLite3 extension [VIRTUAL TABLE accessing .XLS] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualbbox.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualbbox.c -- SQLite3 extension [VIRTUAL TABLE accessing BoundingBox tables] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualbbox.c -- SQLite3 extension [VIRTUAL TABLE accessing BoundingBox tables] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualdbf.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualdbf.c -- SQLite3 extension [VIRTUAL TABLE accessing DBF] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualdbf.c -- SQLite3 extension [VIRTUAL TABLE accessing DBF] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualelementary.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualelementary.c -- SQLite3 extension [VIRTUAL TABLE Elementary Geometries] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualelementary.c -- SQLite3 extension [VIRTUAL TABLE Elementary Geometries] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualfdo.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualfdo.c -- SQLite3 extension [VIRTUAL TABLE accessing FDO-OGR tables] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualfdo.c -- SQLite3 extension [VIRTUAL TABLE accessing FDO-OGR tables] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualgeojson.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualgeojson.c -- SQLite3 extension [VIRTUAL TABLE GeoJson] version 5.0, 2018 December 12 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2016 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualgeojson.c -- SQLite3 extension [VIRTUAL TABLE GeoJson] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2016-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualgpkg.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualgpkg.c -- SQLite3 extension [VIRTUAL TABLE accessing GPKG tables] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualgpkg.c -- SQLite3 extension [VIRTUAL TABLE accessing GPKG tables] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualknn.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualknn.c -- SQLite3 extension [VIRTUAL TABLE RTree metahandler] version 4.4, 2015 November 27 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualknn.c -- SQLite3 extension [VIRTUAL TABLE RTree metahandler] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualnetwork.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualnetwork.c -- SQLite3 extension [VIRTUAL TABLE Routing - shortest path] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Luigi Costalli luigi.costalli@gmail.com Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualnetwork.c -- SQLite3 extension [VIRTUAL TABLE Routing - shortest path] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Luigi Costalli luigi.costalli@gmail.com Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/spatialite/virtualrouting.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualrouting.c -- SQLite3 extension [VIRTUAL TABLE Routing - shortest path] version 4.4, 2016 October 7 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2016 the Initial Developer. All Rights Reserved. Contributor(s): Luigi Costalli luigi.costalli@gmail.com Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualrouting.c -- SQLite3 extension [VIRTUAL TABLE Routing - shortest path] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2016-2020 the Initial Developer. All Rights Reserved. Contributor(s): Luigi Costalli luigi.costalli@gmail.com Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or |
Changes to src/spatialite/virtualshape.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualshape.c -- SQLite3 extension [VIRTUAL TABLE accessing Shapefile] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualshape.c -- SQLite3 extension [VIRTUAL TABLE accessing Shapefile] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualspatialindex.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualspatialindex.c -- SQLite3 extension [VIRTUAL TABLE RTree metahandler] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualspatialindex.c -- SQLite3 extension [VIRTUAL TABLE RTree metahandler] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/spatialite/virtualxpath.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualxpath.c -- SQLite3 extension [VIRTUAL XPath handler] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualxpath.c -- SQLite3 extension [VIRTUAL XPath handler] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/srsinit/srs_init.c.
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 ... 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 ... 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 |
/* srs_init.c -- populating the SPATIAL_REF_SYS table version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ } } SPATIALITE_PRIVATE int create_spatial_ref_sys_aux (sqlite3 * handle) { /* just in case, we'll create the SPATIAL_REF_SYS_AUX table */ int ret; const char *sql = "CREATE TABLE IF NOT EXISTS spatial_ref_sys_aux (\n" "\tsrid INTEGER NOT NULL PRIMARY KEY,\n" "\tis_geographic INTEGER,\n" "\thas_flipped_axes INTEGER,\n" "\tspheroid TEXT,\n" "\tprime_meridian TEXT,\n" "\tdatum TEXT,\n" ................................................................................ "\taxis_1_name TEXT,\n" "\taxis_1_orientation TEXT,\n" "\taxis_2_name TEXT,\n" "\taxis_2_orientation TEXT,\n" "\tCONSTRAINT fk_sprefsys FOREIGN KEY (srid) " "\tREFERENCES spatial_ref_sys (srid))"; ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); if (ret != SQLITE_OK) return 0; /* creating the SPATIAL_REF_SYS_ALL view */ sql = "CREATE VIEW IF NOT EXISTS spatial_ref_sys_all AS\n" "SELECT a.srid AS srid, a.auth_name AS auth_name, " "a.auth_srid AS auth_srid, a.ref_sys_name AS ref_sys_name,\n" "b.is_geographic AS is_geographic, " "b.has_flipped_axes AS has_flipped_axes, " "b.spheroid AS spheroid, b.prime_meridian AS prime_meridian, " ................................................................................ "b.axis_1_orientation AS axis_1_orientation,\n" "b.axis_2_name AS axis_2_name, " "b.axis_2_orientation AS axis_2_orientation,\n" "a.proj4text AS proj4text, a.srtext AS srtext\n" "FROM spatial_ref_sys AS a\n" "LEFT JOIN spatial_ref_sys_aux AS b ON (a.srid = b.srid)"; ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); if (ret != SQLITE_OK) return 0; return 1; } static int populate_spatial_ref_sys (sqlite3 * handle, int mode, int metadata) { /* populating the EPSG dataset into the SPATIAL_REF_SYS table */ |
| | | | | | | |
1 2 3 4 5 6 7 8 9 10 11 12 .. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 ... 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 ... 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 |
/* srs_init.c -- populating the SPATIAL_REF_SYS table version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ } } SPATIALITE_PRIVATE int create_spatial_ref_sys_aux (sqlite3 * handle) { /* just in case, we'll create the SPATIAL_REF_SYS_AUX table */ int ret; const char *sql = "CREATE TABLE IF NOT EXISTS spatial_ref_sys_aux (\n" "\tsrid INTEGER NOT NULL PRIMARY KEY,\n" "\tis_geographic INTEGER,\n" "\thas_flipped_axes INTEGER,\n" "\tspheroid TEXT,\n" "\tprime_meridian TEXT,\n" "\tdatum TEXT,\n" ................................................................................ "\taxis_1_name TEXT,\n" "\taxis_1_orientation TEXT,\n" "\taxis_2_name TEXT,\n" "\taxis_2_orientation TEXT,\n" "\tCONSTRAINT fk_sprefsys FOREIGN KEY (srid) " "\tREFERENCES spatial_ref_sys (srid))"; ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); if (ret != SQLITE_OK) return 0; /* creating the SPATIAL_REF_SYS_ALL view */ sql = "CREATE VIEW IF NOT EXISTS spatial_ref_sys_all AS\n" "SELECT a.srid AS srid, a.auth_name AS auth_name, " "a.auth_srid AS auth_srid, a.ref_sys_name AS ref_sys_name,\n" "b.is_geographic AS is_geographic, " "b.has_flipped_axes AS has_flipped_axes, " "b.spheroid AS spheroid, b.prime_meridian AS prime_meridian, " ................................................................................ "b.axis_1_orientation AS axis_1_orientation,\n" "b.axis_2_name AS axis_2_name, " "b.axis_2_orientation AS axis_2_orientation,\n" "a.proj4text AS proj4text, a.srtext AS srtext\n" "FROM spatial_ref_sys AS a\n" "LEFT JOIN spatial_ref_sys_aux AS b ON (a.srid = b.srid)"; ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); if (ret != SQLITE_OK) return 0; return 1; } static int populate_spatial_ref_sys (sqlite3 * handle, int mode, int metadata) { /* populating the EPSG dataset into the SPATIAL_REF_SYS table */ |
Changes to src/stored_procedures/stored_procedures.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* stored_procedures.c -- SpatiaLite Stored Procedures support version 4.5, 2017 October 22 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2017 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* stored_procedures.c -- SpatiaLite Stored Procedures support version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2017-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/gaia_auxnet.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_auxnet.c -- implementation of the Topology-Network module methods version 4.3, 2015 August 12 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_auxnet.c -- implementation of the Topology-Network module methods version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/gaia_auxtopo.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_auxtopo.c -- implementation of the Topology module methods version 4.3, 2015 July 15 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_auxtopo.c -- implementation of the Topology module methods version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/gaia_auxtopo_table.c.
1 2 3 4 5 6 7 8 9 10 11 12 13 .. 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 .... 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 |
/* gaia_auxtopo_table.c -- implementation of the Topology module methods processing a whole GeoTable version 4.3, 2015 July 15 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ } rearranged = gaiaPolygonize_r (cache, sparse, 0); gaiaFreeGeomColl (sparse); return rearranged; } TOPOLOGY_PRIVATE gaiaGeomCollPtr auxtopo_polygonize_face_edges_generalize (struct face_edges * list, const void *cache) { /* attempting to reaggregrate Polygons from valid Edges */ gaiaGeomCollPtr sparse; gaiaGeomCollPtr renoded; gaiaGeomCollPtr rearranged; struct face_edge_item *fe; |
| | | |
1 2 3 4 5 6 7 8 9 10 11 12 13 .. 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 .... 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 |
/* gaia_auxtopo_table.c -- implementation of the Topology module methods processing a whole GeoTable version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), ................................................................................ } rearranged = gaiaPolygonize_r (cache, sparse, 0); gaiaFreeGeomColl (sparse); return rearranged; } TOPOLOGY_PRIVATE gaiaGeomCollPtr auxtopo_polygonize_face_edges_generalize (struct face_edges *list, const void *cache) { /* attempting to reaggregrate Polygons from valid Edges */ gaiaGeomCollPtr sparse; gaiaGeomCollPtr renoded; gaiaGeomCollPtr rearranged; struct face_edge_item *fe; |
Changes to src/topology/gaia_netstmts.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_netstmts.c -- implementation of Topology-Network prepared statements version 4.3, 2015 August 11 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_netstmts.c -- implementation of Topology-Network prepared statements version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/gaia_network.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_network.c -- implementation of Topology-Network SQL functions version 4.3, 2015 August 11 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_network.c -- implementation of Topology-Network SQL functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/gaia_topology.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_topology.c -- implementation of Topology SQL functions version 4.3, 2015 July 15 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_topology.c -- implementation of Topology SQL functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/gaia_topostmts.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_topostmts.c -- implementation of Topology prepared statements version 4.3, 2015 July 18 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* gaia_topostmts.c -- implementation of Topology prepared statements version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/lwn_network.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* lwn_network.c -- Topology-Network abstract multi-backend interface version 4.3, 2015 August 13 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* lwn_network.c -- Topology-Network abstract multi-backend interface version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/lwn_network.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* lwn_network.h -- Topology-Network abstract multi-backend interface version 4.3, 2015 August 12 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* lwn_network.h -- Topology-Network abstract multi-backend interface version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/lwn_network_private.h.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* lwn_network_private.h -- private members and methods Topology-Network abstract multi-backend interface version 4.3, 2015 August 13 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* lwn_network_private.h -- private members and methods Topology-Network abstract multi-backend interface version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/net_callbacks.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* net_callbacks.c -- implementation of Topology-Network callback functions version 4.3, 2015 August 11 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* net_callbacks.c -- implementation of Topology-Network callback functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/network_private.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* network_private.h -- Topology-Network opaque definitions version 4.3, 2015 August 11 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* network_private.h -- Topology-Network opaque definitions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/topo_callbacks.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* topo_callbacks.c -- implementation of Topology callback functions version 4.3, 2015 July 18 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* topo_callbacks.c -- implementation of Topology callback functions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/topology/topology_private.h.
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* topology_private.h -- Topology opaque definitions version 4.3, 2015 July 15 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
/* topology_private.h -- Topology opaque definitions version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2015-202 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/versioninfo/version.c.
1
2
3
4
5
6
7
8
9
10
11
..
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/* version.c -- Gaia spatial support for SQLite version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 The contents of this file are subject to the Mozilla Public License Version ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
..
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/* version.c -- Gaia spatial support for SQLite version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ------------------------------------------------------------------------------ Version: MPL 1.1/GPL 2.0/LGPL 2.1 The contents of this file are subject to the Mozilla Public License Version ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/virtualtext/virtualtext.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualtext.c -- SQLite3 extension [VIRTUAL TABLE accessing CSV/TXT] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* virtualtext.c -- SQLite3 extension [VIRTUAL TABLE accessing CSV/TXT] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to src/wfs/wfs_in.c.
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* wfs_in.c -- implements WFS support [import] version 4.3, 2015 June 29 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2015 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
/* wfs_in.c -- implements WFS support [import] version 5.0, 2020 August 1 Author: Sandro Furieri a.furieri@lqt.it ----------------------------------------------------------------------------- Version: MPL 1.1/GPL 2.0/LGPL 2.1 ................................................................................ for the specific language governing rights and limitations under the License. The Original Code is the SpatiaLite library The Initial Developer of the Original Code is Alessandro Furieri Portions created by the Initial Developer are Copyright (C) 2008-2020 the Initial Developer. All Rights Reserved. Contributor(s): Alternatively, the contents of this file may be used under the terms of either the GNU General Public License Version 2 or later (the "GPL"), or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
Changes to test/Makefile.am.
215 216 217 218 219 220 221 222 223 224 225 226 227 228 |
sqlproc_sample.txt sqlproc_logfile.txt \ sqlproc_error.txt orbetello.sqlite \ test.geojson mapconfig.xml mapconfig2.xml SUBDIRS = sql_stmt_geosadvanced_tests sql_stmt_geos_tests \ sql_stmt_geos_380 sql_stmt_geos_non380 \ sql_stmt_libxml2_tests sql_stmt_rtgeom_tests \ sql_stmt_mathsql_tests sql_stmt_proj_tests \ sql_stmt_proj492_tests sql_stmt_proj493_tests \ sql_stmt_proj600security_tests \ sql_stmt_zip_proj6 sql_stmt_minizip \ sql_stmt_proj600_tests sql_stmt_security_tests \ sql_stmt_tests sql_stmt_xmlsec_tests \ sql_stmt_geopackage_tests sql_stmt_freexl_tests \ |
> |
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
sqlproc_sample.txt sqlproc_logfile.txt \
sqlproc_error.txt orbetello.sqlite \
test.geojson mapconfig.xml mapconfig2.xml
SUBDIRS = sql_stmt_geosadvanced_tests sql_stmt_geos_tests \
sql_stmt_geos_380 sql_stmt_geos_non380 \
sql_stmt_libxml2_tests sql_stmt_rtgeom_tests \
sql_stmt_libxml2_rttopo_tests \
sql_stmt_mathsql_tests sql_stmt_proj_tests \
sql_stmt_proj492_tests sql_stmt_proj493_tests \
sql_stmt_proj600security_tests \
sql_stmt_zip_proj6 sql_stmt_minizip \
sql_stmt_proj600_tests sql_stmt_security_tests \
sql_stmt_tests sql_stmt_xmlsec_tests \
sql_stmt_geopackage_tests sql_stmt_freexl_tests \
|
Changes to test/Makefile.in.
1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 |
sqlproc_sample.txt sqlproc_logfile.txt \ sqlproc_error.txt orbetello.sqlite \ test.geojson mapconfig.xml mapconfig2.xml SUBDIRS = sql_stmt_geosadvanced_tests sql_stmt_geos_tests \ sql_stmt_geos_380 sql_stmt_geos_non380 \ sql_stmt_libxml2_tests sql_stmt_rtgeom_tests \ sql_stmt_mathsql_tests sql_stmt_proj_tests \ sql_stmt_proj492_tests sql_stmt_proj493_tests \ sql_stmt_proj600security_tests \ sql_stmt_zip_proj6 sql_stmt_minizip \ sql_stmt_proj600_tests sql_stmt_security_tests \ sql_stmt_tests sql_stmt_xmlsec_tests \ sql_stmt_geopackage_tests sql_stmt_freexl_tests \ |
> |
1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 |
sqlproc_sample.txt sqlproc_logfile.txt \
sqlproc_error.txt orbetello.sqlite \
test.geojson mapconfig.xml mapconfig2.xml
SUBDIRS = sql_stmt_geosadvanced_tests sql_stmt_geos_tests \
sql_stmt_geos_380 sql_stmt_geos_non380 \
sql_stmt_libxml2_tests sql_stmt_rtgeom_tests \
sql_stmt_libxml2_rttopo_tests \
sql_stmt_mathsql_tests sql_stmt_proj_tests \
sql_stmt_proj492_tests sql_stmt_proj493_tests \
sql_stmt_proj600security_tests \
sql_stmt_zip_proj6 sql_stmt_minizip \
sql_stmt_proj600_tests sql_stmt_security_tests \
sql_stmt_tests sql_stmt_xmlsec_tests \
sql_stmt_geopackage_tests sql_stmt_freexl_tests \
|
Changes to test/check_gpkgConvert.c.
206
207
208
209
210
211
212
213
214
215
216
217
218
219
...
297
298
299
300
301
302
303
304
305
306
307
|
void *cache_out = NULL;
const char *path_origin;
const char *path_destination;
int ret;
if (argc > 1 || argv[0] == NULL)
argc = 1; /* silencing stupid compiler warnings */
do_unlink_all ();
/* converting from SpatiaLite v4 to GPKG */
ret = system ("cp ./gpkg_test.sqlite copy-gpkg_test.sqlite");
if (ret != 0)
{
fprintf (stderr, "cannot copy gpkg_test.sqlite database\n");
................................................................................
}
sqlite3_close (handle_in);
sqlite3_close (handle_out);
spatialite_cleanup_ex (cache_in);
spatialite_cleanup_ex (cache_out);
do_unlink_all ();
return 0;
}
#endif /* endif GEOPACKAGE enabled */
|
>
>
>
>
|
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
...
300
301
302
303
304
305
306
307
308
309
310
311
|
void *cache_out = NULL; const char *path_origin; const char *path_destination; int ret; if (argc > 1 || argv[0] == NULL) argc = 1; /* silencing stupid compiler warnings */ #ifdef _WIN32 /* this test is disabled on Windows because it takes too long */ #else do_unlink_all (); /* converting from SpatiaLite v4 to GPKG */ ret = system ("cp ./gpkg_test.sqlite copy-gpkg_test.sqlite"); if (ret != 0) { fprintf (stderr, "cannot copy gpkg_test.sqlite database\n"); ................................................................................ } sqlite3_close (handle_in); sqlite3_close (handle_out); spatialite_cleanup_ex (cache_in); spatialite_cleanup_ex (cache_out); do_unlink_all (); #endif /* not WIN32 */ return 0; } #endif /* endif GEOPACKAGE enabled */ |
Changes to test/check_sql_stmt.h.
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
...
899
900
901
902
903
904
905
906
907
908
909
910
911
912
|
} result = run_subdir_test ("sql_stmt_proc_tests", conn, load_extension, 0); if (result != 0) { return result; } #endif /* end ICONV */ skip_sql_proc: #ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ #ifndef OMIT_ICONV /* only if ICONV is supported */ result = run_subdir_test ("sql_stmt_libxml2_tests", conn, load_extension, 0); if (result != 0) { ................................................................................ 0); if (result != 0) { return result; } } #endif #endif /* end LIBXML2 conditional */ #ifdef ENABLE_GEOPACKAGE /* only if GeoPackage support is enabled */ if (!legacy) { result = |
<
>
>
>
>
>
>
>
>
>
>
>
>
|
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
...
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
|
} result = run_subdir_test ("sql_stmt_proc_tests", conn, load_extension, 0); if (result != 0) { return result; } skip_sql_proc: #endif /* end ICONV */ #ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ #ifndef OMIT_ICONV /* only if ICONV is supported */ result = run_subdir_test ("sql_stmt_libxml2_tests", conn, load_extension, 0); if (result != 0) { ................................................................................ 0); if (result != 0) { return result; } } #endif #endif /* end LIBXML2 conditional */ #ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ #ifdef ENABLE_RTTOPO /* only if RTTOPO is supported */ result = run_subdir_test ("sql_stmt_libxml2_rttopo_tests", conn, load_extension, 0); if (result != 0) { return result; } #endif #endif /* end LIBXML2 conditional */ #ifdef ENABLE_GEOPACKAGE /* only if GeoPackage support is enabled */ if (!legacy) { result = |
Changes to test/check_tempgeom.c.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
sqlite3_free_table (results); return retval; } int main (int argc, char *argv[]) { int retval = 0; int ret; sqlite3 *handle; const char *sql; sqlite3_stmt *stmt = NULL; char *err_msg = NULL; void *cache = spatialite_alloc_connection (); |
> > > > |
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
sqlite3_free_table (results); return retval; } int main (int argc, char *argv[]) { #ifndef ENABLE_RTTOPO /* RTTOPO is not supported: quitting */ return 0; #endif int retval = 0; int ret; sqlite3 *handle; const char *sql; sqlite3_stmt *stmt = NULL; char *err_msg = NULL; void *cache = spatialite_alloc_connection (); |
Changes to test/geojson_test.c.
130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
return 0; } int main (int argc, char *argv[]) { int ret; sqlite3 *handle; void *cache = spatialite_alloc_connection (); char *old_SPATIALITE_SECURITY_ENV = NULL; #ifdef _WIN32 char *env; #endif /* not WIN32 */ |
> > > > |
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
return 0; } int main (int argc, char *argv[]) { #ifdef OMIT_ICONV /* ICONV is not supported: quitting */ return 0; #endif int ret; sqlite3 *handle; void *cache = spatialite_alloc_connection (); char *old_SPATIALITE_SECURITY_ENV = NULL; #ifdef _WIN32 char *env; #endif /* not WIN32 */ |
Changes to test/shape_primitives.c.
868 869 870 871 872 873 874 875 876 877 878 879 880 881 ... 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 ... 969 970 971 972 973 974 975 976 977 978 979 980 981 982 |
handle = NULL; /* silencing stupid compiler warnings */ #endif /* end ICONV conditional */ /* ok, succesfull termination */ return 0; } static int do_check_tiny_point_enabled (sqlite3 * handle, int tiny_point) { /* testing IsTinyPointEnabed */ int i; char **results; int rows; ................................................................................ } } sqlite3_free_table (results); if (value == tiny_point) return 0; return -1; } static int do_test_400 (int tiny_point) { int ret; sqlite3 *handle; char *err_msg = NULL; void *cache = spatialite_alloc_connection (); ................................................................................ } spatialite_cleanup_ex (cache); sqlite3_close (handle); return 0; } int main (int argc, char *argv[]) { #ifndef OMIT_ICONV /* only if ICONV is supported */ #ifdef ENABLE_RTTOPO /* only if RTTOPO is supported */ int ret; |
> > > < > > |
868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 ... 899 900 901 902 903 904 905 906 907 908 909 910 911 912 ... 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 |
handle = NULL; /* silencing stupid compiler warnings */ #endif /* end ICONV conditional */ /* ok, succesfull termination */ return 0; } #ifndef OMIT_ICONV /* only if ICONV is supported */ #ifdef ENABLE_RTTOPO /* only if RTTOPO is supported */ static int do_check_tiny_point_enabled (sqlite3 * handle, int tiny_point) { /* testing IsTinyPointEnabed */ int i; char **results; int rows; ................................................................................ } } sqlite3_free_table (results); if (value == tiny_point) return 0; return -1; } static int do_test_400 (int tiny_point) { int ret; sqlite3 *handle; char *err_msg = NULL; void *cache = spatialite_alloc_connection (); ................................................................................ } spatialite_cleanup_ex (cache); sqlite3_close (handle); return 0; } #endif /* end RTTOPO conditionals */ #endif /* end ICONV conditional */ int main (int argc, char *argv[]) { #ifndef OMIT_ICONV /* only if ICONV is supported */ #ifdef ENABLE_RTTOPO /* only if RTTOPO is supported */ int ret; |
Added test/sql_stmt_libxml2_rttopo_tests/Makefile.am.
> > > > > > > > > > > > |
1 2 3 4 5 6 7 8 9 10 11 12 |
EXTRA_DIST = createmissingtables1.testcase \ createmissingtables2.testcase \ createmissingtables3.testcase \ createmissingtables4.testcase \ createmissingtables5.testcase \ createmissingtables6.testcase \ createmissingtables7.testcase \ createmissingtables8.testcase \ createmissingtables9.testcase \ createmissingtables10.testcase |
Added test/sql_stmt_libxml2_rttopo_tests/Makefile.in.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 |
# Makefile.in generated by automake 1.16.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2018 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = test/sql_stmt_libxml2_rttopo_tests ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GEOSCONFIG = @GEOSCONFIG@ GEOS_CFLAGS = @GEOS_CFLAGS@ GEOS_LDFLAGS = @GEOS_LDFLAGS@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBXML2_LIBS = @LIBXML2_LIBS@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_libxml2_rttopo_tests/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --foreign test/sql_stmt_libxml2_rttopo_tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags-am uninstall uninstall-am .PRECIOUS: Makefile createmissingtables1.testcase \ createmissingtables2.testcase \ createmissingtables3.testcase \ createmissingtables4.testcase \ createmissingtables5.testcase \ createmissingtables6.testcase \ createmissingtables7.testcase \ createmissingtables8.testcase \ createmissingtables9.testcase \ createmissingtables10.testcase # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: |
Added test/sql_stmt_libxml2_rttopo_tests/createmissingtables1.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
CreateMissingSystemTables - NULL relaxed :memory: #use in-memory database SELECT CreateMissingSystemTables(NULL); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(NULL) CreateMissingSystemTables exception - first argument (relaxed) expected to be an INTEGER. |
Added test/sql_stmt_libxml2_rttopo_tests/createmissingtables10.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed, INTEGER transaction :memory: #use in-memory database SELECT CreateMissingSystemTables(0, 1); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(0, 1) 1 |
Added test/sql_stmt_libxml2_rttopo_tests/createmissingtables2.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
CreateMissingSystemTables - TEXT relaxed :memory: #use in-memory database SELECT CreateMissingSystemTables('no'); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables('no') CreateMissingSystemTables exception - first argument (relaxed) expected to be an INTEGER. |
Added test/sql_stmt_libxml2_rttopo_tests/createmissingtables3.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
CreateMissingSystemTables - BLOB relaxed :memory: #use in-memory database SELECT CreateMissingSystemTables(zeroblob(4)); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(zeroblob(4)) CreateMissingSystemTables exception - first argument (relaxed) expected to be an INTEGER. |
Added test/sql_stmt_libxml2_rttopo_tests/createmissingtables4.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
CreateMissingSystemTables - DOUBLE relaxed :memory: #use in-memory database SELECT CreateMissingSystemTables(1.5); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(1.5) CreateMissingSystemTables exception - first argument (relaxed) expected to be an INTEGER. |
Added test/sql_stmt_libxml2_rttopo_tests/createmissingtables5.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed :memory: #use in-memory database SELECT CreateMissingSystemTables(1); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(1) 1 |
Added test/sql_stmt_libxml2_rttopo_tests/createmissingtables6.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed, NULL transaction :memory: #use in-memory database SELECT CreateMissingSystemTables(1, NULL); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(1, NULL) CreateMissingSystemTables exception - second argument (transaction) expected to be an INTEGER. |
Added test/sql_stmt_libxml2_rttopo_tests/createmissingtables7.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed, TEXT transaction :memory: #use in-memory database SELECT CreateMissingSystemTables(0, 'no'); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(0, 'no') CreateMissingSystemTables exception - second argument (transaction) expected to be an INTEGER. |
Added test/sql_stmt_libxml2_rttopo_tests/createmissingtables8.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed, BLOB transaction :memory: #use in-memory database SELECT CreateMissingSystemTables(1, zeroblob(4)); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(1, zeroblob(4)) CreateMissingSystemTables exception - second argument (transaction) expected to be an INTEGER. |
Added test/sql_stmt_libxml2_rttopo_tests/createmissingtables9.testcase.
> > > > > > > |
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed, DOUBLE transaction :memory: #use in-memory database SELECT CreateMissingSystemTables(0, 1.5); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(0, 1.5) CreateMissingSystemTables exception - second argument (transaction) expected to be an INTEGER. |
Changes to test/sql_stmt_libxml2_tests/Makefile.am.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
addparentid7.testcase \ createisometa1.testcase \ createisometa2.testcase \ createisometa3.testcase \ createisometa4.testcase \ createisometa5.testcase \ createisometa6.testcase \ createmissingtables1.testcase \ createmissingtables2.testcase \ createmissingtables3.testcase \ createmissingtables4.testcase \ createmissingtables5.testcase \ createmissingtables6.testcase \ createmissingtables7.testcase \ createmissingtables8.testcase \ createmissingtables9.testcase \ createmissingtables10.testcase \ createstyling1.testcase \ createstyling2.testcase \ createstyling3.testcase \ createstyling4.testcase \ createstyling5.testcase \ createstyling6.testcase \ createstyling7.testcase \ |
< < < < < < < < < < |
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
addparentid7.testcase \ createisometa1.testcase \ createisometa2.testcase \ createisometa3.testcase \ createisometa4.testcase \ createisometa5.testcase \ createisometa6.testcase \ createstyling1.testcase \ createstyling2.testcase \ createstyling3.testcase \ createstyling4.testcase \ createstyling5.testcase \ createstyling6.testcase \ createstyling7.testcase \ |
Changes to test/sql_stmt_libxml2_tests/Makefile.in.
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 |
addparentid7.testcase \ createisometa1.testcase \ createisometa2.testcase \ createisometa3.testcase \ createisometa4.testcase \ createisometa5.testcase \ createisometa6.testcase \ createmissingtables1.testcase \ createmissingtables2.testcase \ createmissingtables3.testcase \ createmissingtables4.testcase \ createmissingtables5.testcase \ createmissingtables6.testcase \ createmissingtables7.testcase \ createmissingtables8.testcase \ createmissingtables9.testcase \ createmissingtables10.testcase \ createstyling1.testcase \ createstyling2.testcase \ createstyling3.testcase \ createstyling4.testcase \ createstyling5.testcase \ createstyling6.testcase \ createstyling7.testcase \ |
< < < < < < < < < < |
267 268 269 270 271 272 273 274 275 276 277 278 279 280 |
addparentid7.testcase \ createisometa1.testcase \ createisometa2.testcase \ createisometa3.testcase \ createisometa4.testcase \ createisometa5.testcase \ createisometa6.testcase \ createstyling1.testcase \ createstyling2.testcase \ createstyling3.testcase \ createstyling4.testcase \ createstyling5.testcase \ createstyling6.testcase \ createstyling7.testcase \ |
Deleted test/sql_stmt_libxml2_tests/createmissingtables1.testcase.
1 2 3 4 5 6 7 |
CreateMissingSystemTables - NULL relaxed :memory: #use in-memory database SELECT CreateMissingSystemTables(NULL); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(NULL) CreateMissingSystemTables exception - first argument (relaxed) expected to be an INTEGER. |
< < < < < < < |
Deleted test/sql_stmt_libxml2_tests/createmissingtables10.testcase.
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed, INTEGER transaction :memory: #use in-memory database SELECT CreateMissingSystemTables(0, 1); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(0, 1) 1 |
< < < < < < < |
Deleted test/sql_stmt_libxml2_tests/createmissingtables2.testcase.
1 2 3 4 5 6 7 |
CreateMissingSystemTables - TEXT relaxed :memory: #use in-memory database SELECT CreateMissingSystemTables('no'); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables('no') CreateMissingSystemTables exception - first argument (relaxed) expected to be an INTEGER. |
< < < < < < < |
Deleted test/sql_stmt_libxml2_tests/createmissingtables3.testcase.
1 2 3 4 5 6 7 |
CreateMissingSystemTables - BLOB relaxed :memory: #use in-memory database SELECT CreateMissingSystemTables(zeroblob(4)); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(zeroblob(4)) CreateMissingSystemTables exception - first argument (relaxed) expected to be an INTEGER. |
< < < < < < < |
Deleted test/sql_stmt_libxml2_tests/createmissingtables4.testcase.
1 2 3 4 5 6 7 |
CreateMissingSystemTables - DOUBLE relaxed :memory: #use in-memory database SELECT CreateMissingSystemTables(1.5); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(1.5) CreateMissingSystemTables exception - first argument (relaxed) expected to be an INTEGER. |
< < < < < < < |
Deleted test/sql_stmt_libxml2_tests/createmissingtables5.testcase.
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed :memory: #use in-memory database SELECT CreateMissingSystemTables(1); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(1) 1 |
< < < < < < < |
Deleted test/sql_stmt_libxml2_tests/createmissingtables6.testcase.
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed, NULL transaction :memory: #use in-memory database SELECT CreateMissingSystemTables(1, NULL); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(1, NULL) CreateMissingSystemTables exception - second argument (transaction) expected to be an INTEGER. |
< < < < < < < |
Deleted test/sql_stmt_libxml2_tests/createmissingtables7.testcase.
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed, TEXT transaction :memory: #use in-memory database SELECT CreateMissingSystemTables(0, 'no'); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(0, 'no') CreateMissingSystemTables exception - second argument (transaction) expected to be an INTEGER. |
< < < < < < < |
Deleted test/sql_stmt_libxml2_tests/createmissingtables8.testcase.
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed, BLOB transaction :memory: #use in-memory database SELECT CreateMissingSystemTables(1, zeroblob(4)); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(1, zeroblob(4)) CreateMissingSystemTables exception - second argument (transaction) expected to be an INTEGER. |
< < < < < < < |
Deleted test/sql_stmt_libxml2_tests/createmissingtables9.testcase.
1 2 3 4 5 6 7 |
CreateMissingSystemTables - INTEGER relaxed, DOUBLE transaction :memory: #use in-memory database SELECT CreateMissingSystemTables(0, 1.5); 1 # rows (not including the header row) 1 # columns CreateMissingSystemTables(0, 1.5) CreateMissingSystemTables exception - second argument (transaction) expected to be an INTEGER. |
< < < < < < < |
Changes to test/sql_stmt_tests/Makefile.
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
OBJDUMP = objdump OBJEXT = o OTOOL = OTOOL64 = PACKAGE = libspatialite PACKAGE_BUGREPORT = a.furieri@lqt.it PACKAGE_NAME = libspatialite PACKAGE_STRING = libspatialite 5.0.0-beta1 PACKAGE_TARNAME = libspatialite PACKAGE_URL = PACKAGE_VERSION = 5.0.0-beta1 PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config PKG_CONFIG_LIBDIR = PKG_CONFIG_PATH = /usr/local/lib/pkgconfig RANLIB = ranlib SED = /usr/bin/sed SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 5.0.0-beta1 abs_builddir = /home/sandro/fossil/libspatialite/test/sql_stmt_tests abs_srcdir = /home/sandro/fossil/libspatialite/test/sql_stmt_tests abs_top_builddir = /home/sandro/fossil/libspatialite abs_top_srcdir = /home/sandro/fossil/libspatialite ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ |
| | | | |
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
OBJDUMP = objdump OBJEXT = o OTOOL = OTOOL64 = PACKAGE = libspatialite PACKAGE_BUGREPORT = a.furieri@lqt.it PACKAGE_NAME = libspatialite PACKAGE_STRING = libspatialite 5.0.0-RC1 PACKAGE_TARNAME = libspatialite PACKAGE_URL = PACKAGE_VERSION = 5.0.0-RC1 PATH_SEPARATOR = : PKG_CONFIG = /usr/bin/pkg-config PKG_CONFIG_LIBDIR = PKG_CONFIG_PATH = RANLIB = ranlib SED = /usr/bin/sed SET_MAKE = SHELL = /bin/sh STRIP = strip VERSION = 5.0.0-RC1 abs_builddir = /home/sandro/fossil/libspatialite/test/sql_stmt_tests abs_srcdir = /home/sandro/fossil/libspatialite/test/sql_stmt_tests abs_top_builddir = /home/sandro/fossil/libspatialite abs_top_srcdir = /home/sandro/fossil/libspatialite ac_ct_AR = ar ac_ct_CC = gcc ac_ct_CXX = g++ |