{-# LANGUAGE FlexibleInstances, FlexibleContexts, TypeFamilies, MultiParamTypeClasses, OverlappingInstances, IncoherentInstances #-} module GDAL.OGRMultiPolygon.Cast where import Foreign.Ptr import FFICXX.Runtime.Cast import System.IO.Unsafe import GDAL.OGRMultiPolygon.RawType import GDAL.OGRMultiPolygon.Interface instance (IOGRMultiPolygon a, FPtr a) => Castable (a) (Ptr RawOGRMultiPolygon) where cast :: forall r. a -> (Ptr RawOGRMultiPolygon -> IO r) -> IO r cast a x Ptr RawOGRMultiPolygon -> IO r f = Ptr RawOGRMultiPolygon -> IO r f (Ptr (Raw a) -> Ptr RawOGRMultiPolygon forall a b. Ptr a -> Ptr b castPtr (a -> Ptr (Raw a) forall a. FPtr a => a -> Ptr (Raw a) get_fptr a x)) uncast :: forall r. Ptr RawOGRMultiPolygon -> (a -> IO r) -> IO r uncast Ptr RawOGRMultiPolygon x a -> IO r f = a -> IO r f (Ptr (Raw a) -> a forall a. FPtr a => Ptr (Raw a) -> a cast_fptr_to_obj (Ptr RawOGRMultiPolygon -> Ptr (Raw a) forall a b. Ptr a -> Ptr b castPtr Ptr RawOGRMultiPolygon x)) instance () => Castable (OGRMultiPolygon) (Ptr RawOGRMultiPolygon) where cast :: forall r. OGRMultiPolygon -> (Ptr RawOGRMultiPolygon -> IO r) -> IO r cast OGRMultiPolygon x Ptr RawOGRMultiPolygon -> IO r f = Ptr RawOGRMultiPolygon -> IO r f (Ptr RawOGRMultiPolygon -> Ptr RawOGRMultiPolygon forall a b. Ptr a -> Ptr b castPtr (OGRMultiPolygon -> Ptr (Raw OGRMultiPolygon) forall a. FPtr a => a -> Ptr (Raw a) get_fptr OGRMultiPolygon x)) uncast :: forall r. Ptr RawOGRMultiPolygon -> (OGRMultiPolygon -> IO r) -> IO r uncast Ptr RawOGRMultiPolygon x OGRMultiPolygon -> IO r f = OGRMultiPolygon -> IO r f (Ptr (Raw OGRMultiPolygon) -> OGRMultiPolygon forall a. FPtr a => Ptr (Raw a) -> a cast_fptr_to_obj (Ptr RawOGRMultiPolygon -> Ptr RawOGRMultiPolygon forall a b. Ptr a -> Ptr b castPtr Ptr RawOGRMultiPolygon x))