39 #define M_PI 3.14159265358979323846 43 #define M_PI_2 1.57079632679489661923 47 #define M_SQRT2 1.41421356237309504880 50 void pal::Util::sort(
void** items,
int N,
bool ( *greater )(
void *l,
void *r ) )
56 unsigned int n =
static_cast< unsigned int >( N ), i = n / 2, parent, child;
78 if ( child + 1 < n && greater( items[child + 1], items[child] ) )
82 if ( greater( items[child], t ) )
84 items[parent] = items[child];
86 child = parent * 2 + 1;
102 const GEOSGeometry *geom;
104 queue->
append( the_geom );
112 switch ( GEOSGeomTypeId_r( geosctxt, geom ) )
114 case GEOS_MULTIPOINT:
115 case GEOS_MULTILINESTRING:
116 case GEOS_MULTIPOLYGON:
117 nGeom = GEOSGetNumGeometries_r( geosctxt, geom );
118 for ( i = 0; i < nGeom; i++ )
120 queue->
append( GEOSGetGeometryN_r( geosctxt, geom, i ) );
124 case GEOS_LINESTRING:
126 final_queue->
append( geom );
static QLinkedList< const GEOSGeometry * > * unmulti(const GEOSGeometry *the_geom)
static void sort(void **items, int N, bool(*greater)(void *l, void *r))
Sort an array of pointers.
GEOSContextHandle_t geosContext()
Get GEOS context handle to be used in all GEOS library calls with reentrant API.
void append(const T &value)