haskell-gi-base-0.16: Foundation for libraries generated by haskell-gi

Safe HaskellNone
LanguageHaskell98

Data.GI.Base.BasicTypes

Contents

Description

Basic types used in the bindings.

Synopsis

GType related

newtype GType Source #

A newtype for use on the haskell side.

Constructors

GType 

type CGType = Word64 Source #

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.

gtypeName :: GType -> IO String Source #

Get the name assigned to the given GType.

gtypeString :: GType Source #

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.

GType of strings.

gtypeInt :: GType Source #

GType for signed integers (gint or gint32).

gtypeUInt :: GType Source #

GType for unsigned integers (guint or guint32).

gtypeULong :: GType Source #

GType for gulong.

gtypeInt64 :: GType Source #

GType for signed 64 bit integers.

gtypeUInt64 :: GType Source #

GType for unsigned 64 bit integers.

gtypeFloat :: GType Source #

GType for floating point values.

gtypeDouble :: GType Source #

GType for gdouble.

gtypeBoolean :: GType Source #

GType corresponding to gboolean.

gtypeGType :: GType Source #

GType corresponding to a GType itself.

gtypeStrv :: GType Source #

GType for a NULL terminated array of strings.

gtypeBoxed :: GType Source #

GType corresponding to a BoxedObject.

gtypeObject :: GType Source #

GType corresponding to a GObject.

gtypeVariant :: GType Source #

The GType corresponding to a GVariant.

gtypeByteArray :: GType Source #

GType for a boxed type holding a GByteArray.

gtypeInvalid :: GType Source #

An invalid GType used as error return value in some functions which return a GType.

Memory management

type ForeignPtrNewtype a = Coercible a (ForeignPtr ()) Source #

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 GObjects.

class ForeignPtrNewtype a => BoxedObject a where Source #

Wrapped boxed structures, identified by their GType.

Minimal complete definition

boxedType

Methods

boxedType :: a -> IO GType Source #

class BoxedEnum a where Source #

Enums with an associated GType.

Minimal complete definition

boxedEnumType

Methods

boxedEnumType :: a -> IO GType Source #

class BoxedFlags a where Source #

Flags with an associated GType.

Minimal complete definition

boxedFlagsType

class ForeignPtrNewtype a => GObject a where Source #

A wrapped GObject.

Minimal complete definition

gobjectIsInitiallyUnowned, gobjectType

Methods

gobjectIsInitiallyUnowned :: a -> Bool Source #

Whether the GObject is a descendent of GInitiallyUnowned.

gobjectType :: a -> IO GType Source #

The GType for this object.

class ForeignPtrNewtype a => WrappedPtr a where Source #

Pointers to structs/unions without an associated GType.

Minimal complete definition

wrappedPtrCalloc, wrappedPtrCopy, wrappedPtrFree

Methods

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 #

Minimal complete definition

nullToNothing

Methods

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.

Instances

(~) * a (UnMaybe a) => NullToNothing a Source # 

Methods

nullToNothing :: MonadIO m => IO a -> m (Maybe (UnMaybe a)) Source #

NullToNothing (Maybe a) Source # 

Methods

nullToNothing :: MonadIO m => IO (Maybe a) -> m (Maybe (UnMaybe (Maybe a))) Source #

Basic GLib / GObject types

newtype GParamSpec Source #

A GParamSpec. See Data.GI.Base.GParamSpec for further methods.

data GArray a Source #

A GArray. Marshalling for this type is done in Data.GI.Base.BasicConversions, it is mapped to a list on the Haskell side.

Constructors

GArray (Ptr (GArray a)) 

data GPtrArray a Source #

A GPtrArray. Marshalling for this type is done in Data.GI.Base.BasicConversions, it is mapped to a list on the Haskell side.

Constructors

GPtrArray (Ptr (GPtrArray a)) 

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.

Constructors

GByteArray (Ptr GByteArray) 

data GHashTable a b Source #

A GHashTable. It is mapped to a Map on the Haskell side.

Constructors

GHashTable (Ptr (GHashTable a b)) 

data GList a Source #

A GList, mapped to a list on the Haskell side. Marshalling is done in Data.GI.Base.BasicConversions.

Constructors

GList (Ptr (GList a)) 

g_list_free :: Ptr (GList a) -> IO () Source #

Free the given GList.

data GSList a Source #

A GSList, mapped to a list on the Haskell side. Marshalling is done in Data.GI.Base.BasicConversions.

Constructors

GSList (Ptr (GSList a)) 

g_slist_free :: Ptr (GSList a) -> IO () Source #

Free the given GSList.

class Enum a => IsGFlag a Source #

An enum usable as a flag for a function.

newtype PtrWrapped a Source #

Some APIs, such as GHashTable, pass around scalar types wrapped into a pointer. We encode such a type as follows.

Constructors

PtrWrapped 

Fields

type GDestroyNotify a = FunPtr (Ptr a -> IO ()) Source #

Destroy the memory associated with a given pointer.