39 QLinkedList<const GEOSGeometry *> *queue =
new QLinkedList<const GEOSGeometry *>;
40 QLinkedList<const GEOSGeometry *> *final_queue =
new QLinkedList<const GEOSGeometry *>;
44 queue->append( the_geom );
50 while ( !queue->isEmpty() )
52 geom = queue->takeFirst();
53 const int type = GEOSGeomTypeId_r( geosctxt, geom );
57 case GEOS_MULTILINESTRING:
58 case GEOS_MULTIPOLYGON:
59 case GEOS_GEOMETRYCOLLECTION:
60 nGeom = GEOSGetNumGeometries_r( geosctxt, geom );
61 for ( i = 0; i < nGeom; i++ )
63 queue->append( GEOSGetGeometryN_r( geosctxt, geom, i ) );
69 final_queue->append( geom );
72 QgsDebugError( QStringLiteral(
"unexpected geometry type:%1" ).arg( type ) );
static GEOSContextHandle_t get()
Returns a thread local instance of a GEOS context, safe for use in the current thread.