43 #define M_PI 3.14159265358979323846
47 #define M_PI_2 1.57079632679489661923
51 #define M_SQRT_2 0.707106781186547524401
55 #define M_SQRT2 1.41421356237309504880
61 void sort(
void** items,
int N,
bool ( *greater )(
void *l,
void *r ) )
67 unsigned int n = (
unsigned int ) N, i = n / 2, parent, child;
89 if ( child + 1 < n && greater( items[child + 1], items[child] ) )
93 if ( greater( items[child], t ) )
95 items[parent] = items[child];
97 child = parent * 2 + 1;
108 inline bool ptrGeomEq(
const GEOSGeometry *l,
const GEOSGeometry *r )
118 const GEOSGeometry *geom;
120 queue->
append( the_geom );
124 while ( queue->
size() > 0 )
128 switch ( GEOSGeomTypeId_r( geosctxt, geom ) )
130 case GEOS_MULTIPOINT:
131 case GEOS_MULTILINESTRING:
132 case GEOS_MULTIPOLYGON:
133 nGeom = GEOSGetNumGeometries_r( geosctxt, geom );
134 for ( i = 0; i < nGeom; i++ )
136 queue->
append( GEOSGetGeometryN_r( geosctxt, geom, i ) );
140 case GEOS_LINESTRING:
142 final_queue->
append( geom );
bool ptrGeomEq(const GEOSGeometry *l, const GEOSGeometry *r)
QLinkedList< const GEOSGeometry * > * unmulti(const GEOSGeometry *the_geom)
GEOSContextHandle_t geosContext()
Get GEOS context handle to be used in all GEOS library calls with reentrant API.
void sort(void **items, int N, bool(*greater)(void *l, void *r))
Sort an array of pointers.
void append(const T &value)