{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Pango.Structs.AttrString
(
AttrString(..) ,
newZeroAttrString ,
#if defined(ENABLE_OVERLOADING)
ResolveAttrStringMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
attrString_attr ,
#endif
getAttrStringAttr ,
#if defined(ENABLE_OVERLOADING)
attrString_value ,
#endif
clearAttrStringValue ,
getAttrStringValue ,
setAttrStringValue ,
) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
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.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
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 qualified GHC.Records as R
import qualified Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT
#if MIN_VERSION_base(4,18,0)
import qualified GI.GLib.Callbacks as GLib.Callbacks
import qualified GI.Pango.Callbacks as Pango.Callbacks
import {-# SOURCE #-} qualified GI.Pango.Enums as Pango.Enums
import {-# SOURCE #-} qualified GI.Pango.Flags as Pango.Flags
import {-# SOURCE #-} qualified GI.Pango.Structs.AttrClass as Pango.AttrClass
import {-# SOURCE #-} qualified GI.Pango.Structs.AttrColor as Pango.AttrColor
import {-# SOURCE #-} qualified GI.Pango.Structs.AttrFloat as Pango.AttrFloat
import {-# SOURCE #-} qualified GI.Pango.Structs.AttrFontDesc as Pango.AttrFontDesc
import {-# SOURCE #-} qualified GI.Pango.Structs.AttrFontFeatures as Pango.AttrFontFeatures
import {-# SOURCE #-} qualified GI.Pango.Structs.AttrInt as Pango.AttrInt
import {-# SOURCE #-} qualified GI.Pango.Structs.AttrLanguage as Pango.AttrLanguage
import {-# SOURCE #-} qualified GI.Pango.Structs.AttrShape as Pango.AttrShape
import {-# SOURCE #-} qualified GI.Pango.Structs.AttrSize as Pango.AttrSize
import {-# SOURCE #-} qualified GI.Pango.Structs.Attribute as Pango.Attribute
import {-# SOURCE #-} qualified GI.Pango.Structs.Color as Pango.Color
import {-# SOURCE #-} qualified GI.Pango.Structs.FontDescription as Pango.FontDescription
import {-# SOURCE #-} qualified GI.Pango.Structs.Language as Pango.Language
import {-# SOURCE #-} qualified GI.Pango.Structs.Rectangle as Pango.Rectangle
#else
import {-# SOURCE #-} qualified GI.Pango.Structs.Attribute as Pango.Attribute
#endif
newtype AttrString = AttrString (SP.ManagedPtr AttrString)
deriving (AttrString -> AttrString -> Bool
(AttrString -> AttrString -> Bool)
-> (AttrString -> AttrString -> Bool) -> Eq AttrString
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AttrString -> AttrString -> Bool
== :: AttrString -> AttrString -> Bool
$c/= :: AttrString -> AttrString -> Bool
/= :: AttrString -> AttrString -> Bool
Eq)
instance SP.ManagedPtrNewtype AttrString where
toManagedPtr :: AttrString -> ManagedPtr AttrString
toManagedPtr (AttrString ManagedPtr AttrString
p) = ManagedPtr AttrString
p
instance BoxedPtr AttrString where
boxedPtrCopy :: AttrString -> IO AttrString
boxedPtrCopy = \AttrString
p -> AttrString -> (Ptr AttrString -> IO AttrString) -> IO AttrString
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr AttrString
p (Int -> Ptr AttrString -> IO (Ptr AttrString)
forall a. (HasCallStack, CallocPtr a) => Int -> Ptr a -> IO (Ptr a)
copyBytes Int
24 (Ptr AttrString -> IO (Ptr AttrString))
-> (Ptr AttrString -> IO AttrString)
-> Ptr AttrString
-> IO AttrString
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> (ManagedPtr AttrString -> AttrString)
-> Ptr AttrString -> IO AttrString
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.wrapPtr ManagedPtr AttrString -> AttrString
AttrString)
boxedPtrFree :: AttrString -> IO ()
boxedPtrFree = \AttrString
x -> AttrString -> (Ptr AttrString -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
SP.withManagedPtr AttrString
x Ptr AttrString -> IO ()
forall a. Ptr a -> IO ()
SP.freeMem
instance CallocPtr AttrString where
boxedPtrCalloc :: IO (Ptr AttrString)
boxedPtrCalloc = Int -> IO (Ptr AttrString)
forall a. Int -> IO (Ptr a)
callocBytes Int
24
newZeroAttrString :: MonadIO m => m AttrString
newZeroAttrString :: forall (m :: * -> *). MonadIO m => m AttrString
newZeroAttrString = IO AttrString -> m AttrString
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AttrString -> m AttrString) -> IO AttrString -> m AttrString
forall a b. (a -> b) -> a -> b
$ IO (Ptr AttrString)
forall a. CallocPtr a => IO (Ptr a)
boxedPtrCalloc IO (Ptr AttrString)
-> (Ptr AttrString -> IO AttrString) -> IO AttrString
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr AttrString -> AttrString)
-> Ptr AttrString -> IO AttrString
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr AttrString -> AttrString
AttrString
instance tag ~ 'AttrSet => Constructible AttrString tag where
new :: forall (m :: * -> *).
MonadIO m =>
(ManagedPtr AttrString -> AttrString)
-> [AttrOp AttrString tag] -> m AttrString
new ManagedPtr AttrString -> AttrString
_ [AttrOp AttrString tag]
attrs = do
AttrString
o <- m AttrString
forall (m :: * -> *). MonadIO m => m AttrString
newZeroAttrString
AttrString -> [AttrOp AttrString 'AttrSet] -> m ()
forall o (m :: * -> *).
MonadIO m =>
o -> [AttrOp o 'AttrSet] -> m ()
GI.Attributes.set AttrString
o [AttrOp AttrString tag]
[AttrOp AttrString 'AttrSet]
attrs
AttrString -> m AttrString
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return AttrString
o
getAttrStringAttr :: MonadIO m => AttrString -> m Pango.Attribute.Attribute
getAttrStringAttr :: forall (m :: * -> *). MonadIO m => AttrString -> m Attribute
getAttrStringAttr AttrString
s = IO Attribute -> m Attribute
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Attribute -> m Attribute) -> IO Attribute -> m Attribute
forall a b. (a -> b) -> a -> b
$ AttrString -> (Ptr AttrString -> IO Attribute) -> IO Attribute
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AttrString
s ((Ptr AttrString -> IO Attribute) -> IO Attribute)
-> (Ptr AttrString -> IO Attribute) -> IO Attribute
forall a b. (a -> b) -> a -> b
$ \Ptr AttrString
ptr -> do
let val :: Ptr Attribute
val = Ptr AttrString
ptr Ptr AttrString -> Int -> Ptr Attribute
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: (Ptr Pango.Attribute.Attribute)
Attribute
val' <- ((ManagedPtr Attribute -> Attribute)
-> Ptr Attribute -> IO Attribute
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr Attribute -> Attribute
Pango.Attribute.Attribute) Ptr Attribute
val
Attribute -> IO Attribute
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Attribute
val'
#if defined(ENABLE_OVERLOADING)
data AttrStringAttrFieldInfo
instance AttrInfo AttrStringAttrFieldInfo where
type AttrBaseTypeConstraint AttrStringAttrFieldInfo = (~) AttrString
type AttrAllowedOps AttrStringAttrFieldInfo = '[ 'AttrGet]
type AttrSetTypeConstraint AttrStringAttrFieldInfo = (~) (Ptr Pango.Attribute.Attribute)
type AttrTransferTypeConstraint AttrStringAttrFieldInfo = (~)(Ptr Pango.Attribute.Attribute)
type AttrTransferType AttrStringAttrFieldInfo = (Ptr Pango.Attribute.Attribute)
type AttrGetType AttrStringAttrFieldInfo = Pango.Attribute.Attribute
type AttrLabel AttrStringAttrFieldInfo = "attr"
type AttrOrigin AttrStringAttrFieldInfo = AttrString
attrGet = getAttrStringAttr
attrSet = undefined
attrConstruct = undefined
attrClear = undefined
attrTransfer = undefined
dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Pango.Structs.AttrString.attr"
, O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-pango-1.0.30/docs/GI-Pango-Structs-AttrString.html#g:attr:attr"
})
attrString_attr :: AttrLabelProxy "attr"
attrString_attr = AttrLabelProxy
#endif
getAttrStringValue :: MonadIO m => AttrString -> m (Maybe T.Text)
getAttrStringValue :: forall (m :: * -> *). MonadIO m => AttrString -> m (Maybe Text)
getAttrStringValue AttrString
s = IO (Maybe Text) -> m (Maybe Text)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ AttrString
-> (Ptr AttrString -> IO (Maybe Text)) -> IO (Maybe Text)
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AttrString
s ((Ptr AttrString -> IO (Maybe Text)) -> IO (Maybe Text))
-> (Ptr AttrString -> IO (Maybe Text)) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \Ptr AttrString
ptr -> do
CString
val <- Ptr CString -> IO CString
forall a. Storable a => Ptr a -> IO a
peek (Ptr AttrString
ptr Ptr AttrString -> Int -> Ptr CString
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16) :: IO CString
Maybe Text
result <- CString -> (CString -> IO Text) -> IO (Maybe Text)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
SP.convertIfNonNull CString
val ((CString -> IO Text) -> IO (Maybe Text))
-> (CString -> IO Text) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
val' -> do
Text
val'' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
val'
Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
val''
Maybe Text -> IO (Maybe Text)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Text
result
setAttrStringValue :: MonadIO m => AttrString -> CString -> m ()
setAttrStringValue :: forall (m :: * -> *). MonadIO m => AttrString -> CString -> m ()
setAttrStringValue AttrString
s CString
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ AttrString -> (Ptr AttrString -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AttrString
s ((Ptr AttrString -> IO ()) -> IO ())
-> (Ptr AttrString -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr AttrString
ptr -> do
Ptr CString -> CString -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr AttrString
ptr Ptr AttrString -> Int -> Ptr CString
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16) (CString
val :: CString)
clearAttrStringValue :: MonadIO m => AttrString -> m ()
clearAttrStringValue :: forall (m :: * -> *). MonadIO m => AttrString -> m ()
clearAttrStringValue AttrString
s = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ AttrString -> (Ptr AttrString -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AttrString
s ((Ptr AttrString -> IO ()) -> IO ())
-> (Ptr AttrString -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr AttrString
ptr -> do
Ptr CString -> CString -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr AttrString
ptr Ptr AttrString -> Int -> Ptr CString
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16) (CString
forall a. Ptr a
FP.nullPtr :: CString)
#if defined(ENABLE_OVERLOADING)
data AttrStringValueFieldInfo
instance AttrInfo AttrStringValueFieldInfo where
type AttrBaseTypeConstraint AttrStringValueFieldInfo = (~) AttrString
type AttrAllowedOps AttrStringValueFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint AttrStringValueFieldInfo = (~) CString
type AttrTransferTypeConstraint AttrStringValueFieldInfo = (~)CString
type AttrTransferType AttrStringValueFieldInfo = CString
type AttrGetType AttrStringValueFieldInfo = Maybe T.Text
type AttrLabel AttrStringValueFieldInfo = "value"
type AttrOrigin AttrStringValueFieldInfo = AttrString
attrGet = getAttrStringValue
attrSet = setAttrStringValue
attrConstruct = undefined
attrClear = clearAttrStringValue
attrTransfer _ v = do
return v
dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Pango.Structs.AttrString.value"
, O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-pango-1.0.30/docs/GI-Pango-Structs-AttrString.html#g:attr:value"
})
attrString_value :: AttrLabelProxy "value"
attrString_value = AttrLabelProxy
#endif
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList AttrString
type instance O.AttributeList AttrString = AttrStringAttributeList
type AttrStringAttributeList = ('[ '("attr", AttrStringAttrFieldInfo), '("value", AttrStringValueFieldInfo)] :: [(Symbol, DK.Type)])
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveAttrStringMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveAttrStringMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveAttrStringMethod t AttrString, O.OverloadedMethod info AttrString p) => OL.IsLabel t (AttrString -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveAttrStringMethod t AttrString, O.OverloadedMethod info AttrString p, R.HasField t AttrString p) => R.HasField t AttrString p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveAttrStringMethod t AttrString, O.OverloadedMethodInfo info AttrString) => OL.IsLabel t (O.MethodProxy info AttrString) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif