packages feed

haskell-gi-base 0.9 → 0.10

raw patch · 7 files changed

+73/−66 lines, 7 filesdep +transformersdep ~basePVP ok

version bump matches the API change (PVP)

Dependencies added: transformers

Dependency ranges changed: base

API changes (from Hackage documentation)

- Data.GI.Base.BasicTypes: [gtypeToCGType] :: GType -> CGType
- Data.GI.Base.BasicTypes: [unwrapPtr] :: PtrWrapped a -> Ptr a
- Data.GI.Base.Closure: instance Data.GI.Base.BasicTypes.BoxedObject Data.GI.Base.Closure.Closure
- 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.GValue: instance Data.GI.Base.BasicTypes.BoxedObject Data.GI.Base.GValue.GValue
- 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.BasicTypes.GType
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue Data.Text.Internal.Text
- Data.GI.Base.GValue: instance Data.GI.Base.GValue.IsGValue GHC.Base.String
- 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 key, GHC.Classes.Eq value) => GHC.Classes.Eq (Data.GI.Base.GVariant.GVariantDictEntry key value)
- Data.GI.Base.GVariant: instance (GHC.Show.Show key, GHC.Show.Show value) => 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: instance Data.GI.Base.Overloading.HasAttribute attr o => Data.GI.Base.Overloading.HasAttr attr o
- Data.GI.Base.Properties: instance Data.GI.Base.Signals.SignalInfo Data.GI.Base.Properties.GObjectNotifySignalInfo
+ Data.GI.Base.BasicTypes: UnexpectedNullPointerReturn :: Text -> UnexpectedNullPointerReturn
+ Data.GI.Base.BasicTypes: data UnexpectedNullPointerReturn
+ Data.GI.Base.BasicTypes: gtypeToCGType :: GType -> CGType
+ Data.GI.Base.BasicTypes: instance Exception UnexpectedNullPointerReturn
+ Data.GI.Base.BasicTypes: instance Show UnexpectedNullPointerReturn
+ Data.GI.Base.BasicTypes: instance Typeable UnexpectedNullPointerReturn
+ Data.GI.Base.BasicTypes: nullPtrErrorMsg :: UnexpectedNullPointerReturn -> Text
+ Data.GI.Base.BasicTypes: unwrapPtr :: PtrWrapped a -> Ptr a
+ Data.GI.Base.Closure: instance BoxedObject Closure
+ 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 (Ptr a)
+ Data.GI.Base.GValue: instance IsGValue Bool
+ 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 String
+ Data.GI.Base.GValue: instance IsGValue Text
+ 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: instance (HasAttribute attr o) => HasAttr attr o
+ Data.GI.Base.Properties: instance SignalInfo GObjectNotifySignalInfo
+ Data.GI.Base.Utils: callocMem :: Storable a => IO (Ptr a)
+ Data.GI.Base.Utils: checkUnexpectedReturnNULL :: Text -> Ptr a -> IO ()
- Data.GI.Base.Attributes: get :: (info ~ ResolveAttribute attr obj, AttrInfo info, (AttrBaseTypeConstraint info) obj, AttrOpAllowed AttrGet info) => obj -> proxy (attr :: Symbol) -> IO (AttrGetType info)
+ Data.GI.Base.Attributes: get :: (info ~ ResolveAttribute attr obj, AttrInfo info, (AttrBaseTypeConstraint info) obj, AttrOpAllowed AttrGet info, MonadIO m) => obj -> proxy (attr :: Symbol) -> m (AttrGetType info)
- Data.GI.Base.Attributes: set :: o -> [AttrOp o AttrSet] -> IO ()
+ Data.GI.Base.Attributes: set :: MonadIO m => o -> [AttrOp o AttrSet] -> m ()
- Data.GI.Base.Properties: constructObjectPropertyBoxed :: (BoxedObject a) => String -> a -> IO (String, GValue)
+ Data.GI.Base.Properties: constructObjectPropertyBoxed :: BoxedObject a => String -> a -> IO (String, GValue)
- Data.GI.Base.Properties: new :: GObject o => (ForeignPtr o -> o) -> [AttrOp o AttrConstruct] -> IO o
+ Data.GI.Base.Properties: new :: (GObject o, MonadIO m) => (ForeignPtr o -> o) -> [AttrOp o AttrConstruct] -> m o
- Data.GI.Base.ShortPrelude: class Applicative m => Monad (m :: * -> *)
+ Data.GI.Base.ShortPrelude: class Monad (m :: * -> *)
- Data.GI.Base.ShortPrelude: length :: Foldable t => forall a. t a -> Int
+ Data.GI.Base.ShortPrelude: length :: [a] -> Int
- Data.GI.Base.ShortPrelude: mapM :: Traversable t => forall a (m :: * -> *) b. Monad m => (a -> m b) -> t a -> m (t b)
+ Data.GI.Base.ShortPrelude: mapM :: Monad m => (a -> m b) -> [a] -> m [b]
- Data.GI.Base.ShortPrelude: mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
+ Data.GI.Base.ShortPrelude: mapM_ :: Monad m => (a -> m b) -> [a] -> m ()
- Data.GI.Base.ShortPrelude: when :: Applicative f => Bool -> f () -> f ()
+ Data.GI.Base.ShortPrelude: when :: Monad m => Bool -> m () -> m ()
- Data.GI.Base.Signals: after :: (GObject o, HasSignal signal o, info ~ ResolveSignal signal o, SignalInfo info, KnownSymbol extra, constraint o) => o -> proxy (signal :: Symbol) (extra :: Symbol) (constraint :: * -> Constraint) -> HaskellCallbackType info -> IO SignalHandlerId
+ Data.GI.Base.Signals: after :: (GObject o, HasSignal signal o, info ~ ResolveSignal signal o, SignalInfo info, KnownSymbol extra, constraint o, MonadIO m) => o -> proxy (signal :: Symbol) (extra :: Symbol) (constraint :: * -> Constraint) -> HaskellCallbackType info -> m SignalHandlerId
- Data.GI.Base.Signals: on :: (GObject o, HasSignal signal o, info ~ ResolveSignal signal o, SignalInfo info, KnownSymbol extra, constraint o) => o -> proxy (signal :: Symbol) (extra :: Symbol) (constraint :: * -> Constraint) -> HaskellCallbackType info -> IO SignalHandlerId
+ Data.GI.Base.Signals: on :: (GObject o, HasSignal signal o, info ~ ResolveSignal signal o, SignalInfo info, KnownSymbol extra, constraint o, MonadIO m) => o -> proxy (signal :: Symbol) (extra :: Symbol) (constraint :: * -> Constraint) -> HaskellCallbackType info -> m SignalHandlerId

Files

LICENSE view
@@ -456,47 +456,3 @@ DAMAGES.                       END OF TERMS AND CONDITIONS--           How to Apply These Terms to Your New Libraries--  If you develop a new library, and you want it to be of the greatest-possible use to the public, we recommend making it free software that-everyone can redistribute and change.  You can do so by permitting-redistribution under these terms (or, alternatively, under the terms of the-ordinary General Public License).--  To apply these terms, attach the following notices to the library.  It is-safest to attach them to the start of each source file to most effectively-convey the exclusion of warranty; and each file should have at least the-"copyright" line and a pointer to where the full notice is found.--    <one line to give the library's name and a brief idea of what it does.>-    Copyright (C) <year>  <name of author>--    This library is free software; you can redistribute it and/or-    modify it under the terms of the GNU Lesser General Public-    License as published by the Free Software Foundation; either-    version 2.1 of the License, or (at your option) any later version.--    This library is distributed in the hope that it will be useful,-    but WITHOUT ANY WARRANTY; without even the implied warranty of-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU-    Lesser General Public License for more details.--    You should have received a copy of the GNU Lesser General Public-    License along with this library; if not, write to the Free Software-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA--Also add information on how to contact you by electronic and paper mail.--You should also get your employer (if you work as a programmer) or your-school, if any, to sign a "copyright disclaimer" for the library, if-necessary.  Here is a sample; alter the names:--  Yoyodyne, Inc., hereby disclaims all copyright interest in the-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.--  <signature of Ty Coon>, 1 April 1990-  Ty Coon, President of Vice--That's all there is to it!
haskell-gi-base.cabal view
@@ -1,5 +1,5 @@ name:                haskell-gi-base-version:             0.9+version:             0.10 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@@ -39,10 +39,13 @@                        Data.GI.Base.Utils    pkgconfig-depends:   gobject-2.0 >= 2.36-  build-depends:       base >= 4 && < 5,+  build-depends:       base >= 4.7 && < 5,                        bytestring,                        containers,                        text >= 1.0++  if !impl(ghc >= 8.0)+    build-depends:     transformers    build-tools:         hsc2hs   extensions:          CPP, ForeignFunctionInterface, DoAndIfThenElse
src/Data/GI/Base/Attributes.hs view
@@ -102,6 +102,8 @@   set   ) where +import Control.Monad.IO.Class (MonadIO, liftIO)+ import Data.Proxy (Proxy(..))  import Data.GI.Base.GValue (GValue(..))@@ -215,8 +217,8 @@              proxy (attr :: Symbol) -> (obj -> a -> b) -> AttrOp obj tag  -- | Set a number of properties for some object.-set :: forall o. o -> [AttrOp o 'AttrSet] -> IO ()-set obj = mapM_ app+set :: forall o m. MonadIO m => o -> [AttrOp o 'AttrSet] -> m ()+set obj = liftIO . mapM_ app  where    resolve :: proxy attr -> Proxy (ResolveAttribute attr o)    resolve _ = Proxy@@ -233,9 +235,9 @@                       \v -> attrSet (resolve attr) obj (f obj v)  -- | Get the value of an attribute for an object.-get :: forall info attr obj proxy.+get :: forall info attr obj proxy m.        (info ~ ResolveAttribute attr obj, AttrInfo info,         (AttrBaseTypeConstraint info) obj,-        AttrOpAllowed 'AttrGet info) =>-        obj -> proxy (attr :: Symbol) -> IO (AttrGetType info)-get o _ = attrGet (Proxy :: Proxy info) o+        AttrOpAllowed 'AttrGet info, MonadIO m) =>+        obj -> proxy (attr :: Symbol) -> m (AttrGetType info)+get o _ = liftIO $ attrGet (Proxy :: Proxy info) o
src/Data/GI/Base/BasicTypes.hsc view
@@ -1,4 +1,5 @@-{-# LANGUAGE ConstraintKinds, FlexibleContexts, FlexibleInstances #-}+{-# LANGUAGE ConstraintKinds, FlexibleContexts, FlexibleInstances,+  DeriveDataTypeable #-} -- | Basic types used in the bindings. module Data.GI.Base.BasicTypes     (@@ -28,6 +29,7 @@     , BoxedObject(..)     , BoxedEnum(..)     , GObject(..)+    , UnexpectedNullPointerReturn(..)      -- * Basic GLib \/ GObject types     , GVariant(..)@@ -48,7 +50,10 @@     , GDestroyNotify     ) where +import Control.Exception (Exception) import Data.Coerce (Coercible)+import qualified Data.Text as T+import Data.Typeable (Typeable) import Data.Word import Foreign.Ptr (Ptr, FunPtr) import Foreign.ForeignPtr (ForeignPtr)@@ -150,6 +155,19 @@     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  -- | A <https://developer.gnome.org/glib/stable/glib-GVariant.html GVariant>. See "Data.GI.Base.GVariant" for further methods. newtype GVariant = GVariant (ForeignPtr GVariant)
src/Data/GI/Base/Properties.hsc view
@@ -74,6 +74,7 @@ import Control.Applicative ((<$>)) #endif import Control.Monad ((>=>))+import Control.Monad.IO.Class (MonadIO, liftIO)  import qualified Data.ByteString.Char8 as B import Data.Text (Text)@@ -105,9 +106,11 @@ -- | Construct a GObject given the constructor and a list of settable -- attributes. AttrOps are always constructible, so we don't need to -- enforce constraints here.-new :: forall o. GObject o => (ForeignPtr o -> o) ->-       [AttrOp o 'AttrConstruct] -> IO o-new constructor attrs = do+new :: forall o m. (GObject o, MonadIO m)+    => (ForeignPtr o -> o)+    -> [AttrOp o 'AttrConstruct]+    -> m o+new constructor attrs = liftIO $ do   props <- mapM construct attrs   let nprops = length props   params <- mallocBytes (nprops*gparameterSize)
src/Data/GI/Base/Signals.hsc view
@@ -17,6 +17,8 @@       SignalInfo(..)     ) where +import Control.Monad.IO.Class (MonadIO, liftIO)+ import Foreign import Foreign.C @@ -58,13 +60,13 @@ -- handler is to be run before the default handler. -- -- > on = connectSignal SignalConnectBefore-on :: forall signal extra o info constraint proxy.+on :: forall signal extra o info constraint proxy m.       (GObject o,        HasSignal signal o, info ~ ResolveSignal signal o, SignalInfo info,-       KnownSymbol extra, constraint o) =>+       KnownSymbol extra, constraint o, MonadIO m) =>       o -> proxy (signal :: Symbol) (extra :: Symbol) (constraint :: * -> Constraint)-        -> HaskellCallbackType info -> IO SignalHandlerId-on o p c = connectSignal (resolve p) o c SignalConnectBefore+        -> HaskellCallbackType info -> m SignalHandlerId+on o p c = liftIO $ connectSignal (resolve p) o c SignalConnectBefore     where resolve :: proxy signal extra constraint ->                      SignalProxy (ResolveSignal signal o) extra constraint           resolve _ = SignalProxy@@ -72,13 +74,13 @@ -- | Connect a signal to a handler, running the handler after the default one. -- -- > after = connectSignal SignalConnectAfter-after :: forall signal extra o info constraint proxy.+after :: forall signal extra o info constraint proxy m.          (GObject o,           HasSignal signal o, info ~ ResolveSignal signal o, SignalInfo info,-          KnownSymbol extra, constraint o) =>+          KnownSymbol extra, constraint o, MonadIO m) =>          o -> proxy (signal :: Symbol) (extra :: Symbol) (constraint :: * -> Constraint)-           -> HaskellCallbackType info -> IO SignalHandlerId-after o p c = connectSignal (resolve p) o c SignalConnectAfter+           -> HaskellCallbackType info -> m SignalHandlerId+after o p c = liftIO $ connectSignal (resolve p) o c SignalConnectAfter     where resolve :: proxy signal extra constraint ->                      SignalProxy (ResolveSignal signal o) extra constraint           resolve _ = SignalProxy
src/Data/GI/Base/Utils.hsc view
@@ -1,4 +1,4 @@-{-# LANGUAGE ScopedTypeVariables, TupleSections #-}+{-# LANGUAGE ScopedTypeVariables, TupleSections, OverloadedStrings #-} {- | Assorted utility functions for bindings. -} module Data.GI.Base.Utils     ( whenJust@@ -11,6 +11,7 @@     , convertIfNonNull     , callocBytes     , callocBoxedBytes+    , callocMem     , allocBytes     , allocMem     , freeMem@@ -19,6 +20,7 @@     , safeFreeFunPtr     , safeFreeFunPtrPtr     , maybeReleaseFunPtr+    , checkUnexpectedReturnNULL     ) where  #include <glib-object.h>@@ -26,8 +28,11 @@ #if !MIN_VERSION_base(4,8,0) import Control.Applicative (Applicative, pure, (<$>), (<*>)) #endif+import Control.Exception (throwIO) import Control.Monad (void) +import qualified Data.Text as T+import Data.Monoid ((<>)) import Data.Word  import Foreign (peek)@@ -35,7 +40,8 @@ import Foreign.Ptr (Ptr, nullPtr, FunPtr, freeHaskellFunPtr) import Foreign.Storable (Storable(..)) -import Data.GI.Base.BasicTypes (GType(..), CGType, BoxedObject(..))+import Data.GI.Base.BasicTypes (GType(..), CGType, BoxedObject(..),+                                UnexpectedNullPointerReturn(..))  -- | When the given value is of "Just a" form, execute the given action, -- otherwise do nothing.@@ -92,6 +98,12 @@ callocBytes :: Int -> IO (Ptr a) callocBytes n =  g_malloc0 (fromIntegral n) +-- | Make a zero-filled allocation of enough size to hold the given+-- `Storable` type, using the GLib allocator.+{-# INLINE callocMem #-}+callocMem :: forall a. Storable a => IO (Ptr a)+callocMem = g_malloc0 $ (fromIntegral . sizeOf) (undefined :: a)+ foreign import ccall "g_boxed_copy" g_boxed_copy ::     CGType -> Ptr a -> IO (Ptr a) @@ -154,3 +166,14 @@ maybeReleaseFunPtr (Just f) = do   peek f >>= freeHaskellFunPtr   freeMem f++-- | Check that the given pointer is not NULL. If it is, raise a+-- `UnexpectedNullPointerReturn` exception.+checkUnexpectedReturnNULL :: T.Text -> Ptr a -> IO ()+checkUnexpectedReturnNULL fnName ptr+    | ptr == nullPtr =+        throwIO (UnexpectedNullPointerReturn {+                   nullPtrErrorMsg = "Received unexpected nullPtr in \""+                                     <> fnName <> "\"."+                 })+    | otherwise = return ()