ll[3] = (double)rndlat;
g = gserialized_from_lwgeom((LWGEOM*)lwline, 1, 0);
- g->flags = FLAGS_SET_GEODETIC(g->flags, 1);
+ FLAGS_SET_GEODETIC(g->flags, 1);
gbox_geocentric_slow = LW_FALSE;
gbox = gserialized_calculate_gbox_geocentric(g);
gbox_geocentric_slow = LW_TRUE;
#endif
lwg = lwgeom_from_ewkt(gbox_data[i], PARSER_CHECK_NONE);
g = gserialized_from_lwgeom(lwg, 1, 0);
- g->flags = FLAGS_SET_GEODETIC(g->flags, 1);
+ FLAGS_SET_GEODETIC(g->flags, 1);
lwgeom_free(lwg);
gbox_geocentric_slow = LW_FALSE;
gbox = gserialized_calculate_gbox_geocentric(g);
lwgeom_free(lwg1);
lwgeom_free(lwg2);
-}
\ No newline at end of file
+}
uchar flags = 0;
CU_ASSERT_EQUAL(0, FLAGS_GET_Z(flags));
- flags = FLAGS_SET_Z(flags, 1);
+ FLAGS_SET_Z(flags, 1);
CU_ASSERT_EQUAL(1, FLAGS_GET_Z(flags));
- flags = FLAGS_SET_Z(flags, 0);
+ FLAGS_SET_Z(flags, 0);
CU_ASSERT_EQUAL(0, FLAGS_GET_Z(flags));
CU_ASSERT_EQUAL(0, FLAGS_GET_BBOX(flags));
CU_ASSERT_EQUAL(0, FLAGS_GET_M(flags));
- flags = FLAGS_SET_M(flags, 1);
+ FLAGS_SET_M(flags, 1);
CU_ASSERT_EQUAL(1, FLAGS_GET_M(flags));
CU_ASSERT_EQUAL(0, FLAGS_GET_BBOX(flags));
- flags = FLAGS_SET_BBOX(flags, 1);
+ FLAGS_SET_BBOX(flags, 1);
CU_ASSERT_EQUAL(1, FLAGS_GET_BBOX(flags));
CU_ASSERT_EQUAL(0, FLAGS_GET_GEODETIC(flags));
- flags = FLAGS_SET_GEODETIC(flags, 1);
+ FLAGS_SET_GEODETIC(flags, 1);
CU_ASSERT_EQUAL(1, FLAGS_GET_GEODETIC(flags));
flags = 0;
{
uchar flags = gflags(0, 0, 0);
CU_ASSERT_EQUAL(gbox_serialized_size(flags),0);
- flags = FLAGS_SET_BBOX(flags, 1);
+ FLAGS_SET_BBOX(flags, 1);
CU_ASSERT_EQUAL(gbox_serialized_size(flags),16);
- flags = FLAGS_SET_Z(flags, 1);
+ FLAGS_SET_Z(flags, 1);
CU_ASSERT_EQUAL(gbox_serialized_size(flags),24);
- flags = FLAGS_SET_M(flags, 1);
+ FLAGS_SET_M(flags, 1);
CU_ASSERT_EQUAL(gbox_serialized_size(flags),32);
- flags = FLAGS_SET_GEODETIC(flags, 1);
+ FLAGS_SET_GEODETIC(flags, 1);
CU_ASSERT_EQUAL(gbox_serialized_size(flags),24);
}
lwgeom = lwgeom_from_ewkt("MULTIPOINT(-1 -1,-1 2.5,2 2,2 -1,1 1,2 2,4 5)", PARSER_CHECK_NONE);
CU_ASSERT_EQUAL(lwgeom_count_vertices(lwgeom),7);
g_ser1 = gserialized_from_lwgeom(lwgeom, 1, &ret_size);
- g_ser1->flags = FLAGS_SET_GEODETIC(g_ser1->flags, 1);
+ FLAGS_SET_GEODETIC(g_ser1->flags, 1);
lwgeom_free(lwgeom);
lwgeom = lwgeom_from_gserialized(g_ser1);
lwfree(box3d);
}
lwfree(gbox);
-}
\ No newline at end of file
+}
lwerror("Out of memory!");
return NULL;
}
- coord->flags = FLAGS_SET_READONLY(flags, 1);
+ coord->flags = flags;
+ FLAGS_SET_READONLY(coord->flags, 1);
return coord;
}
copy = (GCOORDINATE*)lwalloc(sizeof(GCOORDINATE));
if( ! copy ) return NULL;
- copy->flags = FLAGS_SET_READONLY(coord->flags, 1);
+ copy->flags = coord->flags;
+ FLAGS_SET_READONLY(copy->flags, 1);
copy->ordinates = (double*)lwalloc(sizeof(double) * FLAGS_NDIMS(copy->flags));
if( ! copy->ordinates ) return NULL;
memcpy(copy->ordinates, coord->ordinates, FLAGS_NDIMS(copy->flags) * sizeof(double));
result = lwgeom_calculate_gbox(geom, &gbox);
if( result == G_SUCCESS )
{
- gbox.flags = FLAGS_SET_BBOX(gbox.flags, 1);
+ FLAGS_SET_BBOX(gbox.flags, 1);
expected_box_size = gbox_serialized_size(gbox.flags);
}
}
{
unsigned char flags = 0;
if ( hasz )
- flags = FLAGS_SET_Z(flags, 1);
+ FLAGS_SET_Z(flags, 1);
if ( hasm )
- flags = FLAGS_SET_M(flags, 1);
+ FLAGS_SET_M(flags, 1);
if ( geodetic )
- flags = FLAGS_SET_GEODETIC(flags, 1);
+ FLAGS_SET_GEODETIC(flags, 1);
return flags;
}
#define FLAGS_GET_BBOX(flags) (((flags) & 0x4)>>2)
#define FLAGS_GET_GEODETIC(flags) (((flags) & 0x08)>>3)
#define FLAGS_GET_READONLY(flags) (((flags) & 0x10)>>4)
-#define FLAGS_SET_Z(flags, value) ((value) ? ((flags) | 0x01) : ((flags) & 0xFE))
-#define FLAGS_SET_M(flags, value) ((value) ? ((flags) | 0x02) : ((flags) & 0xFD))
-#define FLAGS_SET_BBOX(flags, value) ((value) ? ((flags) | 0x04) : ((flags) & 0xFB))
-#define FLAGS_SET_GEODETIC(flags, value) ((value) ? ((flags) | 0x08) : ((flags) & 0xF7))
-#define FLAGS_SET_READONLY(flags, value) ((value) ? ((flags) | 0x10) : ((flags) & 0xEF))
+#define FLAGS_SET_Z(flags, value) ((flags) = (value) ? ((flags) | 0x01) : ((flags) & 0xFE))
+#define FLAGS_SET_M(flags, value) ((flags) = (value) ? ((flags) | 0x02) : ((flags) & 0xFD))
+#define FLAGS_SET_BBOX(flags, value) ((flags) = (value) ? ((flags) | 0x04) : ((flags) & 0xFB))
+#define FLAGS_SET_GEODETIC(flags, value) ((flags) = (value) ? ((flags) | 0x08) : ((flags) & 0xF7))
+#define FLAGS_SET_READONLY(flags, value) ((flags) = (value) ? ((flags) | 0x10) : ((flags) & 0xEF))
#define FLAGS_NDIMS(flags) (2 + FLAGS_GET_Z(flags) + FLAGS_GET_M(flags))
/**
geometry = lwgeom_from_gserialized(serialized);
/* Convert coordinates to 3D geodesic */
- search_box.flags = FLAGS_SET_GEODETIC(search_box.flags, 1);
+ FLAGS_SET_GEODETIC(search_box.flags, 1);
if (!lwgeom_calculate_gbox_geodetic(geometry, &search_box))
{
POSTGIS_DEBUG(3, " search box cannot be calculated");
sampleboxes = palloc(sizeof(GBOX *) * samplerows);
/* Mark the GBOX as being geodetic */
- gbox.flags = FLAGS_SET_GEODETIC(gbox.flags, 1);
+ FLAGS_SET_GEODETIC(gbox.flags, 1);
/*
* First scan:
ptr = g_out->data;
ptr += box_size;
memcpy(ptr, g->data, VARSIZE(g) - 8);
- g_out->flags = FLAGS_SET_BBOX(g_out->flags, 1);
+ FLAGS_SET_BBOX(g_out->flags, 1);
SET_VARSIZE(g_out, varsize_new);
}
** functions do the right thing.
*/
g_ser = geography_serialize(lwgeom);
- g_ser->flags = FLAGS_SET_GEODETIC(g_ser->flags, 1);
+ FLAGS_SET_GEODETIC(g_ser->flags, 1);
/*
** Replace the unaligned lwgeom with a new aligned one based on GSERIALIZED.
** functions do the right thing.
*/
g_ser = geography_serialize(lwgeom);
- g_ser->flags = FLAGS_SET_GEODETIC(g_ser->flags, 1);
+ FLAGS_SET_GEODETIC(g_ser->flags, 1);
/*
** Replace the unaligned lwgeom with a new aligned one based on GSERIALIZED.