{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) The #PangoCoverage structure represents a map from Unicode characters to #PangoCoverageLevel. It is an opaque structure with no public fields. -} module GI.Pango.Structs.Coverage ( -- * Exported types Coverage(..) , noCoverage , -- * Methods -- ** coverageGet CoverageGetMethodInfo , coverageGet , -- ** coverageMax CoverageMaxMethodInfo , coverageMax , -- ** coverageSet CoverageSetMethodInfo , coverageSet , -- ** coverageToBytes CoverageToBytesMethodInfo , coverageToBytes , -- ** coverageUnref CoverageUnrefMethodInfo , coverageUnref , ) where import Prelude () import Data.GI.Base.ShortPrelude import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import GI.Pango.Types import GI.Pango.Callbacks newtype Coverage = Coverage (ForeignPtr Coverage) noCoverage :: Maybe Coverage noCoverage = Nothing -- method Coverage::get -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : TInterface "Pango" "CoverageLevel" -- throws : False -- Skip return : False foreign import ccall "pango_coverage_get" pango_coverage_get :: Ptr Coverage -> -- _obj : TInterface "Pango" "Coverage" Int32 -> -- index_ : TBasicType TInt32 IO CUInt coverageGet :: (MonadIO m) => Coverage -- _obj -> Int32 -- index -> m CoverageLevel -- result coverageGet _obj index = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj result <- pango_coverage_get _obj' index let result' = (toEnum . fromIntegral) result touchManagedPtr _obj return result' data CoverageGetMethodInfo instance (signature ~ (Int32 -> m CoverageLevel), MonadIO m) => MethodInfo CoverageGetMethodInfo Coverage signature where overloadedMethod _ = coverageGet -- method Coverage::max -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "other", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "pango_coverage_max" pango_coverage_max :: Ptr Coverage -> -- _obj : TInterface "Pango" "Coverage" Ptr Coverage -> -- other : TInterface "Pango" "Coverage" IO () coverageMax :: (MonadIO m) => Coverage -- _obj -> Coverage -- other -> m () -- result coverageMax _obj other = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj let other' = unsafeManagedPtrGetPtr other pango_coverage_max _obj' other' touchManagedPtr _obj touchManagedPtr other return () data CoverageMaxMethodInfo instance (signature ~ (Coverage -> m ()), MonadIO m) => MethodInfo CoverageMaxMethodInfo Coverage signature where overloadedMethod _ = coverageMax -- method Coverage::set -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "level", argType = TInterface "Pango" "CoverageLevel", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "pango_coverage_set" pango_coverage_set :: Ptr Coverage -> -- _obj : TInterface "Pango" "Coverage" Int32 -> -- index_ : TBasicType TInt32 CUInt -> -- level : TInterface "Pango" "CoverageLevel" IO () coverageSet :: (MonadIO m) => Coverage -- _obj -> Int32 -- index -> CoverageLevel -- level -> m () -- result coverageSet _obj index level = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj let level' = (fromIntegral . fromEnum) level pango_coverage_set _obj' index level' touchManagedPtr _obj return () data CoverageSetMethodInfo instance (signature ~ (Int32 -> CoverageLevel -> m ()), MonadIO m) => MethodInfo CoverageSetMethodInfo Coverage signature where overloadedMethod _ = coverageSet -- method Coverage::to_bytes -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bytes", argType = TCArray False (-1) 2 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_bytes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [Arg {argCName = "n_bytes", argType = TBasicType TInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "pango_coverage_to_bytes" pango_coverage_to_bytes :: Ptr Coverage -> -- _obj : TInterface "Pango" "Coverage" Ptr (Ptr Word8) -> -- bytes : TCArray False (-1) 2 (TBasicType TUInt8) Ptr Int32 -> -- n_bytes : TBasicType TInt32 IO () coverageToBytes :: (MonadIO m) => Coverage -- _obj -> m (ByteString) -- result coverageToBytes _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj bytes <- allocMem :: IO (Ptr (Ptr Word8)) nBytes <- allocMem :: IO (Ptr Int32) pango_coverage_to_bytes _obj' bytes nBytes nBytes' <- peek nBytes bytes' <- peek bytes bytes'' <- (unpackByteStringWithLength nBytes') bytes' freeMem bytes' touchManagedPtr _obj freeMem bytes freeMem nBytes return bytes'' data CoverageToBytesMethodInfo instance (signature ~ (m (ByteString)), MonadIO m) => MethodInfo CoverageToBytesMethodInfo Coverage signature where overloadedMethod _ = coverageToBytes -- method Coverage::unref -- method type : OrdinaryMethod -- Args : [Arg {argCName = "_obj", argType = TInterface "Pango" "Coverage", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : TBasicType TVoid -- throws : False -- Skip return : False foreign import ccall "pango_coverage_unref" pango_coverage_unref :: Ptr Coverage -> -- _obj : TInterface "Pango" "Coverage" IO () coverageUnref :: (MonadIO m) => Coverage -- _obj -> m () -- result coverageUnref _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj pango_coverage_unref _obj' touchManagedPtr _obj return () data CoverageUnrefMethodInfo instance (signature ~ (m ()), MonadIO m) => MethodInfo CoverageUnrefMethodInfo Coverage signature where overloadedMethod _ = coverageUnref type family ResolveCoverageMethod (t :: Symbol) (o :: *) :: * where ResolveCoverageMethod "get" o = CoverageGetMethodInfo ResolveCoverageMethod "max" o = CoverageMaxMethodInfo ResolveCoverageMethod "set" o = CoverageSetMethodInfo ResolveCoverageMethod "toBytes" o = CoverageToBytesMethodInfo ResolveCoverageMethod "unref" o = CoverageUnrefMethodInfo ResolveCoverageMethod l o = MethodResolutionFailed l o instance (info ~ ResolveCoverageMethod t Coverage, MethodInfo info Coverage p) => IsLabelProxy t (Coverage -> p) where fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolveCoverageMethod t Coverage, MethodInfo info Coverage p) => IsLabel t (Coverage -> p) where fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info) #endif