]> granicus.if.org Git - postgis/commitdiff
Catch remaining detoasting calls and replace with MACRO
authorPaul Ramsey <pramsey@cleverelephant.ca>
Wed, 4 Mar 2015 21:05:19 +0000 (21:05 +0000)
committerPaul Ramsey <pramsey@cleverelephant.ca>
Wed, 4 Mar 2015 21:05:19 +0000 (21:05 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@13307 b70326c6-7e19-0410-871a-916f4a2858ee

15 files changed:
libpgcommon/lwgeom_pg.h
postgis/geography_inout.c
postgis/geography_measurement.c
postgis/lwgeom_btree.c
postgis/lwgeom_dump.c
postgis/lwgeom_dumppoints.c
postgis/lwgeom_functions_basic.c
postgis/lwgeom_geos.c
postgis/lwgeom_inout.c
postgis/lwgeom_ogc.c
postgis/lwgeom_sfcgal.c
postgis/lwgeom_transform.c
raster/rt_pg/rtpg_geometry.c
raster/rt_pg/rtpg_mapalgebra.c
raster/rt_pg/rtpg_pixel.c

index b14e674b7fbc2049fd617da0476fcea240292c61..88f2c4c86f5336afb2bc4e2b8a0e63468a5403ab 100644 (file)
 /* Install PosgreSQL handlers for liblwgeom use */
 void pg_install_lwgeom_handlers(void);
 
+/* Argument handling macros */
 #define PG_GETARG_GSERIALIZED_P(varno) ((GSERIALIZED *)PG_DETOAST_DATUM(PG_GETARG_DATUM(varno)))
+#define PG_GETARG_GSERIALIZED_P_COPY(varno) ((GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(varno)))
+#define PG_GETARG_GSERIALIZED_P_SLICE(varno, start, size) ((GSERIALIZED *)PG_DETOAST_DATUM_SLICE(PG_GETARG_DATUM(varno), start, size))
 
 /* Debugging macros */
 #if POSTGIS_DEBUG_LEVEL > 0
index 523e8afe1ffa0d1d799e3cb8eac16a0b1cab6830..b5700fbcb0e5c923afda893357a7262ce9476100 100644 (file)
@@ -567,7 +567,7 @@ Datum geography_from_binary(PG_FUNCTION_ARGS)
 PG_FUNCTION_INFO_V1(geography_from_geometry);
 Datum geography_from_geometry(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *geom = (GSERIALIZED*)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       GSERIALIZED *geom = PG_GETARG_GSERIALIZED_P_COPY(0);
        LWGEOM *lwgeom = NULL;
        GSERIALIZED *g_ser = NULL;
 
index fd0214f570c5e3cc719c26c420fe507776f5928e..b848ead2afe22631df66cd1a7e8cbec29fa0b57f 100644 (file)
@@ -365,7 +365,7 @@ Datum geography_expand(PG_FUNCTION_ARGS)
        double distance;
 
        /* Get a wholly-owned pointer to the geography */
-       g = (GSERIALIZED*)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       g = PG_GETARG_GSERIALIZED_P_COPY(0);
 
        /* Read our distance value and normalize to unit-sphere. */
        distance = PG_GETARG_FLOAT8(1) / WGS84_RADIUS;
index 4b161b48cb33511138db26dfb00dd3378e51b4f2..3553ea5eaea9065ce7655c46143157700e969eaa 100644 (file)
@@ -44,8 +44,8 @@ Datum lwgeom_cmp(PG_FUNCTION_ARGS);
 PG_FUNCTION_INFO_V1(lwgeom_lt);
 Datum lwgeom_lt(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *geom1 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       GSERIALIZED *geom2 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0);
+       GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1);
        GBOX box1;
        GBOX box2;
 
@@ -100,8 +100,8 @@ Datum lwgeom_lt(PG_FUNCTION_ARGS)
 PG_FUNCTION_INFO_V1(lwgeom_le);
 Datum lwgeom_le(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *geom1 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       GSERIALIZED *geom2 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0);
+       GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1);
        GBOX box1;
        GBOX box2;
 
@@ -164,8 +164,8 @@ Datum lwgeom_le(PG_FUNCTION_ARGS)
 PG_FUNCTION_INFO_V1(lwgeom_eq);
 Datum lwgeom_eq(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *geom1 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       GSERIALIZED *geom2 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0);
+       GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1);
        GBOX box1;
        GBOX box2;
   bool empty1, empty2;
@@ -210,8 +210,8 @@ Datum lwgeom_eq(PG_FUNCTION_ARGS)
 PG_FUNCTION_INFO_V1(lwgeom_ge);
 Datum lwgeom_ge(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *geom1 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       GSERIALIZED *geom2 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0);
+       GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1);
        GBOX box1;
        GBOX box2;
 
@@ -274,8 +274,8 @@ Datum lwgeom_ge(PG_FUNCTION_ARGS)
 PG_FUNCTION_INFO_V1(lwgeom_gt);
 Datum lwgeom_gt(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *geom1 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       GSERIALIZED *geom2 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0);
+       GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1);
        GBOX box1;
        GBOX box2;
 
@@ -334,8 +334,8 @@ Datum lwgeom_gt(PG_FUNCTION_ARGS)
 PG_FUNCTION_INFO_V1(lwgeom_cmp);
 Datum lwgeom_cmp(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *geom1 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       GSERIALIZED *geom2 = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0);
+       GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1);
        GBOX box1;
        GBOX box2;
 
index 26d5aecf644f672836e289913f8a45074459ada7..d322ecb57fdbf85ac6cabcf411e49a708b910973 100644 (file)
@@ -79,7 +79,7 @@ Datum LWGEOM_dump(PG_FUNCTION_ARGS)
 
                oldcontext = MemoryContextSwitchTo(newcontext);
 
-               pglwgeom = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+               pglwgeom = PG_GETARG_GSERIALIZED_P_COPY(0);
                lwgeom = lwgeom_from_gserialized(pglwgeom);
 
                /* Create function state */
@@ -222,7 +222,7 @@ Datum LWGEOM_dump_rings(PG_FUNCTION_ARGS)
 
                oldcontext = MemoryContextSwitchTo(newcontext);
 
-               pglwgeom = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+               pglwgeom = PG_GETARG_GSERIALIZED_P_COPY(0);
                if ( gserialized_get_type(pglwgeom) != POLYGONTYPE )
                {
                        lwerror("Input is not a polygon");
index c26d514c86ea146dfe19931d36f10965a2fd8fdf..7c2757834bababc6a0a844b808c09695c2e13daf 100644 (file)
@@ -8,6 +8,7 @@
 #include "funcapi.h"
 
 #include "../postgis_config.h"
+#include "lwgeom_pg.h"
 #if POSTGIS_PGSQL_VERSION > 92
 #include "access/htup_details.h"
 #endif
@@ -69,7 +70,7 @@ Datum LWGEOM_dumppoints(PG_FUNCTION_ARGS) {
                oldcontext = MemoryContextSwitchTo(newcontext);
 
                /* get a local copy of what we're doing a dump points on */
-               pglwgeom = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+               pglwgeom = PG_GETARG_GSERIALIZED_P_COPY(0);
                lwgeom = lwgeom_from_gserialized(pglwgeom);
 
                /* return early if nothing to do */
index f0380d477992c748ab70bb3251b40d6a1b045b67..2c137c0d23e211bac74552dcb7845048a9f4ba1c 100644 (file)
@@ -104,7 +104,7 @@ Datum ST_IsCollection(PG_FUNCTION_ARGS);
 PG_FUNCTION_INFO_V1(LWGEOM_mem_size);
 Datum LWGEOM_mem_size(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *geom = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       GSERIALIZED *geom = PG_GETARG_GSERIALIZED_P(0);
        size_t size = VARSIZE(geom);
        PG_FREE_IF_COPY(geom,0);
        PG_RETURN_INT32(size);
@@ -1070,7 +1070,7 @@ Datum LWGEOM_longitude_shift(PG_FUNCTION_ARGS)
 
        POSTGIS_DEBUG(2, "LWGEOM_longitude_shift called.");
 
-       geom = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       geom = PG_GETARG_GSERIALIZED_P_COPY(0);
        lwgeom = lwgeom_from_gserialized(geom);
 
        /* Drop bbox, will be recomputed */
@@ -1857,7 +1857,7 @@ Datum LWGEOM_envelope(PG_FUNCTION_ARGS)
 PG_FUNCTION_INFO_V1(LWGEOM_isempty);
 Datum LWGEOM_isempty(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *geom = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       GSERIALIZED *geom = PG_GETARG_GSERIALIZED_P(0);
        LWGEOM *lwgeom = lwgeom_from_gserialized(geom);
        bool empty = lwgeom_is_empty(lwgeom);
 
@@ -1944,7 +1944,7 @@ Datum LWGEOM_reverse(PG_FUNCTION_ARGS)
 
        POSTGIS_DEBUG(2, "LWGEOM_reverse called");
 
-       geom = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       geom = PG_GETARG_GSERIALIZED_P_COPY(0);
 
        lwgeom = lwgeom_from_gserialized(geom);
        lwgeom_reverse(lwgeom);
@@ -1963,7 +1963,7 @@ Datum LWGEOM_force_clockwise_poly(PG_FUNCTION_ARGS)
 
        POSTGIS_DEBUG(2, "LWGEOM_force_clockwise_poly called");
 
-       ingeom = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       ingeom = PG_GETARG_GSERIALIZED_P_COPY(0);
 
        lwgeom = lwgeom_from_gserialized(ingeom);
        lwgeom_force_clockwise(lwgeom);
@@ -2162,7 +2162,7 @@ Datum ST_IsCollection(PG_FUNCTION_ARGS)
        /* header + srid/flags + bbox? + type number */
        size = VARHDRSZ + 8 + 32 + 4;  
 
-       geom = (GSERIALIZED*)PG_DETOAST_DATUM_SLICE(PG_GETARG_DATUM(0), 0, size);
+       geom = PG_GETARG_GSERIALIZED_P_SLICE(0, 0, size);
 
        type = gserialized_get_type(geom);
        PG_RETURN_BOOL(lwtype_is_collection(type));
@@ -2339,7 +2339,7 @@ Datum LWGEOM_setpoint_linestring(PG_FUNCTION_ARGS)
        POSTGIS_DEBUG(2, "LWGEOM_setpoint_linestring called.");
 
        /* we copy input as we're going to modify it */
-       pglwg1 = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       pglwg1 = PG_GETARG_GSERIALIZED_P_COPY(0);
 
        which = PG_GETARG_INT32(1);
        pglwg2 = PG_GETARG_GSERIALIZED_P(2);
@@ -2551,7 +2551,7 @@ Datum optimistic_overlap(PG_FUNCTION_ARGS)
 PG_FUNCTION_INFO_V1(LWGEOM_affine);
 Datum LWGEOM_affine(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *geom = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       GSERIALIZED *geom = PG_GETARG_GSERIALIZED_P_COPY(0);
        LWGEOM *lwgeom = lwgeom_from_gserialized(geom);
        GSERIALIZED *ret;
        AFFINE affine;
@@ -2694,7 +2694,7 @@ Datum ST_RemoveRepeatedPoints(PG_FUNCTION_ARGS);
 PG_FUNCTION_INFO_V1(ST_RemoveRepeatedPoints);
 Datum ST_RemoveRepeatedPoints(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *input = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       GSERIALIZED *input = PG_GETARG_GSERIALIZED_P_COPY(0);
        GSERIALIZED *output;
        LWGEOM *lwgeom_in = lwgeom_from_gserialized(input);
        LWGEOM *lwgeom_out;
@@ -2714,7 +2714,7 @@ Datum ST_FlipCoordinates(PG_FUNCTION_ARGS);
 PG_FUNCTION_INFO_V1(ST_FlipCoordinates);
 Datum ST_FlipCoordinates(PG_FUNCTION_ARGS)
 {
-       GSERIALIZED *in = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       GSERIALIZED *in = PG_GETARG_GSERIALIZED_P_COPY(0);
        GSERIALIZED *out;
        LWGEOM *lwgeom = lwgeom_from_gserialized(in);
 
@@ -2758,7 +2758,7 @@ Datum ST_SwapOrdinates(PG_FUNCTION_ARGS)
   o1 = ordname2ordval( ospec[0] );
   o2 = ordname2ordval( ospec[1] );
 
-  in = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+  in = PG_GETARG_GSERIALIZED_P_COPY(0);
 
   /* Check presence of given ordinates */
   if ( ( o1 == LWORD_M || o2 == LWORD_M ) && ! gserialized_has_m(in) )
index 2b6837b00b11d0fa74173b5e2decd3a244bb59c3..6b1545e87855c6e65ee153d1ec3ed624d61e5b05 100644 (file)
@@ -1348,7 +1348,7 @@ Datum ST_OffsetCurve(PG_FUNCTION_ARGS)
        
        /* Read SQL arguments */
        nargs = PG_NARGS();
-       gser_input = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       gser_input = PG_GETARG_GSERIALIZED_P(0);
        size = PG_GETARG_FLOAT8(1);
 
        /* Check for a useable type */
@@ -1593,7 +1593,7 @@ Datum centroid(PG_FUNCTION_ARGS)
        GSERIALIZED *geom, *result;
        GEOSGeometry *geosgeom, *geosresult;
 
-       geom = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       geom = PG_GETARG_GSERIALIZED_P(0);
 
        /* Empty.Centroid() == Point Empty */
        if ( gserialized_is_empty(geom) )
index c9125cdf6b16d59931740692eb817a43ec3bb3a8..799e6e9a9d1fcfd78a26a3b1d7b81350366e6120 100644 (file)
@@ -162,7 +162,7 @@ PG_FUNCTION_INFO_V1(LWGEOM_to_latlon);
 Datum LWGEOM_to_latlon(PG_FUNCTION_ARGS)
 {
        /* Get the parameters */
-       GSERIALIZED *pg_lwgeom = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       GSERIALIZED *pg_lwgeom = PG_GETARG_GSERIALIZED_P(0);
        text *format_text = PG_GETARG_TEXT_P(1);
 
        LWGEOM *lwgeom;
index c934cf9cd6981ca88536cc271a7d55d8a84cfcba..4763e3662dbc720800c296f4a4738277ac4b587a 100644 (file)
@@ -113,7 +113,7 @@ Datum LWGEOM_getTYPE(PG_FUNCTION_ARGS)
        uint8_t type;
        static int maxtyplen = 20;
 
-       gser = (GSERIALIZED*)PG_DETOAST_DATUM_SLICE(PG_GETARG_DATUM(0), 0, gserialized_max_header_size());
+       gser = PG_GETARG_GSERIALIZED_P_SLICE(0, 0, gserialized_max_header_size());
        text_ob = palloc0(VARHDRSZ + maxtyplen);
        result = VARDATA(text_ob);
 
@@ -173,7 +173,7 @@ Datum geometry_geometrytype(PG_FUNCTION_ARGS)
        char type_str[type_str_len];
 
        /* Read just the header from the toasted tuple */
-       gser = (GSERIALIZED*)PG_DETOAST_DATUM_SLICE(PG_GETARG_DATUM(0), 0, gserialized_max_header_size());
+       gser = PG_GETARG_GSERIALIZED_P_SLICE(0, 0, gserialized_max_header_size());
 
        /* Make it empty string to start */
        type_str[0] = 0;
index d97dc2f432d30207ecdcb65adb85389969b50d28..8fcee8030052bd277c6eecf9600b8b93e04c55ae 100644 (file)
@@ -144,7 +144,7 @@ Datum sfcgal_area(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input = PG_GETARG_GSERIALIZED_P(0);
        geom = POSTGIS2SFCGALGeometry(input);
 
        result = sfcgal_geometry_area(geom);
@@ -165,7 +165,7 @@ Datum sfcgal_area3D(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input = PG_GETARG_GSERIALIZED_P(0);
        geom = POSTGIS2SFCGALGeometry(input);
 
        result = sfcgal_geometry_area_3d(geom);
@@ -186,7 +186,7 @@ Datum sfcgal_is_planar(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input = PG_GETARG_GSERIALIZED_P(0);
        geom = POSTGIS2SFCGALGeometry(input);
 
        result = sfcgal_geometry_is_planar(geom);
@@ -207,7 +207,7 @@ Datum sfcgal_orientation(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input = PG_GETARG_GSERIALIZED_P(0);
        geom = POSTGIS2SFCGALGeometry(input);
 
        result = sfcgal_geometry_orientation(geom);
@@ -228,8 +228,8 @@ Datum sfcgal_intersects(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input0 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       input1 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       input0 = PG_GETARG_GSERIALIZED_P(0);
+       input1 = PG_GETARG_GSERIALIZED_P(1);
        geom0 = POSTGIS2SFCGALGeometry(input0);
        PG_FREE_IF_COPY(input0, 0);
        geom1 = POSTGIS2SFCGALGeometry(input1);
@@ -252,8 +252,8 @@ Datum sfcgal_intersects3D(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input0 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       input1 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       input0 = PG_GETARG_GSERIALIZED_P(0);
+       input1 = PG_GETARG_GSERIALIZED_P(1);
        geom0 = POSTGIS2SFCGALGeometry(input0);
        PG_FREE_IF_COPY(input0, 0);
        geom1 = POSTGIS2SFCGALGeometry(input1);
@@ -276,8 +276,8 @@ Datum sfcgal_distance(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input0 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       input1 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       input0 = PG_GETARG_GSERIALIZED_P(0);
+       input1 = PG_GETARG_GSERIALIZED_P(1);
        geom0 = POSTGIS2SFCGALGeometry(input0);
        PG_FREE_IF_COPY(input0, 0);
        geom1 = POSTGIS2SFCGALGeometry(input1);
@@ -300,8 +300,8 @@ Datum sfcgal_distance3D(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input0 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
-       input1 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       input0 = PG_GETARG_GSERIALIZED_P(0);
+       input1 = PG_GETARG_GSERIALIZED_P(1);
        geom0 = POSTGIS2SFCGALGeometry(input0);
        PG_FREE_IF_COPY(input0, 0);
        geom1 = POSTGIS2SFCGALGeometry(input1);
@@ -325,7 +325,7 @@ Datum sfcgal_tesselate(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input = PG_GETARG_GSERIALIZED_P(0);
        srid = gserialized_get_srid(input);
        geom = POSTGIS2SFCGALGeometry(input);
        PG_FREE_IF_COPY(input, 0);
@@ -350,7 +350,7 @@ Datum sfcgal_triangulate(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input = PG_GETARG_GSERIALIZED_P(0);
        srid = gserialized_get_srid(input);
        geom = POSTGIS2SFCGALGeometry(input);
        PG_FREE_IF_COPY(input, 0);
@@ -375,7 +375,7 @@ Datum sfcgal_force_lhr(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input = PG_GETARG_GSERIALIZED_P(0);
        srid = gserialized_get_srid(input);
        geom = POSTGIS2SFCGALGeometry(input);
        PG_FREE_IF_COPY(input, 0);
@@ -400,7 +400,7 @@ Datum sfcgal_straight_skeleton(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input = PG_GETARG_GSERIALIZED_P(0);
        srid = gserialized_get_srid(input);
        geom = POSTGIS2SFCGALGeometry(input);
        PG_FREE_IF_COPY(input, 0);
@@ -425,9 +425,9 @@ Datum sfcgal_intersection(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input0 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input0 = PG_GETARG_GSERIALIZED_P(0);
        srid = gserialized_get_srid(input0);
-       input1 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       input1 = PG_GETARG_GSERIALIZED_P(1);
        geom0 = POSTGIS2SFCGALGeometry(input0);
        PG_FREE_IF_COPY(input0, 0);
        geom1 = POSTGIS2SFCGALGeometry(input1);
@@ -454,9 +454,9 @@ Datum sfcgal_intersection3D(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input0 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input0 = PG_GETARG_GSERIALIZED_P(0);
        srid = gserialized_get_srid(input0);
-       input1 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       input1 = PG_GETARG_GSERIALIZED_P(1);
        geom0 = POSTGIS2SFCGALGeometry(input0);
        PG_FREE_IF_COPY(input0, 0);
        geom1 = POSTGIS2SFCGALGeometry(input1);
@@ -483,9 +483,9 @@ Datum sfcgal_minkowski_sum(PG_FUNCTION_ARGS)
 
        sfcgal_postgis_init();
 
-       input0 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       input0 = PG_GETARG_GSERIALIZED_P(0);
        srid = gserialized_get_srid(input0);
-       input1 = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(1));
+       input1 = PG_GETARG_GSERIALIZED_P(1);
        geom0 = POSTGIS2SFCGALGeometry(input0);
        PG_FREE_IF_COPY(input0, 0);
        geom1 = POSTGIS2SFCGALGeometry(input1);
@@ -513,7 +513,7 @@ Datum sfcgal_extrude(PG_FUNCTION_ARGS)
 
     sfcgal_postgis_init();
     
-    input = (GSERIALIZED*) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+    input = PG_GETARG_GSERIALIZED_P(0);
     srid = gserialized_get_srid(input);
 
     geom = POSTGIS2SFCGALGeometry(input);
index cfedca5e26fe2e2177441981040828fe7459c9ad..f4711ed8e24ea5a96d39226a46be2b4d28078d62 100644 (file)
@@ -46,7 +46,7 @@ Datum transform(PG_FUNCTION_ARGS)
                PG_RETURN_NULL();
        }
 
-       geom = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       geom = PG_GETARG_GSERIALIZED_P_COPY(0);
        input_srid = gserialized_get_srid(geom);
        if ( input_srid == SRID_UNKNOWN )
        {
@@ -118,7 +118,7 @@ Datum transform_geom(PG_FUNCTION_ARGS)
                PG_RETURN_NULL();
        }
 
-       geom = (GSERIALIZED *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       geom = PG_GETARG_GSERIALIZED_P_COPY(0);
        if (gserialized_get_srid(geom) == SRID_UNKNOWN)
        {
                pfree(geom);
index bbbabefae68956930e05fb068186c7518fe7e48c..d305d97d3da005ebb13882bfb3f34cb82468ddd4 100644 (file)
@@ -794,7 +794,7 @@ Datum RASTER_asRaster(PG_FUNCTION_ARGS)
        if (PG_ARGISNULL(0)) 
                PG_RETURN_NULL();
 
-       gser = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
+       gser = PG_GETARG_GSERIALIZED_P(0);
        geom = lwgeom_from_gserialized(gser);
 
        /* Get a 2D version of the geometry if necessary */
index 54a9cf62dd73ee4fc952c3c997036eed2d8e4647..372cd73fe3f1362a36e13c85b63a34a98b2f4c41 100644 (file)
@@ -3049,7 +3049,7 @@ Datum RASTER_clip(PG_FUNCTION_ARGS)
        srid = clamp_srid(rt_raster_get_srid(arg->raster));
 
        /* geometry (2) */
-       gser = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(2));
+       gser = PG_GETARG_GSERIALIZED_P(2);
        geom = lwgeom_from_gserialized(gser);
 
        /* Get a 2D version of the geometry if necessary */
index b9f3f0265074e1ffc6ecaa6a336b918b4701c2fd..ba0967c29c9de2e569f9e99e06e3a0c24f3cb3a8 100644 (file)
@@ -36,6 +36,8 @@
 #include "catalog/pg_type.h" /* for INT2OID, INT4OID, FLOAT4OID, FLOAT8OID and TEXTOID */
 
 #include "../../postgis_config.h"
+#include "lwgeom_pg.h"
+
 
 #if POSTGIS_PGSQL_VERSION > 92
 #include "access/htup_details.h" /* for heap_form_tuple() */
@@ -1871,7 +1873,7 @@ Datum RASTER_nearestValue(PG_FUNCTION_ARGS)
        }
 
        /* point */
-       geom = (GSERIALIZED *) PG_DETOAST_DATUM(PG_GETARG_DATUM(2));
+       geom = PG_GETARG_GSERIALIZED_P(2);
        if (gserialized_get_type(geom) != POINTTYPE) {
                elog(NOTICE, "Geometry provided must be a point");
                rt_raster_destroy(raster);