{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, IncoherentInstances,
  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,
  TypeFamilies, TypeSynonymInstances #-}
module GDAL.OGRGeometryCollection.Implementation where
import Data.Monoid
import Data.Word
import Data.Int
import Foreign.C
import Foreign.Ptr
import Language.Haskell.TH
import Language.Haskell.TH.Syntax
import System.IO.Unsafe
import FFICXX.Runtime.Cast
import FFICXX.Runtime.CodeGen.Cxx
import FFICXX.Runtime.TH
import GDAL.OGRGeometryCollection.RawType
import GDAL.OGRGeometryCollection.FFI
import GDAL.OGRGeometryCollection.Interface
import GDAL.OGRGeometryCollection.Cast
import GDAL.OGRGeometryCollection.RawType
import GDAL.OGRGeometryCollection.Cast
import GDAL.OGRGeometryCollection.Interface
import GDAL.OGRPolygon.RawType
import GDAL.OGRPolygon.Cast
import GDAL.OGRPolygon.Interface
import GDAL.OGRMultiPolygon.RawType
import GDAL.OGRMultiPolygon.Cast
import GDAL.OGRMultiPolygon.Interface
import GDAL.OGREnvelope.RawType
import GDAL.OGREnvelope.Cast
import GDAL.OGREnvelope.Interface
import GDAL.OGRPoint.RawType
import GDAL.OGRPoint.Cast
import GDAL.OGRPoint.Interface
import GDAL.OGRGeometry.RawType
import GDAL.OGRGeometry.Cast
import GDAL.OGRGeometry.Interface
import STD.Deletable.RawType
import STD.Deletable.Cast
import STD.Deletable.Interface

instance () => IOGRGeometryCollection (OGRGeometryCollection) where

instance () => IOGRGeometry (OGRGeometryCollection) where
        getGeometryType :: OGRGeometryCollection -> IO CUInt
getGeometryType = (Ptr RawOGRGeometryCollection -> IO CUInt)
-> OGRGeometryCollection -> IO CUInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawOGRGeometryCollection -> IO CUInt
c_ogrgeometrycollection_getgeometrytype
        getEnvelope :: forall c0.
(IOGREnvelope c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO ()
getEnvelope = (Ptr RawOGRGeometryCollection -> Ptr RawOGREnvelope -> IO ())
-> OGRGeometryCollection -> c0 -> IO ()
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGREnvelope -> IO ()
c_ogrgeometrycollection_getenvelope
        intersects :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CBool
intersects = (Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool)
-> OGRGeometryCollection -> c0 -> IO CBool
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool
c_ogrgeometrycollection_intersects
        equals :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CBool
equals = (Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool)
-> OGRGeometryCollection -> c0 -> IO CBool
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool
c_ogrgeometrycollection_equals
        disjoint :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CBool
disjoint = (Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool)
-> OGRGeometryCollection -> c0 -> IO CBool
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool
c_ogrgeometrycollection_disjoint
        touches :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CBool
touches = (Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool)
-> OGRGeometryCollection -> c0 -> IO CBool
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool
c_ogrgeometrycollection_touches
        crosses :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CBool
crosses = (Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool)
-> OGRGeometryCollection -> c0 -> IO CBool
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool
c_ogrgeometrycollection_crosses
        within :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CBool
within = (Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool)
-> OGRGeometryCollection -> c0 -> IO CBool
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool
c_ogrgeometrycollection_within
        contains :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CBool
contains = (Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool)
-> OGRGeometryCollection -> c0 -> IO CBool
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool
c_ogrgeometrycollection_contains
        overlaps :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CBool
overlaps = (Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool)
-> OGRGeometryCollection -> c0 -> IO CBool
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CBool
c_ogrgeometrycollection_overlaps
        boundary :: OGRGeometryCollection -> IO OGRGeometry
boundary = (Ptr RawOGRGeometryCollection -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> IO OGRGeometry
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawOGRGeometryCollection -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_boundary
        distance :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CDouble
distance = (Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CDouble)
-> OGRGeometryCollection -> c0 -> IO CDouble
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CDouble
c_ogrgeometrycollection_distance
        convexHull :: OGRGeometryCollection -> IO OGRGeometry
convexHull = (Ptr RawOGRGeometryCollection -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> IO OGRGeometry
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawOGRGeometryCollection -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_convexhull
        buffer :: OGRGeometryCollection -> CDouble -> CInt -> IO OGRGeometry
buffer = (Ptr RawOGRGeometryCollection
 -> CDouble -> CInt -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> CDouble -> CInt -> IO OGRGeometry
forall a ca x1 cx1 x2 cx2 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable y cy) =>
(ca -> cx1 -> cx2 -> IO cy) -> a -> x1 -> x2 -> IO y
xform2 Ptr RawOGRGeometryCollection
-> CDouble -> CInt -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_buffer
        intersection :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO OGRGeometry
intersection = (Ptr RawOGRGeometryCollection
 -> Ptr RawOGRGeometry -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> c0 -> IO OGRGeometry
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection
-> Ptr RawOGRGeometry -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_intersection
        union :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO OGRGeometry
union = (Ptr RawOGRGeometryCollection
 -> Ptr RawOGRGeometry -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> c0 -> IO OGRGeometry
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection
-> Ptr RawOGRGeometry -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_union
        unionCascaded :: OGRGeometryCollection -> IO OGRGeometry
unionCascaded = (Ptr RawOGRGeometryCollection -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> IO OGRGeometry
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawOGRGeometryCollection -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_unioncascaded
        difference :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO OGRGeometry
difference = (Ptr RawOGRGeometryCollection
 -> Ptr RawOGRGeometry -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> c0 -> IO OGRGeometry
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection
-> Ptr RawOGRGeometry -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_difference
        symDifference :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO OGRGeometry
symDifference = (Ptr RawOGRGeometryCollection
 -> Ptr RawOGRGeometry -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> c0 -> IO OGRGeometry
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection
-> Ptr RawOGRGeometry -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_symdifference
        centroid :: forall c0.
(IOGRPoint c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CInt
centroid = (Ptr RawOGRGeometryCollection -> Ptr RawOGRPoint -> IO CInt)
-> OGRGeometryCollection -> c0 -> IO CInt
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRPoint -> IO CInt
c_ogrgeometrycollection_centroid
        simplify :: OGRGeometryCollection -> CDouble -> IO OGRGeometry
simplify = (Ptr RawOGRGeometryCollection
 -> CDouble -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> CDouble -> IO OGRGeometry
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> CDouble -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_simplify
        delaunayTriangulation :: OGRGeometryCollection -> CDouble -> CInt -> IO OGRGeometry
delaunayTriangulation
          = (Ptr RawOGRGeometryCollection
 -> CDouble -> CInt -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> CDouble -> CInt -> IO OGRGeometry
forall a ca x1 cx1 x2 cx2 y cy.
(Castable a ca, Castable x1 cx1, Castable x2 cx2, Castable y cy) =>
(ca -> cx1 -> cx2 -> IO cy) -> a -> x1 -> x2 -> IO y
xform2 Ptr RawOGRGeometryCollection
-> CDouble -> CInt -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_delaunaytriangulation
        polygonize :: OGRGeometryCollection -> IO OGRGeometry
polygonize = (Ptr RawOGRGeometryCollection -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> IO OGRGeometry
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawOGRGeometryCollection -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_polygonize
        distance3D :: forall c0.
(IOGRGeometry c0, FPtr c0) =>
OGRGeometryCollection -> c0 -> IO CDouble
distance3D = (Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CDouble)
-> OGRGeometryCollection -> c0 -> IO CDouble
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1 Ptr RawOGRGeometryCollection -> Ptr RawOGRGeometry -> IO CDouble
c_ogrgeometrycollection_distance3d

instance () => IDeletable (OGRGeometryCollection) where
        delete :: OGRGeometryCollection -> IO ()
delete = (Ptr RawOGRGeometryCollection -> IO ())
-> OGRGeometryCollection -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawOGRGeometryCollection -> IO ()
c_ogrgeometrycollection_delete

oGRGeometryCollection_getNumGeometries ::
                                         () => OGRGeometryCollection -> IO CInt
oGRGeometryCollection_getNumGeometries :: OGRGeometryCollection -> IO CInt
oGRGeometryCollection_getNumGeometries
  = (Ptr RawOGRGeometryCollection -> IO CInt)
-> OGRGeometryCollection -> IO CInt
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0
      Ptr RawOGRGeometryCollection -> IO CInt
c_ogrgeometrycollection_ogrgeometrycollection_getnumgeometries

oGRGeometryCollection_getGeometryRef ::
                                       () => OGRGeometryCollection -> CInt -> IO OGRGeometry
oGRGeometryCollection_getGeometryRef :: OGRGeometryCollection -> CInt -> IO OGRGeometry
oGRGeometryCollection_getGeometryRef
  = (Ptr RawOGRGeometryCollection -> CInt -> IO (Ptr RawOGRGeometry))
-> OGRGeometryCollection -> CInt -> IO OGRGeometry
forall a ca x1 cx1 y cy.
(Castable a ca, Castable x1 cx1, Castable y cy) =>
(ca -> cx1 -> IO cy) -> a -> x1 -> IO y
xform1
      Ptr RawOGRGeometryCollection -> CInt -> IO (Ptr RawOGRGeometry)
c_ogrgeometrycollection_ogrgeometrycollection_getgeometryref