{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) The 'GI.Pango.Structs.Coverage.Coverage' structure represents a map from Unicode characters to 'GI.Pango.Enums.CoverageLevel'. It is an opaque structure with no public fields. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Pango.Structs.Coverage ( -- * Exported types Coverage(..) , noCoverage , -- * Methods -- ** get #method:get# #if ENABLE_OVERLOADING CoverageGetMethodInfo , #endif coverageGet , -- ** max #method:max# #if ENABLE_OVERLOADING CoverageMaxMethodInfo , #endif coverageMax , -- ** set #method:set# #if ENABLE_OVERLOADING CoverageSetMethodInfo , #endif coverageSet , -- ** toBytes #method:toBytes# #if ENABLE_OVERLOADING CoverageToBytesMethodInfo , #endif coverageToBytes , -- ** unref #method:unref# #if ENABLE_OVERLOADING CoverageUnrefMethodInfo , #endif coverageUnref , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import {-# SOURCE #-} qualified GI.Pango.Enums as Pango.Enums -- | Memory-managed wrapper type. newtype Coverage = Coverage (ManagedPtr Coverage) -- XXX Wrapping a foreign struct/union with no known destructor or size, leak? instance WrappedPtr Coverage where wrappedPtrCalloc = return nullPtr wrappedPtrCopy = return wrappedPtrFree = Nothing -- | A convenience alias for `Nothing` :: `Maybe` `Coverage`. noCoverage :: Maybe Coverage noCoverage = Nothing #if ENABLE_OVERLOADING instance O.HasAttributeList Coverage type instance O.AttributeList Coverage = CoverageAttributeList type CoverageAttributeList = ('[ ] :: [(Symbol, *)]) #endif -- method Coverage::get -- method type : OrdinaryMethod -- Args : [Arg {argCName = "coverage", argType = TInterface (Name {namespace = "Pango", name = "Coverage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PangoCoverage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the index to check", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Pango", name = "CoverageLevel"})) -- throws : False -- Skip return : False foreign import ccall "pango_coverage_get" pango_coverage_get :: Ptr Coverage -> -- coverage : TInterface (Name {namespace = "Pango", name = "Coverage"}) Int32 -> -- index_ : TBasicType TInt IO CUInt {- | Determine whether a particular index is covered by /@coverage@/ -} coverageGet :: (B.CallStack.HasCallStack, MonadIO m) => Coverage {- ^ /@coverage@/: a 'GI.Pango.Structs.Coverage.Coverage' -} -> Int32 {- ^ /@index_@/: the index to check -} -> m Pango.Enums.CoverageLevel {- ^ __Returns:__ the coverage level of /@coverage@/ for character /@index_@/. -} coverageGet coverage index_ = liftIO $ do coverage' <- unsafeManagedPtrGetPtr coverage result <- pango_coverage_get coverage' index_ let result' = (toEnum . fromIntegral) result touchManagedPtr coverage return result' #if ENABLE_OVERLOADING data CoverageGetMethodInfo instance (signature ~ (Int32 -> m Pango.Enums.CoverageLevel), MonadIO m) => O.MethodInfo CoverageGetMethodInfo Coverage signature where overloadedMethod _ = coverageGet #endif -- method Coverage::max -- method type : OrdinaryMethod -- Args : [Arg {argCName = "coverage", argType = TInterface (Name {namespace = "Pango", name = "Coverage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PangoCoverage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "other", argType = TInterface (Name {namespace = "Pango", name = "Coverage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "another #PangoCoverage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "pango_coverage_max" pango_coverage_max :: Ptr Coverage -> -- coverage : TInterface (Name {namespace = "Pango", name = "Coverage"}) Ptr Coverage -> -- other : TInterface (Name {namespace = "Pango", name = "Coverage"}) IO () {- | Set the coverage for each index in /@coverage@/ to be the max (better) value of the current coverage for the index and the coverage for the corresponding index in /@other@/. -} coverageMax :: (B.CallStack.HasCallStack, MonadIO m) => Coverage {- ^ /@coverage@/: a 'GI.Pango.Structs.Coverage.Coverage' -} -> Coverage {- ^ /@other@/: another 'GI.Pango.Structs.Coverage.Coverage' -} -> m () coverageMax coverage other = liftIO $ do coverage' <- unsafeManagedPtrGetPtr coverage other' <- unsafeManagedPtrGetPtr other pango_coverage_max coverage' other' touchManagedPtr coverage touchManagedPtr other return () #if ENABLE_OVERLOADING data CoverageMaxMethodInfo instance (signature ~ (Coverage -> m ()), MonadIO m) => O.MethodInfo CoverageMaxMethodInfo Coverage signature where overloadedMethod _ = coverageMax #endif -- method Coverage::set -- method type : OrdinaryMethod -- Args : [Arg {argCName = "coverage", argType = TInterface (Name {namespace = "Pango", name = "Coverage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PangoCoverage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "index_", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the index to modify", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "level", argType = TInterface (Name {namespace = "Pango", name = "CoverageLevel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new level for @index_", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "pango_coverage_set" pango_coverage_set :: Ptr Coverage -> -- coverage : TInterface (Name {namespace = "Pango", name = "Coverage"}) Int32 -> -- index_ : TBasicType TInt CUInt -> -- level : TInterface (Name {namespace = "Pango", name = "CoverageLevel"}) IO () {- | Modify a particular index within /@coverage@/ -} coverageSet :: (B.CallStack.HasCallStack, MonadIO m) => Coverage {- ^ /@coverage@/: a 'GI.Pango.Structs.Coverage.Coverage' -} -> Int32 {- ^ /@index_@/: the index to modify -} -> Pango.Enums.CoverageLevel {- ^ /@level@/: the new level for /@index_@/ -} -> m () coverageSet coverage index_ level = liftIO $ do coverage' <- unsafeManagedPtrGetPtr coverage let level' = (fromIntegral . fromEnum) level pango_coverage_set coverage' index_ level' touchManagedPtr coverage return () #if ENABLE_OVERLOADING data CoverageSetMethodInfo instance (signature ~ (Int32 -> Pango.Enums.CoverageLevel -> m ()), MonadIO m) => O.MethodInfo CoverageSetMethodInfo Coverage signature where overloadedMethod _ = coverageSet #endif -- method Coverage::to_bytes -- method type : OrdinaryMethod -- Args : [Arg {argCName = "coverage", argType = TInterface (Name {namespace = "Pango", name = "Coverage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PangoCoverage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bytes", argType = TCArray False (-1) 2 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "\n location to store result (must be freed with g_free())", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "n_bytes", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "location to store size of result", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [Arg {argCName = "n_bytes", argType = TBasicType TInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "location to store size of result", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "pango_coverage_to_bytes" pango_coverage_to_bytes :: Ptr Coverage -> -- coverage : TInterface (Name {namespace = "Pango", name = "Coverage"}) Ptr (Ptr Word8) -> -- bytes : TCArray False (-1) 2 (TBasicType TUInt8) Ptr Int32 -> -- n_bytes : TBasicType TInt IO () {- | Convert a 'GI.Pango.Structs.Coverage.Coverage' structure into a flat binary format -} coverageToBytes :: (B.CallStack.HasCallStack, MonadIO m) => Coverage {- ^ /@coverage@/: a 'GI.Pango.Structs.Coverage.Coverage' -} -> m (ByteString) coverageToBytes coverage = liftIO $ do coverage' <- unsafeManagedPtrGetPtr coverage bytes <- allocMem :: IO (Ptr (Ptr Word8)) nBytes <- allocMem :: IO (Ptr Int32) pango_coverage_to_bytes coverage' bytes nBytes nBytes' <- peek nBytes bytes' <- peek bytes bytes'' <- (unpackByteStringWithLength nBytes') bytes' freeMem bytes' touchManagedPtr coverage freeMem bytes freeMem nBytes return bytes'' #if ENABLE_OVERLOADING data CoverageToBytesMethodInfo instance (signature ~ (m (ByteString)), MonadIO m) => O.MethodInfo CoverageToBytesMethodInfo Coverage signature where overloadedMethod _ = coverageToBytes #endif -- method Coverage::unref -- method type : OrdinaryMethod -- Args : [Arg {argCName = "coverage", argType = TInterface (Name {namespace = "Pango", name = "Coverage"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #PangoCoverage", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "pango_coverage_unref" pango_coverage_unref :: Ptr Coverage -> -- coverage : TInterface (Name {namespace = "Pango", name = "Coverage"}) IO () {- | Decrease the reference count on the 'GI.Pango.Structs.Coverage.Coverage' by one. If the result is zero, free the coverage and all associated memory. -} coverageUnref :: (B.CallStack.HasCallStack, MonadIO m) => Coverage {- ^ /@coverage@/: a 'GI.Pango.Structs.Coverage.Coverage' -} -> m () coverageUnref coverage = liftIO $ do coverage' <- unsafeManagedPtrGetPtr coverage pango_coverage_unref coverage' touchManagedPtr coverage return () #if ENABLE_OVERLOADING data CoverageUnrefMethodInfo instance (signature ~ (m ()), MonadIO m) => O.MethodInfo CoverageUnrefMethodInfo Coverage signature where overloadedMethod _ = coverageUnref #endif #if ENABLE_OVERLOADING 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 = O.MethodResolutionFailed l o instance (info ~ ResolveCoverageMethod t Coverage, O.MethodInfo info Coverage p) => OL.IsLabel t (Coverage -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif