haskell-gi-base 0.17 → 0.18
raw patch · 11 files changed
+516/−390 lines, 11 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Data.GI.Base.Attributes: (::=) :: AttrLabelProxy (attr :: Symbol) -> (obj -> b) -> AttrOp obj tag
- Data.GI.Base.Attributes: (::~) :: AttrLabelProxy (attr :: Symbol) -> (obj -> a -> b) -> AttrOp obj tag
- Data.GI.Base.Attributes: (:=) :: AttrLabelProxy (attr :: Symbol) -> b -> AttrOp obj tag
- Data.GI.Base.Attributes: (:=>) :: AttrLabelProxy (attr :: Symbol) -> IO b -> AttrOp obj tag
- Data.GI.Base.Attributes: (:~) :: AttrLabelProxy (attr :: Symbol) -> (a -> b) -> AttrOp obj tag
- Data.GI.Base.Attributes: (:~>) :: AttrLabelProxy (attr :: Symbol) -> (a -> IO b) -> AttrOp obj tag
- Data.GI.Base.Attributes: instance a ~ x => IsLabelProxy x (AttrLabelProxy a)
- Data.GI.Base.BasicTypes: GType :: CGType -> GType
- Data.GI.Base.BasicTypes: gtypeBoolean :: GType
- Data.GI.Base.BasicTypes: gtypeBoxed :: GType
- Data.GI.Base.BasicTypes: gtypeByteArray :: GType
- Data.GI.Base.BasicTypes: gtypeDouble :: GType
- Data.GI.Base.BasicTypes: gtypeFloat :: GType
- Data.GI.Base.BasicTypes: gtypeGType :: GType
- Data.GI.Base.BasicTypes: gtypeInt :: GType
- Data.GI.Base.BasicTypes: gtypeInt64 :: GType
- Data.GI.Base.BasicTypes: gtypeInvalid :: GType
- Data.GI.Base.BasicTypes: gtypeLong :: GType
- Data.GI.Base.BasicTypes: gtypeName :: GType -> IO String
- Data.GI.Base.BasicTypes: gtypeObject :: GType
- Data.GI.Base.BasicTypes: gtypePointer :: GType
- Data.GI.Base.BasicTypes: gtypeString :: GType
- Data.GI.Base.BasicTypes: gtypeStrv :: GType
- Data.GI.Base.BasicTypes: gtypeToCGType :: GType -> CGType
- Data.GI.Base.BasicTypes: gtypeUInt :: GType
- Data.GI.Base.BasicTypes: gtypeUInt64 :: GType
- Data.GI.Base.BasicTypes: gtypeULong :: GType
- Data.GI.Base.BasicTypes: gtypeVariant :: GType
- Data.GI.Base.BasicTypes: instance [overlap ok] Exception UnexpectedNullPointerReturn
- Data.GI.Base.BasicTypes: instance [overlap ok] NullToNothing (Maybe a)
- Data.GI.Base.BasicTypes: instance [overlap ok] Show UnexpectedNullPointerReturn
- Data.GI.Base.BasicTypes: instance [overlap ok] Typeable UnexpectedNullPointerReturn
- Data.GI.Base.BasicTypes: instance [overlap ok] a ~ UnMaybe a => NullToNothing a
- Data.GI.Base.BasicTypes: newtype GType
- Data.GI.Base.BasicTypes: nullPtrErrorMsg :: UnexpectedNullPointerReturn -> Text
- Data.GI.Base.BasicTypes: type CGType = Word64
- Data.GI.Base.BasicTypes: unwrapPtr :: PtrWrapped a -> Ptr a
- Data.GI.Base.Closure: instance BoxedObject Closure
- Data.GI.Base.Constructible: instance [overlap ok] (GObject a, tag ~ 'AttrConstruct) => Constructible a tag
- Data.GI.Base.GError: instance BoxedObject GError
- Data.GI.Base.GError: instance Exception GError
- Data.GI.Base.GError: instance Show GError
- Data.GI.Base.GError: instance Typeable GError
- Data.GI.Base.GValue: instance BoxedObject GValue
- Data.GI.Base.GValue: instance IsGValue (Maybe String)
- Data.GI.Base.GValue: instance IsGValue (Maybe Text)
- Data.GI.Base.GValue: instance IsGValue (Ptr a)
- Data.GI.Base.GValue: instance IsGValue Bool
- Data.GI.Base.GValue: instance IsGValue CInt
- Data.GI.Base.GValue: instance IsGValue CLong
- Data.GI.Base.GValue: instance IsGValue CUInt
- Data.GI.Base.GValue: instance IsGValue CULong
- Data.GI.Base.GValue: instance IsGValue Double
- Data.GI.Base.GValue: instance IsGValue Float
- Data.GI.Base.GValue: instance IsGValue GType
- Data.GI.Base.GValue: instance IsGValue Int32
- Data.GI.Base.GValue: instance IsGValue Int64
- Data.GI.Base.GValue: instance IsGValue Word32
- Data.GI.Base.GValue: instance IsGValue Word64
- Data.GI.Base.GVariant: instance (Eq key, Eq value) => Eq (GVariantDictEntry key value)
- Data.GI.Base.GVariant: instance (IsGVariant a, IsGVariant b) => IsGVariant (a, b)
- Data.GI.Base.GVariant: instance (IsGVariant a, IsGVariant b, IsGVariant c) => IsGVariant (a, b, c)
- Data.GI.Base.GVariant: instance (IsGVariant a, IsGVariant b, IsGVariant c, IsGVariant d) => IsGVariant (a, b, c, d)
- Data.GI.Base.GVariant: instance (IsGVariant a, IsGVariant b, IsGVariant c, IsGVariant d, IsGVariant e) => IsGVariant (a, b, c, d, e)
- Data.GI.Base.GVariant: instance (IsGVariant a, IsGVariantBasicType a, IsGVariant b) => IsGVariant (GVariantDictEntry a b)
- Data.GI.Base.GVariant: instance (IsGVariant a, IsGVariantBasicType a, IsGVariant b) => IsGVariant (Map a b)
- Data.GI.Base.GVariant: instance (Show key, Show value) => Show (GVariantDictEntry key value)
- Data.GI.Base.GVariant: instance Eq GVariantHandle
- Data.GI.Base.GVariant: instance Eq GVariantObjectPath
- Data.GI.Base.GVariant: instance Eq GVariantSignature
- Data.GI.Base.GVariant: instance Eq a => Eq (GVariantSinglet a)
- Data.GI.Base.GVariant: instance IsGVariant ()
- Data.GI.Base.GVariant: instance IsGVariant Bool
- Data.GI.Base.GVariant: instance IsGVariant ByteString
- Data.GI.Base.GVariant: instance IsGVariant Double
- Data.GI.Base.GVariant: instance IsGVariant GVariant
- Data.GI.Base.GVariant: instance IsGVariant GVariantHandle
- Data.GI.Base.GVariant: instance IsGVariant GVariantObjectPath
- Data.GI.Base.GVariant: instance IsGVariant GVariantSignature
- Data.GI.Base.GVariant: instance IsGVariant Int16
- Data.GI.Base.GVariant: instance IsGVariant Int32
- Data.GI.Base.GVariant: instance IsGVariant Int64
- Data.GI.Base.GVariant: instance IsGVariant Text
- Data.GI.Base.GVariant: instance IsGVariant Word16
- Data.GI.Base.GVariant: instance IsGVariant Word32
- Data.GI.Base.GVariant: instance IsGVariant Word64
- Data.GI.Base.GVariant: instance IsGVariant Word8
- Data.GI.Base.GVariant: instance IsGVariant a => IsGVariant (GVariantSinglet a)
- Data.GI.Base.GVariant: instance IsGVariant a => IsGVariant (Maybe a)
- Data.GI.Base.GVariant: instance IsGVariant a => IsGVariant [a]
- Data.GI.Base.GVariant: instance IsGVariantBasicType Bool
- Data.GI.Base.GVariant: instance IsGVariantBasicType Double
- Data.GI.Base.GVariant: instance IsGVariantBasicType GVariantHandle
- Data.GI.Base.GVariant: instance IsGVariantBasicType GVariantObjectPath
- Data.GI.Base.GVariant: instance IsGVariantBasicType GVariantSignature
- Data.GI.Base.GVariant: instance IsGVariantBasicType Int16
- Data.GI.Base.GVariant: instance IsGVariantBasicType Int32
- Data.GI.Base.GVariant: instance IsGVariantBasicType Int64
- Data.GI.Base.GVariant: instance IsGVariantBasicType Text
- Data.GI.Base.GVariant: instance IsGVariantBasicType Word16
- Data.GI.Base.GVariant: instance IsGVariantBasicType Word32
- Data.GI.Base.GVariant: instance IsGVariantBasicType Word64
- Data.GI.Base.GVariant: instance IsGVariantBasicType Word8
- Data.GI.Base.GVariant: instance Ord GVariantHandle
- Data.GI.Base.GVariant: instance Ord GVariantObjectPath
- Data.GI.Base.GVariant: instance Ord GVariantSignature
- Data.GI.Base.GVariant: instance Show GVariantHandle
- Data.GI.Base.GVariant: instance Show GVariantObjectPath
- Data.GI.Base.GVariant: instance Show GVariantSignature
- Data.GI.Base.GVariant: instance Show a => Show (GVariantSinglet a)
- Data.GI.Base.Overloading: data MethodResolutionFailed (label :: Symbol) (o :: *)
- Data.GI.Base.Overloading: instance (HasAttribute attr o) => HasAttr attr o
- Data.GI.Base.Signals: PropertyNotify :: AttrLabelProxy propName -> SignalProxy o (GObjectNotifySignalInfo pl)
- Data.GI.Base.Signals: SignalProxy :: SignalProxy o info
- Data.GI.Base.Signals: instance (HasSignal slot object, info ~ ResolveSignal slot object) => IsLabelProxy slot (SignalProxy object info)
- Data.GI.Base.Signals: instance KnownSymbol propName => SignalInfo (GObjectNotifySignalInfo propName)
- Data.GI.Base.Signals: instance NoConstraint a
+ Data.GI.Base.Attributes: [::=] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ AttrSet, AttrOpAllowed tag info, (AttrSetTypeConstraint info) b) => AttrLabelProxy (attr :: Symbol) -> (obj -> b) -> AttrOp obj tag
+ Data.GI.Base.Attributes: [::~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ AttrSet, AttrOpAllowed AttrSet info, AttrOpAllowed AttrGet info, (AttrSetTypeConstraint info) b, a ~ (AttrGetType info)) => AttrLabelProxy (attr :: Symbol) -> (obj -> a -> b) -> AttrOp obj tag
+ Data.GI.Base.Attributes: [:=>] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info, (AttrSetTypeConstraint info) b) => AttrLabelProxy (attr :: Symbol) -> IO b -> AttrOp obj tag
+ Data.GI.Base.Attributes: [:=] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info, (AttrSetTypeConstraint info) b) => AttrLabelProxy (attr :: Symbol) -> b -> AttrOp obj tag
+ Data.GI.Base.Attributes: [:~>] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ AttrSet, AttrOpAllowed AttrSet info, AttrOpAllowed AttrGet info, (AttrSetTypeConstraint info) b, a ~ (AttrGetType info)) => AttrLabelProxy (attr :: Symbol) -> (a -> IO b) -> AttrOp obj tag
+ Data.GI.Base.Attributes: [:~] :: (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ AttrSet, AttrOpAllowed AttrSet info, AttrOpAllowed AttrGet info, (AttrSetTypeConstraint info) b, a ~ (AttrGetType info)) => AttrLabelProxy (attr :: Symbol) -> (a -> b) -> AttrOp obj tag
+ Data.GI.Base.Attributes: instance a ~ x => Data.GI.Base.Overloading.IsLabelProxy x (Data.GI.Base.Attributes.AttrLabelProxy a)
+ Data.GI.Base.Attributes: instance a ~ x => GHC.OverloadedLabels.IsLabel x (Data.GI.Base.Attributes.AttrLabelProxy a)
+ Data.GI.Base.Attributes: type AttrClearC info obj attr = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, (AttrBaseTypeConstraint info) obj, AttrOpAllowed AttrClear info)
+ Data.GI.Base.Attributes: type AttrConstructC info obj attr value = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed AttrConstruct info, (AttrSetTypeConstraint info) value)
+ Data.GI.Base.Attributes: type AttrGetC info obj attr result = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, (AttrBaseTypeConstraint info) obj, AttrOpAllowed AttrGet info, result ~ AttrGetType info)
+ Data.GI.Base.Attributes: type AttrSetC info obj attr value = (HasAttributeList obj, info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed AttrSet info, (AttrSetTypeConstraint info) value)
+ Data.GI.Base.Attributes: type family AttrLabel info :: Symbol;
+ Data.GI.Base.Attributes: }
+ Data.GI.Base.BasicTypes: [nullPtrErrorMsg] :: UnexpectedNullPointerReturn -> Text
+ Data.GI.Base.BasicTypes: [unwrapPtr] :: PtrWrapped a -> Ptr a
+ Data.GI.Base.BasicTypes: instance ((TypeError ...), Data.GI.Base.BasicTypes.ForeignPtrNewtype a) => Data.GI.Base.BasicTypes.GObject a
+ Data.GI.Base.BasicTypes: instance Data.GI.Base.BasicTypes.NullToNothing (GHC.Base.Maybe a)
+ Data.GI.Base.BasicTypes: instance GHC.Exception.Exception Data.GI.Base.BasicTypes.UnexpectedNullPointerReturn
+ Data.GI.Base.BasicTypes: instance GHC.Show.Show Data.GI.Base.BasicTypes.UnexpectedNullPointerReturn
+ Data.GI.Base.BasicTypes: instance a ~ Data.GI.Base.BasicTypes.UnMaybe a => Data.GI.Base.BasicTypes.NullToNothing a
+ Data.GI.Base.Closure: instance Data.GI.Base.BasicTypes.BoxedObject Data.GI.Base.Closure.Closure
+ Data.GI.Base.Constructible: instance (Data.GI.Base.BasicTypes.GObject a, tag ~ 'Data.GI.Base.Attributes.AttrConstruct) => Data.GI.Base.Constructible.Constructible a tag
+ Data.GI.Base.GError: instance Data.GI.Base.BasicTypes.BoxedObject Data.GI.Base.GError.GError
+ Data.GI.Base.GError: instance GHC.Exception.Exception Data.GI.Base.GError.GError
+ Data.GI.Base.GError: instance GHC.Show.Show Data.GI.Base.GError.GError
+ Data.GI.Base.GObject: new' :: (MonadIO m, GObject o) => (ForeignPtr o -> o) -> [IO (GValueConstruct o)] -> m o
+ Data.GI.Base.GType: GType :: CGType -> GType
+ Data.GI.Base.GType: [gtypeToCGType] :: GType -> CGType
+ Data.GI.Base.GType: gtypeBoolean :: GType
+ Data.GI.Base.GType: gtypeBoxed :: GType
+ Data.GI.Base.GType: gtypeByteArray :: GType
+ Data.GI.Base.GType: gtypeDouble :: GType
+ Data.GI.Base.GType: gtypeFloat :: GType
+ Data.GI.Base.GType: gtypeGType :: GType
+ Data.GI.Base.GType: gtypeInt :: GType
+ Data.GI.Base.GType: gtypeInt64 :: GType
+ Data.GI.Base.GType: gtypeInvalid :: GType
+ Data.GI.Base.GType: gtypeLong :: GType
+ Data.GI.Base.GType: gtypeName :: GType -> IO String
+ Data.GI.Base.GType: gtypeObject :: GType
+ Data.GI.Base.GType: gtypePointer :: GType
+ Data.GI.Base.GType: gtypeString :: GType
+ Data.GI.Base.GType: gtypeStrv :: GType
+ Data.GI.Base.GType: gtypeUInt :: GType
+ Data.GI.Base.GType: gtypeUInt64 :: GType
+ Data.GI.Base.GType: gtypeULong :: GType
+ Data.GI.Base.GType: gtypeVariant :: GType
+ Data.GI.Base.GType: newtype GType
+ Data.GI.Base.GType: type CGType = Word64
+ Data.GI.Base.GValue: GValueConstruct :: String -> GValue -> GValueConstruct o
+ Data.GI.Base.GValue: data GValueConstruct o
+ Data.GI.Base.GValue: instance Data.GI.Base.BasicTypes.BoxedObject Data.GI.Base.GValue.GValue
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Base.Maybe Data.Text.Internal.Text)
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Base.Maybe GHC.Base.String)
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue (GHC.Ptr.Ptr a)
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue Data.GI.Base.GType.GType
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue Foreign.C.Types.CInt
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue Foreign.C.Types.CLong
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue Foreign.C.Types.CUInt
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue Foreign.C.Types.CULong
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Int.Int32
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Int.Int64
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Types.Bool
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Types.Double
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Types.Float
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Word.Word32
+ Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Word.Word64
+ Data.GI.Base.GVariant: instance (Data.GI.Base.GVariant.IsGVariant a, Data.GI.Base.GVariant.IsGVariant b) => Data.GI.Base.GVariant.IsGVariant (a, b)
+ Data.GI.Base.GVariant: instance (Data.GI.Base.GVariant.IsGVariant a, Data.GI.Base.GVariant.IsGVariant b, Data.GI.Base.GVariant.IsGVariant c) => Data.GI.Base.GVariant.IsGVariant (a, b, c)
+ Data.GI.Base.GVariant: instance (Data.GI.Base.GVariant.IsGVariant a, Data.GI.Base.GVariant.IsGVariant b, Data.GI.Base.GVariant.IsGVariant c, Data.GI.Base.GVariant.IsGVariant d) => Data.GI.Base.GVariant.IsGVariant (a, b, c, d)
+ Data.GI.Base.GVariant: instance (Data.GI.Base.GVariant.IsGVariant a, Data.GI.Base.GVariant.IsGVariant b, Data.GI.Base.GVariant.IsGVariant c, Data.GI.Base.GVariant.IsGVariant d, Data.GI.Base.GVariant.IsGVariant e) => Data.GI.Base.GVariant.IsGVariant (a, b, c, d, e)
+ Data.GI.Base.GVariant: instance (Data.GI.Base.GVariant.IsGVariant a, Data.GI.Base.GVariant.IsGVariantBasicType a, Data.GI.Base.GVariant.IsGVariant b) => Data.GI.Base.GVariant.IsGVariant (Data.GI.Base.GVariant.GVariantDictEntry a b)
+ Data.GI.Base.GVariant: instance (Data.GI.Base.GVariant.IsGVariant a, Data.GI.Base.GVariant.IsGVariantBasicType a, Data.GI.Base.GVariant.IsGVariant b) => Data.GI.Base.GVariant.IsGVariant (Data.Map.Base.Map a b)
+ Data.GI.Base.GVariant: instance (GHC.Classes.Eq value, GHC.Classes.Eq key) => GHC.Classes.Eq (Data.GI.Base.GVariant.GVariantDictEntry key value)
+ Data.GI.Base.GVariant: instance (GHC.Show.Show value, GHC.Show.Show key) => GHC.Show.Show (Data.GI.Base.GVariant.GVariantDictEntry key value)
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant ()
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant Data.ByteString.Internal.ByteString
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant Data.GI.Base.BasicTypes.GVariant
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant Data.GI.Base.GVariant.GVariantHandle
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant Data.GI.Base.GVariant.GVariantObjectPath
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant Data.GI.Base.GVariant.GVariantSignature
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant Data.Text.Internal.Text
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Int.Int16
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Int.Int32
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Int.Int64
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Types.Bool
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Types.Double
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Word.Word16
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Word.Word32
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Word.Word64
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant GHC.Word.Word8
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant a => Data.GI.Base.GVariant.IsGVariant (Data.GI.Base.GVariant.GVariantSinglet a)
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant a => Data.GI.Base.GVariant.IsGVariant (GHC.Base.Maybe a)
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariant a => Data.GI.Base.GVariant.IsGVariant [a]
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType Data.GI.Base.GVariant.GVariantHandle
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType Data.GI.Base.GVariant.GVariantObjectPath
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType Data.GI.Base.GVariant.GVariantSignature
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType Data.Text.Internal.Text
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Int.Int16
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Int.Int32
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Int.Int64
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Types.Bool
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Types.Double
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Word.Word16
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Word.Word32
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Word.Word64
+ Data.GI.Base.GVariant: instance Data.GI.Base.GVariant.IsGVariantBasicType GHC.Word.Word8
+ Data.GI.Base.GVariant: instance GHC.Classes.Eq Data.GI.Base.GVariant.GVariantHandle
+ Data.GI.Base.GVariant: instance GHC.Classes.Eq Data.GI.Base.GVariant.GVariantObjectPath
+ Data.GI.Base.GVariant: instance GHC.Classes.Eq Data.GI.Base.GVariant.GVariantSignature
+ Data.GI.Base.GVariant: instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.GI.Base.GVariant.GVariantSinglet a)
+ Data.GI.Base.GVariant: instance GHC.Classes.Ord Data.GI.Base.GVariant.GVariantHandle
+ Data.GI.Base.GVariant: instance GHC.Classes.Ord Data.GI.Base.GVariant.GVariantObjectPath
+ Data.GI.Base.GVariant: instance GHC.Classes.Ord Data.GI.Base.GVariant.GVariantSignature
+ Data.GI.Base.GVariant: instance GHC.Show.Show Data.GI.Base.GVariant.GVariantHandle
+ Data.GI.Base.GVariant: instance GHC.Show.Show Data.GI.Base.GVariant.GVariantObjectPath
+ Data.GI.Base.GVariant: instance GHC.Show.Show Data.GI.Base.GVariant.GVariantSignature
+ Data.GI.Base.GVariant: instance GHC.Show.Show a => GHC.Show.Show (Data.GI.Base.GVariant.GVariantSinglet a)
+ Data.GI.Base.Overloading: class HasAttributeList a
+ Data.GI.Base.Overloading: instance Data.GI.Base.Overloading.HasAttribute attr o => Data.GI.Base.Overloading.HasAttr attr o
+ Data.GI.Base.Overloading: instance forall k (a :: k). (TypeError ...) => Data.GI.Base.Overloading.HasAttributeList a
+ Data.GI.Base.ShortPrelude: infixr 0 $
+ Data.GI.Base.ShortPrelude: infixr 1 =<<
+ Data.GI.Base.ShortPrelude: infixr 5 ++
+ Data.GI.Base.ShortPrelude: infixr 9 .
+ Data.GI.Base.Signals: [PropertyNotify] :: (info ~ ResolveAttribute propName o, AttrInfo info, pl ~ AttrLabel info) => AttrLabelProxy propName -> SignalProxy o (GObjectNotifySignalInfo pl)
+ Data.GI.Base.Signals: [SignalProxy] :: SignalProxy o info
+ Data.GI.Base.Signals: instance GHC.TypeLits.KnownSymbol propName => Data.GI.Base.Signals.SignalInfo (Data.GI.Base.Signals.GObjectNotifySignalInfo propName)
+ Data.GI.Base.Signals: instance forall k (a :: k). Data.GI.Base.Signals.NoConstraint a
+ Data.GI.Base.Signals: instance info ~ Data.GI.Base.Overloading.ResolveSignal slot object => Data.GI.Base.Overloading.IsLabelProxy slot (Data.GI.Base.Signals.SignalProxy object info)
+ Data.GI.Base.Signals: instance info ~ Data.GI.Base.Overloading.ResolveSignal slot object => GHC.OverloadedLabels.IsLabel slot (Data.GI.Base.Signals.SignalProxy object info)
+ Data.GI.Base.Signals: type family HaskellCallbackType info;
+ Data.GI.Base.Signals: }
- Data.GI.Base.Attributes: attrConstruct :: (AttrInfo info, AttrSetTypeConstraint info b) => Proxy info -> b -> IO (String, GValue)
+ Data.GI.Base.Attributes: attrConstruct :: (AttrInfo info, AttrBaseTypeConstraint info o, AttrSetTypeConstraint info b) => Proxy info -> b -> IO (GValueConstruct o)
- Data.GI.Base.Attributes: class AttrInfo (info :: *) where type family AttrAllowedOps info :: [AttrOpTag] type family AttrSetTypeConstraint info :: * -> Constraint type family AttrBaseTypeConstraint info :: * -> Constraint type family AttrGetType info type family AttrLabel info :: Symbol
+ Data.GI.Base.Attributes: class AttrInfo (info :: *) where type AttrAllowedOps info :: [AttrOpTag] type AttrSetTypeConstraint info :: * -> Constraint type AttrBaseTypeConstraint info :: * -> Constraint type AttrGetType info type AttrLabel info :: Symbol where {
- Data.GI.Base.Attributes: clear :: (info ~ ResolveAttribute attr obj, AttrInfo info, (AttrBaseTypeConstraint info) obj, AttrOpAllowed AttrClear info, MonadIO m) => obj -> AttrLabelProxy (attr :: Symbol) -> m ()
+ Data.GI.Base.Attributes: clear :: forall info attr obj m. (AttrClearC info obj attr, MonadIO m) => obj -> AttrLabelProxy (attr :: Symbol) -> m ()
- Data.GI.Base.Attributes: get :: (info ~ ResolveAttribute attr obj, AttrInfo info, (AttrBaseTypeConstraint info) obj, AttrOpAllowed AttrGet info, MonadIO m) => obj -> AttrLabelProxy (attr :: Symbol) -> m (AttrGetType info)
+ Data.GI.Base.Attributes: get :: forall info attr obj result m. (AttrGetC info obj attr result, MonadIO m) => obj -> AttrLabelProxy (attr :: Symbol) -> m result
- Data.GI.Base.Attributes: set :: MonadIO m => o -> [AttrOp o AttrSet] -> m ()
+ Data.GI.Base.Attributes: set :: forall o m. MonadIO m => o -> [AttrOp o AttrSet] -> m ()
- Data.GI.Base.BasicConversions: mapGArray :: Storable a => (a -> IO b) -> Ptr (GArray a) -> IO ()
+ Data.GI.Base.BasicConversions: mapGArray :: forall a b. Storable a => (a -> IO b) -> Ptr (GArray a) -> IO ()
- Data.GI.Base.BasicConversions: packGArray :: Storable a => [a] -> IO (Ptr (GArray a))
+ Data.GI.Base.BasicConversions: packGArray :: forall a. Storable a => [a] -> IO (Ptr (GArray a))
- Data.GI.Base.BasicConversions: packMapStorableArray :: Storable b => (a -> b) -> [a] -> IO (Ptr b)
+ Data.GI.Base.BasicConversions: packMapStorableArray :: forall a b. Storable b => (a -> b) -> [a] -> IO (Ptr b)
- Data.GI.Base.BasicConversions: packMapZeroTerminatedStorableArray :: (Num b, Storable b) => (a -> b) -> [a] -> IO (Ptr b)
+ Data.GI.Base.BasicConversions: packMapZeroTerminatedStorableArray :: forall a b. (Num b, Storable b) => (a -> b) -> [a] -> IO (Ptr b)
- Data.GI.Base.BasicConversions: unpackBoxedArrayWithLength :: (Integral a, BoxedObject b) => Int -> a -> Ptr b -> IO [Ptr b]
+ Data.GI.Base.BasicConversions: unpackBoxedArrayWithLength :: forall a b. (Integral a, BoxedObject b) => Int -> a -> Ptr b -> IO [Ptr b]
- Data.GI.Base.BasicConversions: unpackGArray :: Storable a => Ptr (GArray a) -> IO [a]
+ Data.GI.Base.BasicConversions: unpackGArray :: forall a. Storable a => Ptr (GArray a) -> IO [a]
- Data.GI.Base.BasicConversions: unpackMapStorableArrayWithLength :: (Integral a, Storable b) => (b -> c) -> a -> Ptr b -> IO [c]
+ Data.GI.Base.BasicConversions: unpackMapStorableArrayWithLength :: forall a b c. (Integral a, Storable b) => (b -> c) -> a -> Ptr b -> IO [c]
- Data.GI.Base.BasicConversions: unpackMapZeroTerminatedStorableArray :: (Eq a, Num a, Storable a) => (a -> b) -> Ptr a -> IO [b]
+ Data.GI.Base.BasicConversions: unpackMapZeroTerminatedStorableArray :: forall a b. (Eq a, Num a, Storable a) => (a -> b) -> Ptr a -> IO [b]
- Data.GI.Base.GError: catchGErrorJustDomain :: GErrorClass err => IO a -> (err -> GErrorMessage -> IO a) -> IO a
+ Data.GI.Base.GError: catchGErrorJustDomain :: forall err a. GErrorClass err => IO a -> (err -> GErrorMessage -> IO a) -> IO a
- Data.GI.Base.GObject: constructGObject :: (GObject o, MonadIO m) => (ForeignPtr o -> o) -> [AttrOp o AttrConstruct] -> m o
+ Data.GI.Base.GObject: constructGObject :: forall o m. (GObject o, MonadIO m) => (ForeignPtr o -> o) -> [AttrOp o AttrConstruct] -> m o
- Data.GI.Base.GVariant: gvariantFromList :: IsGVariant a => [a] -> IO GVariant
+ Data.GI.Base.GVariant: gvariantFromList :: forall a. IsGVariant a => [a] -> IO GVariant
- Data.GI.Base.GVariant: gvariantFromMaybe :: IsGVariant a => Maybe a -> IO GVariant
+ Data.GI.Base.GVariant: gvariantFromMaybe :: forall a. IsGVariant a => Maybe a -> IO GVariant
- Data.GI.Base.GVariant: gvariantToDictEntry :: (IsGVariant key, IsGVariantBasicType key, IsGVariant value) => GVariant -> IO (Maybe (key, value))
+ Data.GI.Base.GVariant: gvariantToDictEntry :: forall key value. (IsGVariant key, IsGVariantBasicType key, IsGVariant value) => GVariant -> IO (Maybe (key, value))
- Data.GI.Base.GVariant: gvariantToList :: IsGVariant a => GVariant -> IO (Maybe [a])
+ Data.GI.Base.GVariant: gvariantToList :: forall a. IsGVariant a => GVariant -> IO (Maybe [a])
- Data.GI.Base.GVariant: gvariantToMap :: (IsGVariant key, IsGVariantBasicType key, IsGVariant value) => GVariant -> IO (Maybe (Map key value))
+ Data.GI.Base.GVariant: gvariantToMap :: forall key value. (IsGVariant key, IsGVariantBasicType key, IsGVariant value) => GVariant -> IO (Maybe (Map key value))
- Data.GI.Base.GVariant: gvariantToMaybe :: IsGVariant a => GVariant -> IO (Maybe (Maybe a))
+ Data.GI.Base.GVariant: gvariantToMaybe :: forall a. IsGVariant a => GVariant -> IO (Maybe (Maybe a))
- Data.GI.Base.ManagedPtr: castTo :: (GObject o, GObject o') => (ForeignPtr o' -> o') -> o -> IO (Maybe o')
+ Data.GI.Base.ManagedPtr: castTo :: forall o o'. (GObject o, GObject o') => (ForeignPtr o' -> o') -> o -> IO (Maybe o')
- Data.GI.Base.ManagedPtr: copyBoxed :: BoxedObject a => a -> IO (Ptr a)
+ Data.GI.Base.ManagedPtr: copyBoxed :: forall a. BoxedObject a => a -> IO (Ptr a)
- Data.GI.Base.ManagedPtr: copyBoxedPtr :: BoxedObject a => Ptr a -> IO (Ptr a)
+ Data.GI.Base.ManagedPtr: copyBoxedPtr :: forall a. BoxedObject a => Ptr a -> IO (Ptr a)
- Data.GI.Base.ManagedPtr: freeBoxed :: BoxedObject a => a -> IO ()
+ Data.GI.Base.ManagedPtr: freeBoxed :: forall a. BoxedObject a => a -> IO ()
- Data.GI.Base.ManagedPtr: newBoxed :: BoxedObject a => (ForeignPtr a -> a) -> Ptr a -> IO a
+ Data.GI.Base.ManagedPtr: newBoxed :: forall a. BoxedObject a => (ForeignPtr a -> a) -> Ptr a -> IO a
- Data.GI.Base.ManagedPtr: touchManagedPtr :: ForeignPtrNewtype a => a -> IO ()
+ Data.GI.Base.ManagedPtr: touchManagedPtr :: forall a. ForeignPtrNewtype a => a -> IO ()
- Data.GI.Base.ManagedPtr: unsafeCastTo :: (GObject o, GObject o') => (ForeignPtr o' -> o') -> o -> IO o'
+ Data.GI.Base.ManagedPtr: unsafeCastTo :: forall o o'. (GObject o, GObject o') => (ForeignPtr o' -> o') -> o -> IO o'
- Data.GI.Base.ManagedPtr: unsafeManagedPtrCastPtr :: ForeignPtrNewtype a => a -> Ptr b
+ Data.GI.Base.ManagedPtr: unsafeManagedPtrCastPtr :: forall a b. ForeignPtrNewtype a => a -> Ptr b
- Data.GI.Base.ManagedPtr: wrapBoxed :: BoxedObject a => (ForeignPtr a -> a) -> Ptr a -> IO a
+ Data.GI.Base.ManagedPtr: wrapBoxed :: forall a. BoxedObject a => (ForeignPtr a -> a) -> Ptr a -> IO a
- Data.GI.Base.ManagedPtr: wrapObject :: (GObject a, GObject b) => (ForeignPtr a -> a) -> Ptr b -> IO a
+ Data.GI.Base.ManagedPtr: wrapObject :: forall a b. (GObject a, GObject b) => (ForeignPtr a -> a) -> Ptr b -> IO a
- Data.GI.Base.Properties: constructObjectPropertyBool :: String -> Bool -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyBool :: String -> Bool -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyBoxed :: BoxedObject a => String -> Maybe a -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyBoxed :: forall a o. (BoxedObject a) => String -> Maybe a -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyByteArray :: String -> Maybe ByteString -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyByteArray :: String -> Maybe ByteString -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyDouble :: String -> Double -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyDouble :: String -> Double -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyEnum :: (Enum a, BoxedEnum a) => String -> a -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyEnum :: (Enum a, BoxedEnum a) => String -> a -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyFlags :: (IsGFlag a, BoxedFlags a) => String -> [a] -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyFlags :: forall a o. (IsGFlag a, BoxedFlags a) => String -> [a] -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyFloat :: String -> Float -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyFloat :: String -> Float -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyGType :: String -> GType -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyGType :: String -> GType -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyHash :: String -> b -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyHash :: String -> b -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyInt :: String -> CInt -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyInt :: String -> CInt -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyInt32 :: String -> Int32 -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyInt32 :: String -> Int32 -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyInt64 :: String -> Int64 -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyInt64 :: String -> Int64 -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyLong :: String -> CLong -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyLong :: String -> CLong -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyObject :: GObject a => String -> Maybe a -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyObject :: forall a o. GObject a => String -> Maybe a -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyPtr :: String -> Ptr b -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyPtr :: String -> Ptr b -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyPtrGList :: String -> [Ptr a] -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyPtrGList :: String -> [Ptr a] -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyString :: String -> Maybe Text -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyString :: String -> Maybe Text -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyStringArray :: String -> Maybe [Text] -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyStringArray :: String -> Maybe [Text] -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyUInt :: String -> CUInt -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyUInt :: String -> CUInt -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyUInt32 :: String -> Word32 -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyUInt32 :: String -> Word32 -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyUInt64 :: String -> Word64 -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyUInt64 :: String -> Word64 -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyULong :: String -> CULong -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyULong :: String -> CULong -> IO (GValueConstruct o)
- Data.GI.Base.Properties: constructObjectPropertyVariant :: String -> Maybe GVariant -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyVariant :: String -> Maybe GVariant -> IO (GValueConstruct o)
- Data.GI.Base.Properties: getObjectPropertyBoxed :: (GObject a, BoxedObject b) => a -> String -> (ForeignPtr b -> b) -> IO (Maybe b)
+ Data.GI.Base.Properties: getObjectPropertyBoxed :: forall a b. (GObject a, BoxedObject b) => a -> String -> (ForeignPtr b -> b) -> IO (Maybe b)
- Data.GI.Base.Properties: getObjectPropertyEnum :: (GObject a, Enum b, BoxedEnum b) => a -> String -> IO b
+ Data.GI.Base.Properties: getObjectPropertyEnum :: forall a b. (GObject a, Enum b, BoxedEnum b) => a -> String -> IO b
- Data.GI.Base.Properties: getObjectPropertyFlags :: (GObject a, IsGFlag b, BoxedFlags b) => a -> String -> IO [b]
+ Data.GI.Base.Properties: getObjectPropertyFlags :: forall a b. (GObject a, IsGFlag b, BoxedFlags b) => a -> String -> IO [b]
- Data.GI.Base.Properties: getObjectPropertyObject :: (GObject a, GObject b) => a -> String -> (ForeignPtr b -> b) -> IO (Maybe b)
+ Data.GI.Base.Properties: getObjectPropertyObject :: forall a b. (GObject a, GObject b) => a -> String -> (ForeignPtr b -> b) -> IO (Maybe b)
- Data.GI.Base.Properties: setObjectPropertyBoxed :: (GObject a, BoxedObject b) => a -> String -> Maybe b -> IO ()
+ Data.GI.Base.Properties: setObjectPropertyBoxed :: forall a b. (GObject a, BoxedObject b) => a -> String -> Maybe b -> IO ()
- Data.GI.Base.Properties: setObjectPropertyFlags :: (IsGFlag b, BoxedFlags b, GObject a) => a -> String -> [b] -> IO ()
+ Data.GI.Base.Properties: setObjectPropertyFlags :: forall a b. (IsGFlag b, BoxedFlags b, GObject a) => a -> String -> [b] -> IO ()
- Data.GI.Base.Properties: setObjectPropertyObject :: (GObject a, GObject b) => a -> String -> Maybe b -> IO ()
+ Data.GI.Base.Properties: setObjectPropertyObject :: forall a b. (GObject a, GObject b) => a -> String -> Maybe b -> IO ()
- Data.GI.Base.ShortPrelude: class Monad (m :: * -> *)
+ Data.GI.Base.ShortPrelude: class Applicative m => Monad (m :: * -> *)
- Data.GI.Base.ShortPrelude: error :: [Char] -> a
+ Data.GI.Base.ShortPrelude: error :: HasCallStack => [Char] -> a
- Data.GI.Base.ShortPrelude: length :: [a] -> Int
+ Data.GI.Base.ShortPrelude: length :: Foldable t => forall a. t a -> Int
- Data.GI.Base.ShortPrelude: mapM :: Monad m => (a -> m b) -> [a] -> m [b]
+ Data.GI.Base.ShortPrelude: mapM :: Traversable t => forall (m :: * -> *) a b. Monad m => (a -> m b) -> t a -> m (t b)
- Data.GI.Base.ShortPrelude: mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
+ Data.GI.Base.ShortPrelude: mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
- Data.GI.Base.ShortPrelude: undefined :: a
+ Data.GI.Base.ShortPrelude: undefined :: HasCallStack => a
- Data.GI.Base.ShortPrelude: when :: Monad m => Bool -> m () -> m ()
+ Data.GI.Base.ShortPrelude: when :: Applicative f => Bool -> f () -> f ()
- Data.GI.Base.Signals: after :: (GObject object, MonadIO m, SignalInfo info) => object -> SignalProxy object info -> HaskellCallbackType info -> m SignalHandlerId
+ Data.GI.Base.Signals: after :: forall object info m. (GObject object, MonadIO m, SignalInfo info) => object -> SignalProxy object info -> HaskellCallbackType info -> m SignalHandlerId
- Data.GI.Base.Signals: class SignalInfo (info :: *) where type family HaskellCallbackType info
+ Data.GI.Base.Signals: class SignalInfo (info :: *) where type HaskellCallbackType info where {
- Data.GI.Base.Signals: on :: (GObject object, MonadIO m, SignalInfo info) => object -> SignalProxy object info -> HaskellCallbackType info -> m SignalHandlerId
+ Data.GI.Base.Signals: on :: forall object info m. (GObject object, MonadIO m, SignalInfo info) => object -> SignalProxy object info -> HaskellCallbackType info -> m SignalHandlerId
- Data.GI.Base.Utils: allocMem :: Storable a => IO (Ptr a)
+ Data.GI.Base.Utils: allocMem :: forall a. Storable a => IO (Ptr a)
- Data.GI.Base.Utils: callocBoxedBytes :: BoxedObject a => Int -> IO (Ptr a)
+ Data.GI.Base.Utils: callocBoxedBytes :: forall a. BoxedObject a => Int -> IO (Ptr a)
- Data.GI.Base.Utils: callocMem :: Storable a => IO (Ptr a)
+ Data.GI.Base.Utils: callocMem :: forall a. Storable a => IO (Ptr a)
Files
- haskell-gi-base.cabal +2/−1
- src/Data/GI/Base.hs +2/−0
- src/Data/GI/Base/Attributes.hs +61/−18
- src/Data/GI/Base/BasicTypes.hs +206/−0
- src/Data/GI/Base/BasicTypes.hsc +0/−318
- src/Data/GI/Base/GObject.hsc +32/−12
- src/Data/GI/Base/GType.hsc +142/−0
- src/Data/GI/Base/GValue.hsc +7/−1
- src/Data/GI/Base/Overloading.hs +36/−3
- src/Data/GI/Base/Properties.hsc +28/−28
- src/Data/GI/Base/ShortPrelude.hs +0/−9
haskell-gi-base.cabal view
@@ -1,5 +1,5 @@ name: haskell-gi-base-version: 0.17+version: 0.18 synopsis: Foundation for libraries generated by haskell-gi description: Foundation for libraries generated by haskell-gi homepage: https://github.com/haskell-gi/haskell-gi-base@@ -30,6 +30,7 @@ Data.GI.Base.GError, Data.GI.Base.GHashTable, Data.GI.Base.GObject,+ Data.GI.Base.GType, Data.GI.Base.GValue, Data.GI.Base.GVariant, Data.GI.Base.ManagedPtr,
src/Data/GI/Base.hs view
@@ -12,6 +12,7 @@ , module Data.GI.Base.Constructible , module Data.GI.Base.GError , module Data.GI.Base.GHashTable+ , module Data.GI.Base.GObject , module Data.GI.Base.GValue , module Data.GI.Base.GVariant , module Data.GI.Base.ManagedPtr@@ -25,6 +26,7 @@ import Data.GI.Base.Constructible (new) import Data.GI.Base.GError import Data.GI.Base.GHashTable+import Data.GI.Base.GObject (new') import Data.GI.Base.GValue (GValue(..), IsGValue(..)) import Data.GI.Base.GVariant import Data.GI.Base.ManagedPtr
src/Data/GI/Base/Attributes.hs view
@@ -125,6 +125,11 @@ AttrOp(..), + AttrGetC,+ AttrSetC,+ AttrConstructC,+ AttrClearC,+ get, set, clear,@@ -136,8 +141,9 @@ import Data.Proxy (Proxy(..)) -import Data.GI.Base.GValue (GValue(..))-import Data.GI.Base.Overloading (ResolveAttribute, IsLabelProxy(..))+import Data.GI.Base.GValue (GValueConstruct)+import Data.GI.Base.Overloading (HasAttributeList,+ ResolveAttribute, IsLabelProxy(..)) import GHC.TypeLits import GHC.Exts (Constraint)@@ -186,8 +192,9 @@ attrClear :: AttrBaseTypeConstraint info o => Proxy info -> o -> IO () -- | Build a `GValue` representing the attribute.- attrConstruct :: AttrSetTypeConstraint info b =>- Proxy info -> b -> IO (String, GValue)+ attrConstruct :: (AttrBaseTypeConstraint info o,+ AttrSetTypeConstraint info b) =>+ Proxy info -> b -> IO (GValueConstruct o) -- | Result of checking whether an op is allowed on an attribute. data OpAllowed tag attrName =@@ -229,24 +236,45 @@ AttrOpText 'AttrClear = "nullable" #endif +-- | Constraint on a @obj@\/@attr@ pair so that `set` works on values+-- of type @value@.+type AttrSetC info obj attr value = (HasAttributeList obj,+ info ~ ResolveAttribute attr obj,+ AttrInfo info,+ AttrBaseTypeConstraint info obj,+ AttrOpAllowed 'AttrSet info,+ (AttrSetTypeConstraint info) value)++-- | Constraint on a @obj@\/@value@ pair so that `new` works on values+-- of type @@value@.+type AttrConstructC info obj attr value = (HasAttributeList obj,+ info ~ ResolveAttribute attr obj,+ AttrInfo info,+ AttrBaseTypeConstraint info obj,+ AttrOpAllowed 'AttrConstruct info,+ (AttrSetTypeConstraint info) value)+ -- | Constructors for the different operations allowed on an attribute. data AttrOp obj (tag :: AttrOpTag) where -- Assign a value to an attribute- (:=) :: (info ~ ResolveAttribute attr obj,+ (:=) :: (HasAttributeList obj,+ info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info, (AttrSetTypeConstraint info) b) => AttrLabelProxy (attr :: Symbol) -> b -> AttrOp obj tag -- Assign the result of an IO action to an attribute- (:=>) :: (info ~ ResolveAttribute attr obj,+ (:=>) :: (HasAttributeList obj,+ info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, AttrOpAllowed tag info, (AttrSetTypeConstraint info) b) => AttrLabelProxy (attr :: Symbol) -> IO b -> AttrOp obj tag -- Apply an update function to an attribute- (:~) :: (info ~ ResolveAttribute attr obj,+ (:~) :: (HasAttributeList obj,+ info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet,@@ -256,7 +284,8 @@ a ~ (AttrGetType info)) => AttrLabelProxy (attr :: Symbol) -> (a -> b) -> AttrOp obj tag -- Apply an IO update function to an attribute- (:~>) :: (info ~ ResolveAttribute attr obj,+ (:~>) :: (HasAttributeList obj,+ info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet,@@ -266,7 +295,8 @@ a ~ (AttrGetType info)) => AttrLabelProxy (attr :: Symbol) -> (a -> IO b) -> AttrOp obj tag -- Assign a value to an attribute with the object as an argument- (::=) :: (info ~ ResolveAttribute attr obj,+ (::=) :: (HasAttributeList obj,+ info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet,@@ -275,7 +305,8 @@ AttrLabelProxy (attr :: Symbol) -> (obj -> b) -> AttrOp obj tag -- Apply an update function to an attribute with the object as an -- argument- (::~) :: (info ~ ResolveAttribute attr obj,+ (::~) :: (HasAttributeList obj,+ info ~ ResolveAttribute attr obj, AttrInfo info, AttrBaseTypeConstraint info obj, tag ~ 'AttrSet,@@ -303,18 +334,30 @@ app (attr ::~ f) = attrGet (resolve attr) obj >>= \v -> attrSet (resolve attr) obj (f obj v) +-- | Constraints on a @obj@\/@attr@ pair so `get` is possible,+-- producing a value of type @result@.+type AttrGetC info obj attr result = (HasAttributeList obj,+ info ~ ResolveAttribute attr obj,+ AttrInfo info,+ (AttrBaseTypeConstraint info) obj,+ AttrOpAllowed 'AttrGet info,+ result ~ AttrGetType info)+ -- | Get the value of an attribute for an object.-get :: forall info attr obj m.- (info ~ ResolveAttribute attr obj, AttrInfo info,- (AttrBaseTypeConstraint info) obj,- AttrOpAllowed 'AttrGet info, MonadIO m) =>- obj -> AttrLabelProxy (attr :: Symbol) -> m (AttrGetType info)+get :: forall info attr obj result m.+ (AttrGetC info obj attr result, MonadIO m) =>+ obj -> AttrLabelProxy (attr :: Symbol) -> m result get o _ = liftIO $ attrGet (Proxy :: Proxy info) o +-- | Constraint on a @obj@\/@attr@ pair so that `clear` is allowed.+type AttrClearC info obj attr = (HasAttributeList obj,+ info ~ ResolveAttribute attr obj,+ AttrInfo info,+ (AttrBaseTypeConstraint info) obj,+ AttrOpAllowed 'AttrClear info)+ -- | Set a nullable attribute to @NULL@. clear :: forall info attr obj m.- (info ~ ResolveAttribute attr obj, AttrInfo info,- (AttrBaseTypeConstraint info) obj,- AttrOpAllowed 'AttrClear info, MonadIO m) =>+ (AttrClearC info obj attr, MonadIO m) => obj -> AttrLabelProxy (attr :: Symbol) -> m () clear o _ = liftIO $ attrClear (Proxy :: Proxy info) o
+ src/Data/GI/Base/BasicTypes.hs view
@@ -0,0 +1,206 @@+{-# LANGUAGE ConstraintKinds, FlexibleContexts, FlexibleInstances,+ DeriveDataTypeable, TypeFamilies, ScopedTypeVariables #-}+#if !MIN_VERSION_base(4,8,0)+{-# LANGUAGE OverlappingInstances #-}+#endif+#if MIN_VERSION_base(4,9,0)+{-# LANGUAGE DataKinds, TypeOperators, UndecidableInstances #-}+#endif+-- | Basic types used in the bindings.+module Data.GI.Base.BasicTypes+ (+ -- * GType related+ module Data.GI.Base.GType -- reexported for convenience++ -- * Memory management++ , ForeignPtrNewtype+ , BoxedObject(..)+ , BoxedEnum(..)+ , BoxedFlags(..)+ , GObject(..)+ , WrappedPtr(..)+ , UnexpectedNullPointerReturn(..)+ , NullToNothing(..)++ -- * Basic GLib \/ GObject types+ , GVariant(..)+ , GParamSpec(..)++ , GArray(..)+ , GPtrArray(..)+ , GByteArray(..)+ , GHashTable(..)+ , GList(..)+ , g_list_free+ , GSList(..)+ , g_slist_free++ , IsGFlag++ , PtrWrapped(..)+ , GDestroyNotify+ ) where++#if !MIN_VERSION_base(4,8,0)+import Control.Applicative ((<$>))+#endif+import Control.Exception (Exception, catch)+import Control.Monad.IO.Class (MonadIO(..))+import Data.Coerce (Coercible)+import Data.Proxy (Proxy)+import qualified Data.Text as T+import Data.Typeable (Typeable)+import Foreign.Ptr (Ptr, FunPtr)+import Foreign.ForeignPtr (ForeignPtr)++#if MIN_VERSION_base(4,9,0)+import GHC.TypeLits+#endif++import Data.GI.Base.GType++-- | A constraint ensuring that the given type is coercible to a+-- ForeignPtr. It will hold for newtypes of the form+--+-- > newtype Foo = Foo (ForeignPtr Foo)+--+-- which is the typical shape of wrapped 'GObject's.+type ForeignPtrNewtype a = Coercible a (ForeignPtr ())+-- Notice that the Coercible here is to ForeignPtr (), instead of+-- "ForeignPtr a", which would be the most natural thing. Both are+-- representationally equivalent, so this is not a big deal. This is+-- to work around a problem in ghc 7.10:+-- https://ghc.haskell.org/trac/ghc/ticket/10715++-- | Wrapped boxed structures, identified by their `GType`.+class ForeignPtrNewtype a => BoxedObject a where+ boxedType :: a -> IO GType -- This should not use the value of its+ -- argument.++-- | Enums with an associated `GType`.+class BoxedEnum a where+ boxedEnumType :: a -> IO GType++-- | Flags with an associated `GType`.+class BoxedFlags a where+ boxedFlagsType :: Proxy a -> IO GType++-- | Pointers to structs/unions without an associated `GType`.+class ForeignPtrNewtype a => WrappedPtr a where+ -- | Allocate a zero-initialized block of memory for the given type.+ wrappedPtrCalloc :: IO (Ptr a)+ -- | Make a copy of the given pointer.+ wrappedPtrCopy :: Ptr a -> IO (Ptr a)+ -- | A pointer to a function for freeing the given pointer, or+ -- `Nothing` is the memory associated to the pointer does not need+ -- to be freed.+ wrappedPtrFree :: Maybe (FunPtr (Ptr a -> IO ()))++-- | A wrapped `GObject`.+class ForeignPtrNewtype a => GObject a where+ -- | Whether the `GObject` is a descendent of <https://developer.gnome.org/gobject/stable/gobject-The-Base-Object-Type.html#GInitiallyUnowned GInitiallyUnowned>.+ gobjectIsInitiallyUnowned :: a -> Bool+ -- | The `GType` for this object.+ gobjectType :: a -> IO GType++-- Raise a more understandable type error whenever the `GObject a`+-- constraint is imposed on a type which has no such instance. This+-- helps in the common case where one passes a wrong type (such as+-- `Maybe Widget`) into a function with a `WidgetK a`+-- constraint. Without this type error, the resulting type error is+-- much less understandable, since GHC complains (at length) about a+-- missing type family instance for `ParentTypes`.+#if MIN_VERSION_base(4,9,0)+instance {-# OVERLAPPABLE #-}+ (TypeError ('Text "Type ‘" ':<>: 'ShowType a ':<>:+ 'Text "’ does not descend from GObject."), ForeignPtrNewtype a)+ => GObject a where+ gobjectIsInitiallyUnowned = undefined+ gobjectType = undefined+#endif++-- | A common omission in the introspection data is missing (nullable)+-- annotations for return types, when they clearly are nullable. (A+-- common idiom is "Returns: valid value, or %NULL if something went+-- wrong.")+--+-- Haskell wrappers will raise this exception if the return value is+-- an unexpected `Foreign.Ptr.nullPtr`.+data UnexpectedNullPointerReturn =+ UnexpectedNullPointerReturn { nullPtrErrorMsg :: T.Text }+ deriving (Show, Typeable)++instance Exception UnexpectedNullPointerReturn++type family UnMaybe a :: * where+ UnMaybe (Maybe a) = a+ UnMaybe a = a++class NullToNothing a where+ -- | Some functions are not marked as having a nullable return type+ -- in the introspection data. The result is that they currently do+ -- not return a Maybe type. This functions lets you work around this+ -- in a way that will not break when the introspection data is fixed.+ --+ -- When you want to call a `someHaskellGIFunction` that may return null+ -- wrap the call like this.+ --+ -- > nullToNothing (someHaskellGIFunction x y)+ --+ -- The result will be a Maybe type even if the introspection data has+ -- not been fixed for `someHaskellGIFunction` yet.+ nullToNothing :: MonadIO m => IO a -> m (Maybe (UnMaybe a))++instance+#if MIN_VERSION_base(4,8,0)+ {-# OVERLAPPABLE #-}+#endif+ a ~ UnMaybe a => NullToNothing a where+ nullToNothing f = liftIO $+ (Just <$> f) `catch` (\(_::UnexpectedNullPointerReturn) -> return Nothing)++instance NullToNothing (Maybe a) where+ nullToNothing = liftIO++-- | A <https://developer.gnome.org/glib/stable/glib-GVariant.html GVariant>. See "Data.GI.Base.GVariant" for further methods.+newtype GVariant = GVariant (ForeignPtr GVariant)++-- | A <https://developer.gnome.org/gobject/stable/gobject-GParamSpec.html GParamSpec>. See "Data.GI.Base.GParamSpec" for further methods.+newtype GParamSpec = GParamSpec (ForeignPtr GParamSpec)++-- | An enum usable as a flag for a function.+class Enum a => IsGFlag a++-- | A <https://developer.gnome.org/glib/stable/glib-Arrays.html GArray>. Marshalling for this type is done in "Data.GI.Base.BasicConversions", it is mapped to a list on the Haskell side.+data GArray a = GArray (Ptr (GArray a))++-- | A <https://developer.gnome.org/glib/stable/glib-Pointer-Arrays.html GPtrArray>. Marshalling for this type is done in "Data.GI.Base.BasicConversions", it is mapped to a list on the Haskell side.+data GPtrArray a = GPtrArray (Ptr (GPtrArray a))++-- | A <https://developer.gnome.org/glib/stable/glib-Byte-Arrays.html GByteArray>. Marshalling for this type is done in "Data.GI.Base.BasicConversions", it is packed to a 'Data.ByteString.ByteString' on the Haskell side.+data GByteArray = GByteArray (Ptr GByteArray)++-- | A <https://developer.gnome.org/glib/stable/glib-Hash-Tables.html GHashTable>. It is mapped to a 'Data.Map.Map' on the Haskell side.+data GHashTable a b = GHashTable (Ptr (GHashTable a b))++-- | A <https://developer.gnome.org/glib/stable/glib-Doubly-Linked-Lists.html GList>, mapped to a list on the Haskell side. Marshalling is done in "Data.GI.Base.BasicConversions".+data GList a = GList (Ptr (GList a))++-- | A <https://developer.gnome.org/glib/stable/glib-Singly-Linked-Lists.html GSList>, mapped to a list on the Haskell side. Marshalling is done in "Data.GI.Base.BasicConversions".+data GSList a = GSList (Ptr (GSList a))++-- | Some APIs, such as `GHashTable`, pass around scalar types+-- wrapped into a pointer. We encode such a type as follows.+newtype PtrWrapped a = PtrWrapped {unwrapPtr :: Ptr a}++-- | Destroy the memory associated with a given pointer.+type GDestroyNotify a = FunPtr (Ptr a -> IO ())++-- | Free the given 'GList'.+foreign import ccall "g_list_free" g_list_free ::+ Ptr (GList a) -> IO ()++-- | Free the given 'GSList'.+foreign import ccall "g_slist_free" g_slist_free ::+ Ptr (GSList a) -> IO ()
− src/Data/GI/Base/BasicTypes.hsc
@@ -1,318 +0,0 @@-{-# LANGUAGE ConstraintKinds, FlexibleContexts, FlexibleInstances,- DeriveDataTypeable, TypeFamilies, ScopedTypeVariables #-}-#if !MIN_VERSION_base(4,8,0)-{-# LANGUAGE OverlappingInstances #-}-#endif--- | Basic types used in the bindings.-module Data.GI.Base.BasicTypes- (- -- * GType related- GType(..)- , CGType-- , gtypeName-- , gtypeString- , gtypePointer- , gtypeInt- , gtypeUInt- , gtypeLong- , gtypeULong- , gtypeInt64- , gtypeUInt64- , gtypeFloat- , gtypeDouble- , gtypeBoolean- , gtypeGType- , gtypeStrv- , gtypeBoxed- , gtypeObject- , gtypeVariant- , gtypeByteArray- , gtypeInvalid-- -- * Memory management-- , ForeignPtrNewtype- , BoxedObject(..)- , BoxedEnum(..)- , BoxedFlags(..)- , GObject(..)- , WrappedPtr(..)- , UnexpectedNullPointerReturn(..)- , NullToNothing(..)-- -- * Basic GLib \/ GObject types- , GVariant(..)- , GParamSpec(..)-- , GArray(..)- , GPtrArray(..)- , GByteArray(..)- , GHashTable(..)- , GList(..)- , g_list_free- , GSList(..)- , g_slist_free-- , IsGFlag-- , PtrWrapped(..)- , GDestroyNotify- ) where--#if !MIN_VERSION_base(4,8,0)-import Control.Applicative ((<$>))-#endif-import Control.Exception (Exception, catch)-import Control.Monad.IO.Class (MonadIO(..))-import Data.Coerce (Coercible)-import Data.Proxy (Proxy)-import qualified Data.Text as T-import Data.Typeable (Typeable)-import Data.Word-import Foreign.Ptr (Ptr, FunPtr)-import Foreign.ForeignPtr (ForeignPtr)-import Foreign.C.String (CString, peekCString)--#include <glib-object.h>---- | A type identifier in the GLib type system. This is the low-level--- type associated with the representation in memory, when using this--- on the Haskell side use `GType` below.-type CGType = #type GType---- | A newtype for use on the haskell side.-newtype GType = GType {gtypeToCGType :: CGType}--foreign import ccall "g_type_name" g_type_name :: GType -> IO CString---- | Get the name assigned to the given `GType`.-gtypeName :: GType -> IO String-gtypeName gtype = g_type_name gtype >>= peekCString--{-| [Note: compile-time vs run-time GTypes]--Notice that there are two types of GType's: the fundamental ones,-which are created with G_TYPE_MAKE_FUNDAMENTAL(n) and always have the-same runtime representation, and the ones that are registered in the-GObject type system at runtime, and whose `CGType` may change for each-program run (and generally does).--For the first type it is safe to use hsc to read the numerical values-of the CGType at compile type, but for the second type it is essential-to call the corresponding _get_type() function at runtime, and not use-the value of the corresponding "constant" at compile time via hsc.--}--{- Fundamental types -}---- | `GType` of strings.-gtypeString :: GType-gtypeString = GType #const G_TYPE_STRING---- | `GType` of pointers.-gtypePointer :: GType-gtypePointer = GType #const G_TYPE_POINTER---- | `GType` for signed integers (`gint` or `gint32`).-gtypeInt :: GType-gtypeInt = GType #const G_TYPE_INT---- | `GType` for unsigned integers (`guint` or `guint32`).-gtypeUInt :: GType-gtypeUInt = GType #const G_TYPE_UINT---- | `GType` for `glong`.-gtypeLong :: GType-gtypeLong = GType #const G_TYPE_LONG---- | `GType` for `gulong`.-gtypeULong :: GType-gtypeULong = GType #const G_TYPE_ULONG---- | `GType` for signed 64 bit integers.-gtypeInt64 :: GType-gtypeInt64 = GType #const G_TYPE_INT64---- | `GType` for unsigned 64 bit integers.-gtypeUInt64 :: GType-gtypeUInt64 = GType #const G_TYPE_UINT64---- | `GType` for floating point values.-gtypeFloat :: GType-gtypeFloat = GType #const G_TYPE_FLOAT---- | `GType` for gdouble.-gtypeDouble :: GType-gtypeDouble = GType #const G_TYPE_DOUBLE---- | `GType` corresponding to gboolean.-gtypeBoolean :: GType-gtypeBoolean = GType #const G_TYPE_BOOLEAN---- | `GType` corresponding to a `BoxedObject`.-gtypeBoxed :: GType-gtypeBoxed = GType #const G_TYPE_BOXED---- | `GType` corresponding to a `GObject`.-gtypeObject :: GType-gtypeObject = GType #const G_TYPE_OBJECT---- | An invalid `GType` used as error return value in some functions--- which return a `GType`.-gtypeInvalid :: GType-gtypeInvalid = GType #const G_TYPE_INVALID---- | The `GType` corresponding to a `GVariant`.-gtypeVariant :: GType-gtypeVariant = GType #const G_TYPE_VARIANT--{- Run-time types -}--foreign import ccall "g_gtype_get_type" g_gtype_get_type :: CGType---- | `GType` corresponding to a `GType` itself.-gtypeGType :: GType-gtypeGType = GType g_gtype_get_type--foreign import ccall "g_strv_get_type" g_strv_get_type :: CGType---- | `GType` for a NULL terminated array of strings.-gtypeStrv :: GType-gtypeStrv = GType g_strv_get_type--foreign import ccall "g_byte_array_get_type" g_byte_array_get_type :: CGType---- | `GType` for a boxed type holding a `GByteArray`.-gtypeByteArray :: GType-gtypeByteArray = GType g_byte_array_get_type---- | A constraint ensuring that the given type is coercible to a--- ForeignPtr. It will hold for newtypes of the form------ > newtype Foo = Foo (ForeignPtr Foo)------ which is the typical shape of wrapped 'GObject's.-type ForeignPtrNewtype a = Coercible a (ForeignPtr ())--- Notice that the Coercible here is to ForeignPtr (), instead of--- "ForeignPtr a", which would be the most natural thing. Both are--- representationally equivalent, so this is not a big deal. This is--- to work around a problem in ghc 7.10:--- https://ghc.haskell.org/trac/ghc/ticket/10715---- | Wrapped boxed structures, identified by their `GType`.-class ForeignPtrNewtype a => BoxedObject a where- boxedType :: a -> IO GType -- This should not use the value of its- -- argument.---- | Enums with an associated `GType`.-class BoxedEnum a where- boxedEnumType :: a -> IO GType---- | Flags with an associated `GType`.-class BoxedFlags a where- boxedFlagsType :: Proxy a -> IO GType---- | Pointers to structs/unions without an associated `GType`.-class ForeignPtrNewtype a => WrappedPtr a where- -- | Allocate a zero-initialized block of memory for the given type.- wrappedPtrCalloc :: IO (Ptr a)- -- | Make a copy of the given pointer.- wrappedPtrCopy :: Ptr a -> IO (Ptr a)- -- | A pointer to a function for freeing the given pointer, or- -- `Nothing` is the memory associated to the pointer does not need- -- to be freed.- wrappedPtrFree :: Maybe (FunPtr (Ptr a -> IO ()))---- | A wrapped `GObject`.-class ForeignPtrNewtype a => GObject a where- -- | Whether the `GObject` is a descendent of <https://developer.gnome.org/gobject/stable/gobject-The-Base-Object-Type.html#GInitiallyUnowned GInitiallyUnowned>.- gobjectIsInitiallyUnowned :: a -> Bool- -- | The `GType` for this object.- gobjectType :: a -> IO GType---- | A common omission in the introspection data is missing (nullable)--- annotations for return types, when they clearly are nullable. (A--- common idiom is "Returns: valid value, or %NULL if something went--- wrong.")------ Haskell wrappers will raise this exception if the return value is--- an unexpected `Foreign.Ptr.nullPtr`.-data UnexpectedNullPointerReturn =- UnexpectedNullPointerReturn { nullPtrErrorMsg :: T.Text }- deriving (Show, Typeable)--instance Exception UnexpectedNullPointerReturn--type family UnMaybe a :: * where- UnMaybe (Maybe a) = a- UnMaybe a = a--class NullToNothing a where- -- | Some functions are not marked as having a nullable return type- -- in the introspection data. The result is that they currently do- -- not return a Maybe type. This functions lets you work around this- -- in a way that will not break when the introspection data is fixed.- --- -- When you want to call a `someHaskellGIFunction` that may return null- -- wrap the call like this.- --- -- > nullToNothing (someHaskellGIFunction x y)- --- -- The result will be a Maybe type even if the introspection data has- -- not been fixed for `someHaskellGIFunction` yet.- nullToNothing :: MonadIO m => IO a -> m (Maybe (UnMaybe a))--instance-#if MIN_VERSION_base(4,8,0)- {-# OVERLAPPABLE #-}-#endif- a ~ UnMaybe a => NullToNothing a where- nullToNothing f = liftIO $- (Just <$> f) `catch` (\(_::UnexpectedNullPointerReturn) -> return Nothing)--instance NullToNothing (Maybe a) where- nullToNothing = liftIO---- | A <https://developer.gnome.org/glib/stable/glib-GVariant.html GVariant>. See "Data.GI.Base.GVariant" for further methods.-newtype GVariant = GVariant (ForeignPtr GVariant)---- | A <https://developer.gnome.org/gobject/stable/gobject-GParamSpec.html GParamSpec>. See "Data.GI.Base.GParamSpec" for further methods.-newtype GParamSpec = GParamSpec (ForeignPtr GParamSpec)---- | An enum usable as a flag for a function.-class Enum a => IsGFlag a---- | A <https://developer.gnome.org/glib/stable/glib-Arrays.html GArray>. Marshalling for this type is done in "Data.GI.Base.BasicConversions", it is mapped to a list on the Haskell side.-data GArray a = GArray (Ptr (GArray a))---- | A <https://developer.gnome.org/glib/stable/glib-Pointer-Arrays.html GPtrArray>. Marshalling for this type is done in "Data.GI.Base.BasicConversions", it is mapped to a list on the Haskell side.-data GPtrArray a = GPtrArray (Ptr (GPtrArray a))---- | A <https://developer.gnome.org/glib/stable/glib-Byte-Arrays.html GByteArray>. Marshalling for this type is done in "Data.GI.Base.BasicConversions", it is packed to a 'Data.ByteString.ByteString' on the Haskell side.-data GByteArray = GByteArray (Ptr GByteArray)---- | A <https://developer.gnome.org/glib/stable/glib-Hash-Tables.html GHashTable>. It is mapped to a 'Data.Map.Map' on the Haskell side.-data GHashTable a b = GHashTable (Ptr (GHashTable a b))---- | A <https://developer.gnome.org/glib/stable/glib-Doubly-Linked-Lists.html GList>, mapped to a list on the Haskell side. Marshalling is done in "Data.GI.Base.BasicConversions".-data GList a = GList (Ptr (GList a))---- | A <https://developer.gnome.org/glib/stable/glib-Singly-Linked-Lists.html GSList>, mapped to a list on the Haskell side. Marshalling is done in "Data.GI.Base.BasicConversions".-data GSList a = GSList (Ptr (GSList a))---- | Some APIs, such as `GHashTable`, pass around scalar types--- wrapped into a pointer. We encode such a type as follows.-newtype PtrWrapped a = PtrWrapped {unwrapPtr :: Ptr a}---- | Destroy the memory associated with a given pointer.-type GDestroyNotify a = FunPtr (Ptr a -> IO ())---- | Free the given 'GList'.-foreign import ccall "g_list_free" g_list_free ::- Ptr (GList a) -> IO ()---- | Free the given 'GSList'.-foreign import ccall "g_slist_free" g_slist_free ::- Ptr (GSList a) -> IO ()
src/Data/GI/Base/GObject.hsc view
@@ -2,17 +2,19 @@ module Data.GI.Base.GObject ( constructGObject+ , new' ) where import Control.Monad.IO.Class (MonadIO, liftIO) import Data.Proxy (Proxy(..))+ import Foreign.C (CUInt(..), CString, newCString) import Foreign import Data.GI.Base.Attributes (AttrOp(..), AttrOpTag(..), AttrLabelProxy, attrConstruct) import Data.GI.Base.BasicTypes (GType(..), GObject(..))-import Data.GI.Base.GValue (GValue(..))+import Data.GI.Base.GValue (GValue(..), GValueConstruct(..)) import Data.GI.Base.ManagedPtr (withManagedPtr, touchManagedPtr, wrapObject) import Data.GI.Base.Overloading (ResolveAttribute) @@ -29,6 +31,20 @@ -> m o constructGObject constructor attrs = liftIO $ do props <- mapM construct attrs+ doConstructGObject constructor props+ where+ resolve :: AttrLabelProxy attr -> Proxy (ResolveAttribute attr o)+ resolve _ = Proxy++ construct :: AttrOp o 'AttrConstruct ->+ IO (GValueConstruct o)+ construct (attr := x) = attrConstruct (resolve attr) x+ construct (attr :=> x) = x >>= attrConstruct (resolve attr)++-- | Construct the `GObject` given the list of `GValueConstruct`s.+doConstructGObject :: forall o m. (GObject o, MonadIO m)+ => (ForeignPtr o -> o) -> [GValueConstruct o] -> m o+doConstructGObject constructor props = liftIO $ do let nprops = length props params <- mallocBytes (nprops*gparameterSize) fill params props@@ -39,29 +55,25 @@ -- Make sure that the GValues defining the GProperties are still -- alive at this point (so, in particular, they are still alive when -- g_object_newv is called). Without this the GHC garbage collector- -- may free the GValues before g_object_newv us called, which will+ -- may free the GValues before g_object_newv is called, which will -- unref the referred to objects, which may drop the last reference -- to the contained objects. g_object_newv then tries to access the -- (now invalid) contents of the GValue, and mayhem ensues.- mapM_ (touchManagedPtr . snd) props+ mapM_ (touchManagedPtr . deconstructGValue) props wrapObject constructor (result :: Ptr o)- where- resolve :: AttrLabelProxy attr -> Proxy (ResolveAttribute attr o)- resolve _ = Proxy - construct :: AttrOp o 'AttrConstruct ->- IO (String, GValue)- construct (attr := x) = attrConstruct (resolve attr) x- construct (attr :=> x) = x >>= attrConstruct (resolve attr)+ where+ deconstructGValue :: GValueConstruct o -> GValue+ deconstructGValue (GValueConstruct _ v) = v gvalueSize = #size GValue gparameterSize = #size GParameter -- Fill the given memory address with the contents of the array of -- GParameters.- fill :: Ptr () -> [(String, GValue)] -> IO ()+ fill :: Ptr () -> [GValueConstruct o] -> IO () fill _ [] = return ()- fill dataPtr ((str, gvalue):xs) =+ fill dataPtr ((GValueConstruct str gvalue):xs) = do cstr <- newCString str poke (castPtr dataPtr) cstr withManagedPtr gvalue $ \gvalueptr ->@@ -76,3 +88,11 @@ do cstr <- peek (castPtr dataPtr) :: IO CString free cstr freeStrings (n-1) (dataPtr `plusPtr` gparameterSize)++-- | Construct the given `GObject`, given a set of actions+-- constructing desired `GValue`s to set at construction time.+new' :: (MonadIO m, GObject o) =>+ (ForeignPtr o -> o) -> [IO (GValueConstruct o)] -> m o+new' constructor actions = do+ props <- liftIO $ sequence (actions)+ doConstructGObject constructor props
+ src/Data/GI/Base/GType.hsc view
@@ -0,0 +1,142 @@+-- | Basic `GType`s.+module Data.GI.Base.GType+ ( GType(..)+ , CGType++ , gtypeName++ , gtypeString+ , gtypePointer+ , gtypeInt+ , gtypeUInt+ , gtypeLong+ , gtypeULong+ , gtypeInt64+ , gtypeUInt64+ , gtypeFloat+ , gtypeDouble+ , gtypeBoolean+ , gtypeGType+ , gtypeStrv+ , gtypeBoxed+ , gtypeObject+ , gtypeVariant+ , gtypeByteArray+ , gtypeInvalid+ ) where++import Data.Word (Word64)+import Foreign.C.String (CString, peekCString)++#include <glib-object.h>++-- | A type identifier in the GLib type system. This is the low-level+-- type associated with the representation in memory, when using this+-- on the Haskell side use `GType` below.+type CGType = #type GType++-- | A newtype for use on the haskell side.+newtype GType = GType {gtypeToCGType :: CGType}++foreign import ccall "g_type_name" g_type_name :: GType -> IO CString++-- | Get the name assigned to the given `GType`.+gtypeName :: GType -> IO String+gtypeName gtype = g_type_name gtype >>= peekCString++{-| [Note: compile-time vs run-time GTypes]++Notice that there are two types of GType's: the fundamental ones,+which are created with G_TYPE_MAKE_FUNDAMENTAL(n) and always have the+same runtime representation, and the ones that are registered in the+GObject type system at runtime, and whose `CGType` may change for each+program run (and generally does).++For the first type it is safe to use hsc to read the numerical values+of the CGType at compile type, but for the second type it is essential+to call the corresponding _get_type() function at runtime, and not use+the value of the corresponding "constant" at compile time via hsc.+-}++{- Fundamental types -}++-- | `GType` of strings.+gtypeString :: GType+gtypeString = GType #const G_TYPE_STRING++-- | `GType` of pointers.+gtypePointer :: GType+gtypePointer = GType #const G_TYPE_POINTER++-- | `GType` for signed integers (`gint` or `gint32`).+gtypeInt :: GType+gtypeInt = GType #const G_TYPE_INT++-- | `GType` for unsigned integers (`guint` or `guint32`).+gtypeUInt :: GType+gtypeUInt = GType #const G_TYPE_UINT++-- | `GType` for `glong`.+gtypeLong :: GType+gtypeLong = GType #const G_TYPE_LONG++-- | `GType` for `gulong`.+gtypeULong :: GType+gtypeULong = GType #const G_TYPE_ULONG++-- | `GType` for signed 64 bit integers.+gtypeInt64 :: GType+gtypeInt64 = GType #const G_TYPE_INT64++-- | `GType` for unsigned 64 bit integers.+gtypeUInt64 :: GType+gtypeUInt64 = GType #const G_TYPE_UINT64++-- | `GType` for floating point values.+gtypeFloat :: GType+gtypeFloat = GType #const G_TYPE_FLOAT++-- | `GType` for gdouble.+gtypeDouble :: GType+gtypeDouble = GType #const G_TYPE_DOUBLE++-- | `GType` corresponding to gboolean.+gtypeBoolean :: GType+gtypeBoolean = GType #const G_TYPE_BOOLEAN++-- | `GType` corresponding to a `BoxedObject`.+gtypeBoxed :: GType+gtypeBoxed = GType #const G_TYPE_BOXED++-- | `GType` corresponding to a `GObject`.+gtypeObject :: GType+gtypeObject = GType #const G_TYPE_OBJECT++-- | An invalid `GType` used as error return value in some functions+-- which return a `GType`.+gtypeInvalid :: GType+gtypeInvalid = GType #const G_TYPE_INVALID++-- | The `GType` corresponding to a `GVariant`.+gtypeVariant :: GType+gtypeVariant = GType #const G_TYPE_VARIANT++{- Run-time types -}++foreign import ccall "g_gtype_get_type" g_gtype_get_type :: CGType++-- | `GType` corresponding to a `GType` itself.+gtypeGType :: GType+gtypeGType = GType g_gtype_get_type++foreign import ccall "g_strv_get_type" g_strv_get_type :: CGType++-- | `GType` for a NULL terminated array of strings.+gtypeStrv :: GType+gtypeStrv = GType g_strv_get_type++foreign import ccall "g_byte_array_get_type" g_byte_array_get_type :: CGType++-- | `GType` for a boxed type holding a `GByteArray`.+gtypeByteArray :: GType+gtypeByteArray = GType g_byte_array_get_type
src/Data/GI/Base/GValue.hsc view
@@ -1,13 +1,14 @@ {-# LANGUAGE FlexibleInstances #-} module Data.GI.Base.GValue ( GValue(..)- , IsGValue(..) , newGValue -- Build a new, empty, GValue of the given type , buildGValue -- Build a new GValue and initialize to the given value , noGValue + , GValueConstruct(..)+ , set_string , get_string , set_pointer@@ -83,6 +84,11 @@ foreign import ccall "g_value_init" g_value_init :: Ptr GValue -> CGType -> IO (Ptr GValue)++-- | A type holding a `GValue` with an associated label. It is+-- parameterized by a phantom type encoding the target type for the+-- `GValue` (useful when constructing properties).+data GValueConstruct o = GValueConstruct String GValue newGValue :: GType -> IO GValue newGValue (GType gtype) = do
src/Data/GI/Base/Overloading.hs view
@@ -8,9 +8,13 @@ ( -- * Type level inheritance ParentTypes , IsDescendantOf+#if MIN_VERSION_base(4,9,0)+ , UnknownAncestorError+#endif -- * Looking up attributes in parent types , AttributeList+ , HasAttributeList , ResolveAttribute , HasAttribute , HasAttr@@ -27,12 +31,20 @@ -- * Overloaded labels , IsLabelProxy(..)++#if MIN_VERSION_base(4,9,0)+ , module GHC.OverloadedLabels -- Reexported for convenience+#endif ) where import GHC.Exts (Constraint) import GHC.TypeLits import Data.Proxy (Proxy) +#if MIN_VERSION_base(4,9,0)+import GHC.OverloadedLabels (IsLabel(..))+#endif+ -- | Support for overloaded labels in ghc < 8.0. This is like the -- `IsLabel` class introduced in ghc 8.0 (for use with the -- OverloadedLabels extension) with the difference that the `Proxy`@@ -72,6 +84,15 @@ | DoesNotHaveRequiredAncestor Symbol t Symbol a #endif +#if MIN_VERSION_base(4,9,0)+-- | Type error to be generated when an ancestor check fails.+type family UnknownAncestorError (a :: *) (t :: *) where+ UnknownAncestorError a t =+ TypeError ('Text "Required ancestor ‘" ':<>: 'ShowType a+ ':<>: 'Text "’ not found for type ‘"+ ':<>: 'ShowType t ':<>: 'Text "’.")+#endif+ -- | Check whether a type appears in a list. We specialize the -- names/types a bit so the error messages are more informative. type family CheckForAncestorType t (a :: *) (as :: [*]) :: AncestorCheck * * where@@ -79,9 +100,7 @@ #if !MIN_VERSION_base(4,9,0) 'DoesNotHaveRequiredAncestor "Error: Required ancestor" a "not found for type" t #else- TypeError ('Text "Required ancestor ‘" ':<>: 'ShowType a- ':<>: 'Text "’ not found for type ‘" ':<>: 'ShowType t- ':<>: 'Text "’.")+ UnknownAncestorError a t #endif CheckForAncestorType t a (a ': as) = 'HasAncestor a t CheckForAncestorType t a (b ': as) = CheckForAncestorType t a as@@ -103,6 +122,20 @@ -- of the attribute, and the second the type encoding the information -- of the attribute. This type will be an instance of `AttrInfo`. type family AttributeList a :: [(Symbol, *)]++-- | A constraint on a type, to be fulfilled whenever it has a type+-- instance for `AttributeList`. This is here for nicer error+-- reporting.+class HasAttributeList a++#if MIN_VERSION_base(4,9,0)+-- Default instance, which will give rise to an error for types+-- without an associated `AttributeList`.+instance {-# OVERLAPPABLE #-}+ TypeError ('Text "Type ‘" ':<>: 'ShowType a ':<>:+ 'Text "’ does not have any known attributes.")+ => HasAttributeList a+#endif #if !MIN_VERSION_base(4,9,0) -- | Datatype returned when the attribute is not found, hopefully making
src/Data/GI/Base/Properties.hsc view
@@ -122,10 +122,10 @@ getter gvalue constructObjectProperty :: String -> b -> (GValue -> b -> IO ()) ->- GType -> IO (String, GValue)+ GType -> IO (GValueConstruct o) constructObjectProperty propName propValue setter gtype = do gvalue <- buildGValue gtype setter propValue- return (propName, gvalue)+ return (GValueConstruct propName gvalue) setObjectPropertyString :: GObject a => a -> String -> Maybe Text -> IO ()@@ -133,7 +133,7 @@ setObjectProperty obj propName str set_string gtypeString constructObjectPropertyString :: String -> Maybe Text ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyString propName str = constructObjectProperty propName str set_string gtypeString @@ -148,7 +148,7 @@ setObjectProperty obj propName ptr set_pointer gtypePointer constructObjectPropertyPtr :: String -> Ptr b ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyPtr propName ptr = constructObjectProperty propName ptr set_pointer gtypePointer @@ -163,7 +163,7 @@ setObjectProperty obj propName int set_int gtypeInt constructObjectPropertyInt :: String -> CInt ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyInt propName int = constructObjectProperty propName int set_int gtypeInt @@ -177,7 +177,7 @@ setObjectProperty obj propName uint set_uint gtypeUInt constructObjectPropertyUInt :: String -> CUInt ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyUInt propName uint = constructObjectProperty propName uint set_uint gtypeUInt @@ -191,7 +191,7 @@ setObjectProperty obj propName int set_long gtypeLong constructObjectPropertyLong :: String -> CLong ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyLong propName int = constructObjectProperty propName int set_long gtypeLong @@ -205,7 +205,7 @@ setObjectProperty obj propName uint set_ulong gtypeULong constructObjectPropertyULong :: String -> CULong ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyULong propName uint = constructObjectProperty propName uint set_ulong gtypeULong @@ -219,7 +219,7 @@ setObjectProperty obj propName int32 set_int32 gtypeInt constructObjectPropertyInt32 :: String -> Int32 ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyInt32 propName int32 = constructObjectProperty propName int32 set_int32 gtypeInt @@ -233,7 +233,7 @@ setObjectProperty obj propName uint32 set_uint32 gtypeUInt constructObjectPropertyUInt32 :: String -> Word32 ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyUInt32 propName uint32 = constructObjectProperty propName uint32 set_uint32 gtypeUInt @@ -247,7 +247,7 @@ setObjectProperty obj propName int64 set_int64 gtypeInt64 constructObjectPropertyInt64 :: String -> Int64 ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyInt64 propName int64 = constructObjectProperty propName int64 set_int64 gtypeInt64 @@ -261,7 +261,7 @@ setObjectProperty obj propName uint64 set_uint64 gtypeUInt64 constructObjectPropertyUInt64 :: String -> Word64 ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyUInt64 propName uint64 = constructObjectProperty propName uint64 set_uint64 gtypeUInt64 @@ -275,7 +275,7 @@ setObjectProperty obj propName float set_float gtypeFloat constructObjectPropertyFloat :: String -> Float ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyFloat propName float = constructObjectProperty propName float set_float gtypeFloat @@ -290,7 +290,7 @@ setObjectProperty obj propName double set_double gtypeDouble constructObjectPropertyDouble :: String -> Double ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyDouble propName double = constructObjectProperty propName double set_double gtypeDouble @@ -304,7 +304,7 @@ setObjectPropertyBool obj propName bool = setObjectProperty obj propName bool set_boolean gtypeBoolean -constructObjectPropertyBool :: String -> Bool -> IO (String, GValue)+constructObjectPropertyBool :: String -> Bool -> IO (GValueConstruct o) constructObjectPropertyBool propName bool = constructObjectProperty propName bool set_boolean gtypeBoolean @@ -317,7 +317,7 @@ setObjectPropertyGType obj propName gtype = setObjectProperty obj propName gtype set_gtype gtypeGType -constructObjectPropertyGType :: String -> GType -> IO (String, GValue)+constructObjectPropertyGType :: String -> GType -> IO (GValueConstruct o) constructObjectPropertyGType propName bool = constructObjectProperty propName bool set_gtype gtypeGType @@ -332,8 +332,8 @@ maybeWithManagedPtr maybeObject $ \objectPtr -> setObjectProperty obj propName objectPtr set_object gtype -constructObjectPropertyObject :: forall a. GObject a =>- String -> Maybe a -> IO (String, GValue)+constructObjectPropertyObject :: forall a o. GObject a =>+ String -> Maybe a -> IO (GValueConstruct o) constructObjectPropertyObject propName maybeObject = do gtype <- gobjectType (undefined :: a) maybeWithManagedPtr maybeObject $ \objectPtr ->@@ -355,8 +355,8 @@ maybeWithManagedPtr maybeBoxed $ \boxedPtr -> setObjectProperty obj propName boxedPtr set_boxed gtype -constructObjectPropertyBoxed :: forall a. (BoxedObject a) =>- String -> Maybe a -> IO (String, GValue)+constructObjectPropertyBoxed :: forall a o. (BoxedObject a) =>+ String -> Maybe a -> IO (GValueConstruct o) constructObjectPropertyBoxed propName maybeBoxed = do gtype <- boxedType (undefined :: a) maybeWithManagedPtr maybeBoxed $ \boxedPtr ->@@ -381,7 +381,7 @@ freeMem cStrv constructObjectPropertyStringArray :: String -> Maybe [Text] ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyStringArray propName Nothing = constructObjectProperty propName nullPtr set_boxed gtypeStrv constructObjectPropertyStringArray propName (Just strv) = do@@ -406,7 +406,7 @@ setObjectProperty obj propName cEnum set_enum gtype constructObjectPropertyEnum :: (Enum a, BoxedEnum a) =>- String -> a -> IO (String, GValue)+ String -> a -> IO (GValueConstruct o) constructObjectPropertyEnum propName enum = do gtype <- boxedEnumType enum let cEnum = (fromIntegral . fromEnum) enum@@ -428,8 +428,8 @@ gtype <- boxedFlagsType (Proxy :: Proxy b) setObjectProperty obj propName cFlags set_flags gtype -constructObjectPropertyFlags :: forall a. (IsGFlag a, BoxedFlags a)- => String -> [a] -> IO (String, GValue)+constructObjectPropertyFlags :: forall a o. (IsGFlag a, BoxedFlags a)+ => String -> [a] -> IO (GValueConstruct o) constructObjectPropertyFlags propName flags = do let cFlags = gflagsToWord flags gtype <- boxedFlagsType (Proxy :: Proxy a)@@ -450,7 +450,7 @@ setObjectProperty obj propName variantPtr set_variant gtypeVariant constructObjectPropertyVariant :: String -> Maybe GVariant- -> IO (String, GValue)+ -> IO (GValueConstruct o) constructObjectPropertyVariant propName maybeVariant = maybeWithManagedPtr maybeVariant $ \objPtr -> constructObjectProperty propName objPtr set_variant gtypeVariant@@ -472,7 +472,7 @@ unrefGByteArray packed constructObjectPropertyByteArray :: String -> Maybe B.ByteString ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyByteArray propName Nothing = constructObjectProperty propName nullPtr set_boxed gtypeByteArray constructObjectPropertyByteArray propName (Just bytes) = do@@ -496,7 +496,7 @@ g_list_free packed constructObjectPropertyPtrGList :: String -> [Ptr a] ->- IO (String, GValue)+ IO (GValueConstruct o) constructObjectPropertyPtrGList propName ptrs = do packed <- packGList ptrs result <- constructObjectProperty propName packed set_boxed gtypePointer@@ -512,7 +512,7 @@ setObjectPropertyHash = error $ "Setting GHashTable properties not supported yet." -constructObjectPropertyHash :: String -> b -> IO (String, GValue)+constructObjectPropertyHash :: String -> b -> IO (GValueConstruct o) constructObjectPropertyHash = error $ "Constructing GHashTable properties not supported yet."
src/Data/GI/Base/ShortPrelude.hs view
@@ -29,17 +29,12 @@ , module Data.GI.Base.GVariant , module Data.GI.Base.GValue , module Data.GI.Base.ManagedPtr- , module Data.GI.Base.Overloading , module Data.GI.Base.Properties , module Data.GI.Base.Signals , module Data.GI.Base.Utils , module GHC.TypeLits -#if MIN_VERSION_base(4,9,0)- , module GHC.OverloadedLabels-#endif- , Enum(fromEnum, toEnum) , Show(..) , Eq(..)@@ -91,12 +86,8 @@ import Data.GI.Base.GVariant import Data.GI.Base.GValue import Data.GI.Base.ManagedPtr-import Data.GI.Base.Overloading import Data.GI.Base.Properties import Data.GI.Base.Signals (SignalConnectMode(..), connectSignalFunPtr, SignalHandlerId, SignalInfo(..), GObjectNotifySignalInfo) import Data.GI.Base.Utils import GHC.TypeLits (Symbol)-#if MIN_VERSION_base(4,9,0)-import GHC.OverloadedLabels (IsLabel(..))-#endif