Safe Haskell | None |
---|---|
Language | Haskell98 |
Basic types used in the bindings.
- module Data.GI.Base.GType
- data ManagedPtr a = ManagedPtr {}
- type ManagedPtrNewtype a = Coercible a (ManagedPtr ())
- class ManagedPtrNewtype a => BoxedObject a where
- class BoxedEnum a where
- class BoxedFlags a where
- class ManagedPtrNewtype a => GObject a where
- class ManagedPtrNewtype a => WrappedPtr a where
- data UnexpectedNullPointerReturn = UnexpectedNullPointerReturn {
- nullPtrErrorMsg :: Text
- class NullToNothing a where
- newtype GVariant = GVariant (ManagedPtr GVariant)
- newtype GParamSpec = GParamSpec (ManagedPtr GParamSpec)
- data GArray a = GArray (Ptr (GArray a))
- data GPtrArray a = GPtrArray (Ptr (GPtrArray a))
- data GByteArray = GByteArray (Ptr GByteArray)
- data GHashTable a b = GHashTable (Ptr (GHashTable a b))
- data GList a = GList (Ptr (GList a))
- g_list_free :: Ptr (GList a) -> IO ()
- data GSList a = GSList (Ptr (GSList a))
- g_slist_free :: Ptr (GSList a) -> IO ()
- class Enum a => IsGFlag a
- newtype PtrWrapped a = PtrWrapped {}
- type GDestroyNotify a = FunPtr (Ptr a -> IO ())
GType related
module Data.GI.Base.GType
Memory management
data ManagedPtr a Source #
Thin wrapper over ForeignPtr
, supporting the extra notion of
disowning
, that is, not running the finalizers associated with
the foreign ptr.
type ManagedPtrNewtype a = Coercible a (ManagedPtr ()) Source #
A constraint ensuring that the given type is coercible to a ManagedPtr. It will hold for newtypes of the form
newtype Foo = Foo (ManagedPtr Foo)
which is the typical shape of wrapped GObject
s.
class ManagedPtrNewtype a => BoxedObject a where Source #
Wrapped boxed structures, identified by their GType
.
class BoxedEnum a where Source #
Enums with an associated GType
.
boxedEnumType :: a -> IO GType Source #
class BoxedFlags a where Source #
Flags with an associated GType
.
class ManagedPtrNewtype a => GObject a where Source #
A wrapped GObject
.
gobjectIsInitiallyUnowned :: a -> Bool Source #
Whether the GObject
is a descendent of GInitiallyUnowned.
gobjectType :: a -> IO GType Source #
The GType
for this object.
class ManagedPtrNewtype a => WrappedPtr a where Source #
Pointers to structs/unions without an associated GType
.
wrappedPtrCalloc :: IO (Ptr a) Source #
Allocate a zero-initialized block of memory for the given type.
wrappedPtrCopy :: Ptr a -> IO (Ptr a) Source #
Make a copy of the given pointer.
wrappedPtrFree :: Maybe (FunPtr (Ptr a -> IO ())) Source #
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.
data UnexpectedNullPointerReturn Source #
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 nullPtr
.
class NullToNothing a where Source #
nullToNothing :: MonadIO m => IO a -> m (Maybe (UnMaybe a)) Source #
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.
(~) * a (UnMaybe a) => NullToNothing a Source # | |
NullToNothing (Maybe a) Source # | |
Basic GLib / GObject types
A GVariant. See Data.GI.Base.GVariant for further methods.
newtype GParamSpec Source #
A GParamSpec. See Data.GI.Base.GParamSpec for further methods.
A GArray. Marshalling for this type is done in Data.GI.Base.BasicConversions, it is mapped to a list on the Haskell side.
A GPtrArray. Marshalling for this type is done in Data.GI.Base.BasicConversions, it is mapped to a list on the Haskell side.
data GByteArray Source #
A GByteArray. Marshalling for this type is done in Data.GI.Base.BasicConversions, it is packed to a ByteString
on the Haskell side.
data GHashTable a b Source #
A GHashTable. It is mapped to a Map
on the Haskell side.
GHashTable (Ptr (GHashTable a b)) |
A GList, mapped to a list on the Haskell side. Marshalling is done in Data.GI.Base.BasicConversions.
A GSList, mapped to a list on the Haskell side. Marshalling is done in Data.GI.Base.BasicConversions.
newtype PtrWrapped a Source #
Some APIs, such as GHashTable
, pass around scalar types
wrapped into a pointer. We encode such a type as follows.