]> granicus.if.org Git - postgis/commitdiff
Added zmflag(geom) function.
authorSandro Santilli <strk@keybit.net>
Wed, 6 Oct 2004 08:53:24 +0000 (08:53 +0000)
committerSandro Santilli <strk@keybit.net>
Wed, 6 Oct 2004 08:53:24 +0000 (08:53 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@943 b70326c6-7e19-0410-871a-916f4a2858ee

lwgeom/lwgeom_functions_basic.c
lwgeom/lwpostgis.sql.in

index ae5edb7ddad7b85f6d88fc5aaaa7855de7cd8629..0678752df6bcd1d2c439fb6ec05b0a8c2334810f 100644 (file)
@@ -49,6 +49,7 @@ Datum LWGEOM_segmentize2d(PG_FUNCTION_ARGS);
 Datum LWGEOM_reverse(PG_FUNCTION_ARGS);
 Datum LWGEOM_forceRHR_poly(PG_FUNCTION_ARGS);
 Datum LWGEOM_noop(PG_FUNCTION_ARGS);
+Datum LWGEOM_zmflag(PG_FUNCTION_ARGS);
 
 // internal
 int32 lwgeom_nrings_recursive(char *serialized);
@@ -3007,3 +3008,22 @@ Datum LWGEOM_noop(PG_FUNCTION_ARGS)
 
        PG_RETURN_POINTER(out);
 }
+
+// Return:
+//  0==2d
+//  1==3dm
+//  2==3dz
+//  3==4d
+PG_FUNCTION_INFO_V1(LWGEOM_zmflag);
+Datum LWGEOM_zmflag(PG_FUNCTION_ARGS)
+{
+       PG_LWGEOM *in;
+       unsigned char type;
+       int ret = 0;
+
+       in = (PG_LWGEOM *)PG_DETOAST_DATUM_COPY(PG_GETARG_DATUM(0));
+       type = in->type;
+       if ( TYPE_HASZ(type) ) ret += 2;
+       if ( TYPE_HASM(type) ) ret += 1;
+       PG_RETURN_INT16(ret);
+}
index 9fc57c89b53f5fc7727f7cff38e03a2f1d8a9d40..3fd0e9dc0ce1003d5ff3230b6584b8dfdb31bed2 100644 (file)
@@ -1633,6 +1633,11 @@ CREATEFUNCTION noop(geometry)
        AS '@MODULE_FILENAME@', 'LWGEOM_noop'
        LANGUAGE 'C' WITH (iscachable,isstrict);
 
+CREATEFUNCTION zmflag(geometry)
+       RETURNS smallint
+       AS '@MODULE_FILENAME@', 'LWGEOM_zmflag'
+       LANGUAGE 'C' WITH (iscachable,isstrict);
+
 ------------------------------------------------------------------------
 
 --