]> granicus.if.org Git - postgis/commitdiff
Get OUT_* export macros out of liblwgeom.h (#2053)
authorSandro Santilli <strk@keybit.net>
Wed, 17 Oct 2012 13:38:49 +0000 (13:38 +0000)
committerSandro Santilli <strk@keybit.net>
Wed, 17 Oct 2012 13:38:49 +0000 (13:38 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@10453 b70326c6-7e19-0410-871a-916f4a2858ee

liblwgeom/liblwgeom.h.in
liblwgeom/liblwgeom_internal.h
postgis/geography_inout.c
postgis/lwgeom_export.c

index ca85d8345e4057e747c50bd65fdc7e4aa1bd9f68..e213e6c4c4feff6753606f06202d9bbf1774f9d8 100644 (file)
@@ -1329,14 +1329,6 @@ int lwline_crossing_direction(const LWLINE *l1, const LWLINE *l2);
 */
 LWCOLLECTION* lwgeom_clip_to_ordinate_range(const LWGEOM *lwin, char ordinate, double from, double to, double offset);
 
-/*
- * Export functions
- */
-#define OUT_MAX_DOUBLE 1E15
-#define OUT_SHOW_DIGS_DOUBLE 20
-#define OUT_MAX_DOUBLE_PRECISION 15
-#define OUT_MAX_DIGS_DOUBLE (OUT_SHOW_DIGS_DOUBLE + 2) /* +2 mean add dot and sign */
-
 /**
  * Macros for specifying GML options. 
  * @{
index 4b45f3c540805ab3511a195a1a1e509aa70156a3..2a4edcda1af462df17299c6992a82b2a137608fb 100644 (file)
 */
 #define EPSILON_SQLMM 1e-8
 
+/*
+ * Export functions
+ */
+#define OUT_MAX_DOUBLE 1E15
+#define OUT_SHOW_DIGS_DOUBLE 20
+#define OUT_MAX_DOUBLE_PRECISION 15
+#define OUT_MAX_DIGS_DOUBLE (OUT_SHOW_DIGS_DOUBLE + 2) /* +2 mean add dot and sign */
+
+
 /**
 * Constants for point-in-polygon return values
 */
index f8cb5811f1b1ce8d779b4726c085ff3dede95a4c..bde305ac3eac38ae8e5a8d208fc85f38f3fba4b3 100644 (file)
@@ -207,7 +207,7 @@ Datum geography_as_gml(PG_FUNCTION_ARGS)
        int version;
        char *srs;
        int srid = SRID_DEFAULT;
-       int precision = OUT_MAX_DOUBLE_PRECISION;
+       int precision = DBL_DIG;
        int option=0;
        int lwopts = LW_GML_IS_DIMS;
        static const char *default_prefix = "gml:";
@@ -237,8 +237,9 @@ Datum geography_as_gml(PG_FUNCTION_ARGS)
        if (PG_NARGS() >2 && !PG_ARGISNULL(2))
        {
                precision = PG_GETARG_INT32(2);
-               if ( precision > OUT_MAX_DOUBLE_PRECISION )
-                       precision = OUT_MAX_DOUBLE_PRECISION;
+               /* TODO: leave this to liblwgeom */
+               if ( precision > DBL_DIG )
+                       precision = DBL_DIG;
                else if ( precision < 0 ) precision = 0;
        }
 
@@ -328,7 +329,7 @@ Datum geography_as_kml(PG_FUNCTION_ARGS)
        char *kml;
        text *result;
        int version;
-       int precision = OUT_MAX_DOUBLE_PRECISION;
+       int precision = DBL_DIG;
        static const char *default_prefix = "";
        char *prefixbuf;
        const char* prefix = default_prefix;
@@ -354,8 +355,9 @@ Datum geography_as_kml(PG_FUNCTION_ARGS)
        if (PG_NARGS() >2 && !PG_ARGISNULL(2))
        {
                precision = PG_GETARG_INT32(2);
-               if ( precision > OUT_MAX_DOUBLE_PRECISION )
-                       precision = OUT_MAX_DOUBLE_PRECISION;
+               /* TODO: leave this to liblwgeom */
+               if ( precision > DBL_DIG )
+                       precision = DBL_DIG;
                else if ( precision < 0 ) precision = 0;
        }
 
@@ -406,7 +408,7 @@ Datum geography_as_svg(PG_FUNCTION_ARGS)
        char *svg;
        text *result;
        int relative = 0;
-       int precision=OUT_MAX_DOUBLE_PRECISION;
+       int precision=DBL_DIG;
 
        if ( PG_ARGISNULL(0) ) PG_RETURN_NULL();
 
@@ -422,8 +424,9 @@ Datum geography_as_svg(PG_FUNCTION_ARGS)
        if ( PG_NARGS() > 2 && ! PG_ARGISNULL(2) )
        {
                precision = PG_GETARG_INT32(2);
-               if ( precision > OUT_MAX_DOUBLE_PRECISION )
-                       precision = OUT_MAX_DOUBLE_PRECISION;
+               /* TODO: leave this to liblwgeom */
+               if ( precision > DBL_DIG )
+                       precision = DBL_DIG;
                else if ( precision < 0 ) precision = 0;
        }
 
@@ -452,7 +455,7 @@ Datum geography_as_geojson(PG_FUNCTION_ARGS)
        int version;
        int option = 0;
        int has_bbox = 0;
-       int precision = OUT_MAX_DOUBLE_PRECISION;
+       int precision = DBL_DIG;
        char * srs = NULL;
 
        /* Get the version */
@@ -474,8 +477,9 @@ Datum geography_as_geojson(PG_FUNCTION_ARGS)
        if (PG_NARGS() >2 && !PG_ARGISNULL(2))
        {
                precision = PG_GETARG_INT32(2);
-               if ( precision > OUT_MAX_DOUBLE_PRECISION )
-                       precision = OUT_MAX_DOUBLE_PRECISION;
+               /* TODO: leave this to liblwgeom */
+               if ( precision > DBL_DIG )
+                       precision = DBL_DIG;
                else if ( precision < 0 ) precision = 0;
        }
 
index e0a551e982c121d4cc909e913797e01fad29b4d7..644d4e797fe2151111f5db55460965fec7dd8bf0 100644 (file)
@@ -14,6 +14,7 @@
  *  Commons functions for all export functions
  */
 
+#include "float.h" /* for DBL_DIG */
 #include "postgres.h"
 #include "executor/spi.h"
 
@@ -171,7 +172,7 @@ Datum LWGEOM_asGML(PG_FUNCTION_ARGS)
        int srid;
        int option = 0;
        int lwopts = LW_GML_IS_DIMS;
-       int precision = OUT_MAX_DOUBLE_PRECISION;
+       int precision = DBL_DIG;
        static const char* default_prefix = "gml:"; /* default prefix */
        const char* prefix = default_prefix;
        const char* gml_id = NULL;
@@ -194,8 +195,9 @@ Datum LWGEOM_asGML(PG_FUNCTION_ARGS)
        if (PG_NARGS() >2 && !PG_ARGISNULL(2))
        {
                precision = PG_GETARG_INT32(2);
-               if ( precision > OUT_MAX_DOUBLE_PRECISION )
-                       precision = OUT_MAX_DOUBLE_PRECISION;
+               /* TODO: leave this to liblwgeom ? */
+               if ( precision > DBL_DIG )
+                       precision = DBL_DIG;
                else if ( precision < 0 ) precision = 0;
        }
 
@@ -285,7 +287,7 @@ Datum LWGEOM_asKML(PG_FUNCTION_ARGS)
        char *kml;
        text *result;
        int version;
-       int precision = OUT_MAX_DOUBLE_PRECISION;
+       int precision = DBL_DIG;
        static const char* default_prefix = ""; /* default prefix */
        char *prefixbuf;
        const char* prefix = default_prefix;
@@ -307,9 +309,10 @@ Datum LWGEOM_asKML(PG_FUNCTION_ARGS)
        /* Retrieve precision if any (default is max) */
        if (PG_NARGS() >2 && !PG_ARGISNULL(2))
        {
+               /* TODO: leave this to liblwgeom ? */
                precision = PG_GETARG_INT32(2);
-               if ( precision > OUT_MAX_DOUBLE_PRECISION )
-                       precision = OUT_MAX_DOUBLE_PRECISION;
+               if ( precision > DBL_DIG )
+                       precision = DBL_DIG;
                else if ( precision < 0 ) precision = 0;
        }
 
@@ -363,7 +366,7 @@ Datum LWGEOM_asGeoJson(PG_FUNCTION_ARGS)
        int version;
        int option = 0;
        int has_bbox = 0;
-       int precision = OUT_MAX_DOUBLE_PRECISION;
+       int precision = DBL_DIG;
        char * srs = NULL;
 
        /* Get the version */
@@ -382,8 +385,8 @@ Datum LWGEOM_asGeoJson(PG_FUNCTION_ARGS)
        if (PG_NARGS() >2 && !PG_ARGISNULL(2))
        {
                precision = PG_GETARG_INT32(2);
-               if ( precision > OUT_MAX_DOUBLE_PRECISION )
-                       precision = OUT_MAX_DOUBLE_PRECISION;
+               if ( precision > DBL_DIG )
+                       precision = DBL_DIG;
                else if ( precision < 0 ) precision = 0;
        }
 
@@ -441,7 +444,7 @@ Datum LWGEOM_asSVG(PG_FUNCTION_ARGS)
        char *svg;
        text *result;
        int relative = 0;
-       int precision=OUT_MAX_DOUBLE_PRECISION;
+       int precision=DBL_DIG;
 
        if ( PG_ARGISNULL(0) ) PG_RETURN_NULL();
 
@@ -454,8 +457,9 @@ Datum LWGEOM_asSVG(PG_FUNCTION_ARGS)
        if ( PG_NARGS() > 2 && ! PG_ARGISNULL(2) )
        {
                precision = PG_GETARG_INT32(2);
-               if ( precision > OUT_MAX_DOUBLE_PRECISION )
-                       precision = OUT_MAX_DOUBLE_PRECISION;
+               /* TODO: leave this to liblwgeom ? */
+               if ( precision > DBL_DIG )
+                       precision = DBL_DIG;
                else if ( precision < 0 ) precision = 0;
        }
 
@@ -485,7 +489,7 @@ Datum LWGEOM_asX3D(PG_FUNCTION_ARGS)
        int option = 0;
        int is_deegree = 0;
        int is_dims = 1;
-       int precision = OUT_MAX_DOUBLE_PRECISION;
+       int precision = DBL_DIG;
        static const char* default_defid = "x3d:"; /* default defid */
        char *defidbuf;
        const char* defid = default_defid;
@@ -507,8 +511,9 @@ Datum LWGEOM_asX3D(PG_FUNCTION_ARGS)
        if (PG_NARGS() >2 && !PG_ARGISNULL(2))
        {
                precision = PG_GETARG_INT32(2);
-               if ( precision > OUT_MAX_DOUBLE_PRECISION )
-                       precision = OUT_MAX_DOUBLE_PRECISION;
+               /* TODO: leave this to liblwgeom ? */
+               if ( precision > DBL_DIG )
+                       precision = DBL_DIG;
                else if ( precision < 0 ) precision = 0;
        }