51   wkbPtr -= 1 + 
sizeof( int );
 
   59       geom->fromWkb( wkbPtr );  
 
   74   QString trimmed = text.trimmed();
 
   75   std::unique_ptr< QgsAbstractGeometry> geom;
 
   76   if ( trimmed.startsWith( QLatin1String( 
"Point" ), Qt::CaseInsensitive ) )
 
   78     geom = qgis::make_unique< QgsPoint >();
 
   80   else if ( trimmed.startsWith( QLatin1String( 
"LineString" ), Qt::CaseInsensitive ) )
 
   82     geom = qgis::make_unique< QgsLineString >();
 
   84   else if ( trimmed.startsWith( QLatin1String( 
"CircularString" ), Qt::CaseInsensitive ) )
 
   86     geom = qgis::make_unique< QgsCircularString >();
 
   88   else if ( trimmed.startsWith( QLatin1String( 
"CompoundCurve" ), Qt::CaseInsensitive ) )
 
   90     geom = qgis::make_unique< QgsCompoundCurve>();
 
   92   else if ( trimmed.startsWith( QLatin1String( 
"Polygon" ), Qt::CaseInsensitive ) )
 
   94     geom = qgis::make_unique< QgsPolygon >();
 
   96   else if ( trimmed.startsWith( QLatin1String( 
"Triangle" ), Qt::CaseInsensitive ) )
 
   98     geom = qgis::make_unique< QgsTriangle >();
 
  100   else if ( trimmed.startsWith( QLatin1String( 
"CurvePolygon" ), Qt::CaseInsensitive ) )
 
  102     geom = qgis::make_unique< QgsCurvePolygon >();
 
  104   else if ( trimmed.startsWith( QLatin1String( 
"MultiPoint" ), Qt::CaseInsensitive ) )
 
  106     geom = qgis::make_unique< QgsMultiPoint >();
 
  108   else if ( trimmed.startsWith( QLatin1String( 
"MultiCurve" ), Qt::CaseInsensitive ) )
 
  110     geom = qgis::make_unique< QgsMultiCurve >();
 
  112   else if ( trimmed.startsWith( QLatin1String( 
"MultiLineString" ), Qt::CaseInsensitive ) )
 
  114     geom = qgis::make_unique< QgsMultiLineString >();
 
  116   else if ( trimmed.startsWith( QLatin1String( 
"MultiSurface" ), Qt::CaseInsensitive ) )
 
  118     geom = qgis::make_unique< QgsMultiSurface >();
 
  120   else if ( trimmed.startsWith( QLatin1String( 
"MultiPolygon" ), Qt::CaseInsensitive ) )
 
  122     geom = qgis::make_unique< QgsMultiPolygon >();
 
  124   else if ( trimmed.startsWith( QLatin1String( 
"GeometryCollection" ), Qt::CaseInsensitive ) )
 
  126     geom = qgis::make_unique< QgsGeometryCollection >();
 
  131     if ( !geom->fromWkt( text ) )
 
  141   return qgis::make_unique< QgsPoint >( point.
x(), point.
y() );
 
  146   std::unique_ptr< QgsMultiPoint > mp = qgis::make_unique< QgsMultiPoint >();
 
  147   QgsMultiPointXY::const_iterator ptIt = multipoint.constBegin();
 
  148   mp->reserve( multipoint.size() );
 
  149   for ( ; ptIt != multipoint.constEnd(); ++ptIt )
 
  152     mp->addGeometry( pt );
 
  159   return linestringFromPolyline( polyline );
 
  164   std::unique_ptr< QgsMultiLineString > mLine = qgis::make_unique< QgsMultiLineString >();
 
  165   mLine->reserve( multiline.size() );
 
  166   for ( 
int i = 0; i < multiline.size(); ++i )
 
  168     mLine->addGeometry( 
fromPolylineXY( multiline.at( i ) ).release() );
 
  175   std::unique_ptr< QgsPolygon > poly = qgis::make_unique< QgsPolygon >();
 
  177   QVector<QgsCurve *> holes;
 
  178   holes.reserve( polygon.size() );
 
  179   for ( 
int i = 0; i < polygon.size(); ++i )
 
  181     std::unique_ptr< QgsLineString > l = linestringFromPolyline( polygon.at( i ) );
 
  186       poly->setExteriorRing( l.release() );
 
  190       holes.push_back( l.release() );
 
  193   poly->setInteriorRings( holes );
 
  199   std::unique_ptr< QgsMultiPolygon > mp = qgis::make_unique< QgsMultiPolygon >();
 
  200   mp->reserve( multipoly.size() );
 
  201   for ( 
int i = 0; i < multipoly.size(); ++i )
 
  203     mp->addGeometry( 
fromPolygonXY( multipoly.at( i ) ).release() );
 
  208 std::unique_ptr<QgsLineString> QgsGeometryFactory::linestringFromPolyline( 
const QgsPolylineXY &polyline )
 
  210   const int size = polyline.size();
 
  215   double *destX = x.data();
 
  216   double *destY = y.data();
 
  218   for ( 
int i = 0; i < size; ++i )
 
  224   std::unique_ptr< QgsLineString > line = qgis::make_unique< QgsLineString >( x, y );
 
  234       return qgis::make_unique< QgsPoint >();
 
  236       return qgis::make_unique< QgsLineString >();
 
  238       return qgis::make_unique< QgsCircularString >();
 
  240       return qgis::make_unique< QgsCompoundCurve >();
 
  242       return qgis::make_unique< QgsPolygon >();
 
  244       return qgis::make_unique< QgsCurvePolygon >();
 
  246       return qgis::make_unique< QgsMultiLineString >();
 
  248       return qgis::make_unique< QgsMultiPolygon >();
 
  250       return qgis::make_unique< QgsMultiPoint >();
 
  252       return qgis::make_unique< QgsMultiCurve >();
 
  254       return qgis::make_unique< QgsMultiSurface >();
 
  256       return qgis::make_unique< QgsGeometryCollection >();
 
  258       return qgis::make_unique< QgsTriangle >();
 
  267   std::unique_ptr< QgsGeometryCollection > collect;
 
  271       collect = qgis::make_unique< QgsMultiPoint >();
 
  274       collect = qgis::make_unique< QgsMultiLineString >();
 
  277       collect = qgis::make_unique< QgsMultiCurve >();
 
  280       collect = qgis::make_unique< QgsMultiPolygon >();
 
  283       collect = qgis::make_unique< QgsMultiSurface >();
 
  286       collect = qgis::make_unique< QgsGeometryCollection >();
 
  293     collect->addMValue();
 
  295     collect->addZValue();