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

◆ wkt_pointarray_dimensionality()

static int wkt_pointarray_dimensionality ( POINTARRAY pa,
lwflags_t  flags 
)
static

Read the dimensionality from a flag, if provided.

Then check that the dimensionality matches that of the pointarray. If the dimension counts match, ensure the pointarray is using the right "Z" or "M".

Definition at line 183 of file lwin_wkt.c.

184{
185 int hasz = FLAGS_GET_Z(flags);
186 int hasm = FLAGS_GET_M(flags);
187 int ndims = 2 + hasz + hasm;
188
189 /* No dimensionality or array means we go with what we have */
190 if( ! (flags && pa) )
191 return LW_TRUE;
192
193 LWDEBUGF(5,"dimensionality ndims == %d", ndims);
194 LWDEBUGF(5,"FLAGS_NDIMS(pa->flags) == %d", FLAGS_NDIMS(pa->flags));
195
196 /*
197 * ndims > 2 implies that the flags have something useful to add,
198 * that there is a 'Z' or an 'M' or both.
199 */
200 if( ndims > 2 )
201 {
202 /* Mismatch implies a problem */
203 if ( FLAGS_NDIMS(pa->flags) != ndims )
204 return LW_FALSE;
205 /* Match means use the explicit dimensionality */
206 else
207 {
208 FLAGS_SET_Z(pa->flags, hasz);
209 FLAGS_SET_M(pa->flags, hasm);
210 }
211 }
212
213 return LW_TRUE;
214}
#define LW_FALSE
Definition liblwgeom.h:94
#define FLAGS_GET_Z(flags)
Definition liblwgeom.h:165
#define FLAGS_NDIMS(flags)
Definition liblwgeom.h:179
#define FLAGS_GET_M(flags)
Definition liblwgeom.h:166
#define LW_TRUE
Return types for functions with status returns.
Definition liblwgeom.h:93
#define FLAGS_SET_M(flags, value)
Definition liblwgeom.h:173
#define FLAGS_SET_Z(flags, value)
Definition liblwgeom.h:172
#define LWDEBUGF(level, msg,...)
Definition lwgeom_log.h:106
lwflags_t flags
Definition liblwgeom.h:431

References POINTARRAY::flags, FLAGS_GET_M, FLAGS_GET_Z, FLAGS_NDIMS, FLAGS_SET_M, FLAGS_SET_Z, LW_FALSE, LW_TRUE, and LWDEBUGF.

Referenced by wkt_parser_circularstring_new(), wkt_parser_linestring_new(), wkt_parser_point_new(), and wkt_parser_triangle_new().

Here is the caller graph for this function: