{-# LANGUAGE EmptyDataDecls, FlexibleContexts, FlexibleInstances,
  ForeignFunctionInterface, IncoherentInstances,
  MultiParamTypeClasses, OverlappingInstances, TemplateHaskell,
  TypeFamilies, TypeSynonymInstances #-}
module GDAL.OGRLayer.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.OGRLayer.RawType
import GDAL.OGRLayer.FFI
import GDAL.OGRLayer.Interface
import GDAL.OGRLayer.Cast
import GDAL.OGRLayer.RawType
import GDAL.OGRLayer.Cast
import GDAL.OGRLayer.Interface
import GDAL.OGRFeature.RawType
import GDAL.OGRFeature.Cast
import GDAL.OGRFeature.Interface
import GDAL.OGRFeatureDefn.RawType
import GDAL.OGRFeatureDefn.Cast
import GDAL.OGRFeatureDefn.Interface
import GDAL.GDALMajorObject.RawType
import GDAL.GDALMajorObject.Cast
import GDAL.GDALMajorObject.Interface
import STD.Deletable.RawType
import STD.Deletable.Cast
import STD.Deletable.Interface

instance () => IOGRLayer (OGRLayer) where
        getFeature :: OGRLayer -> CInt -> IO OGRFeature
getFeature = (Ptr RawOGRLayer -> CInt -> IO (Ptr RawOGRFeature))
-> OGRLayer -> CInt -> IO OGRFeature
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 RawOGRLayer -> CInt -> IO (Ptr RawOGRFeature)
c_ogrlayer_getfeature
        getFeatureCount :: OGRLayer -> CInt -> IO CInt
getFeatureCount = (Ptr RawOGRLayer -> CInt -> IO CInt) -> OGRLayer -> CInt -> 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 RawOGRLayer -> CInt -> IO CInt
c_ogrlayer_getfeaturecount
        getLayerDefn :: OGRLayer -> IO OGRFeatureDefn
getLayerDefn = (Ptr RawOGRLayer -> IO (Ptr RawOGRFeatureDefn))
-> OGRLayer -> IO OGRFeatureDefn
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawOGRLayer -> IO (Ptr RawOGRFeatureDefn)
c_ogrlayer_getlayerdefn
        getNextFeature :: OGRLayer -> IO OGRFeature
getNextFeature = (Ptr RawOGRLayer -> IO (Ptr RawOGRFeature))
-> OGRLayer -> IO OGRFeature
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawOGRLayer -> IO (Ptr RawOGRFeature)
c_ogrlayer_getnextfeature
        resetReading :: OGRLayer -> IO ()
resetReading = (Ptr RawOGRLayer -> IO ()) -> OGRLayer -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawOGRLayer -> IO ()
c_ogrlayer_resetreading

instance () => IGDALMajorObject (OGRLayer) where

instance () => IDeletable (OGRLayer) where
        delete :: OGRLayer -> IO ()
delete = (Ptr RawOGRLayer -> IO ()) -> OGRLayer -> IO ()
forall a ca y cy.
(Castable a ca, Castable y cy) =>
(ca -> IO cy) -> a -> IO y
xform0 Ptr RawOGRLayer -> IO ()
c_ogrlayer_delete