-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | GObject bindings
--   
--   Bindings for GObject, autogenerated by haskell-gi.
@package gi-gobject
@version 2.0.16


module GI.GObject.Constants

-- | If passed to <tt><i>G_VALUE_COLLECT()</i></tt>, allocated data won't
--   be copied but used verbatim. This does not affect ref-counted types
--   like objects.

-- | The maximal number of <tt><i>GTypeCValues</i></tt> which can be
--   collected for a single <a>Value</a>.

-- | First available fundamental type number to create new fundamental type
--   id with <tt><i>G_TYPE_MAKE_FUNDAMENTAL()</i></tt>.

-- | Last fundamental type number reserved for GLib.

-- | First fundamental type number to create a new fundamental type id with
--   <tt><i>G_TYPE_MAKE_FUNDAMENTAL()</i></tt> reserved for GLib.

-- | Last fundamental type number reserved for BSE.

-- | First fundamental type number to create a new fundamental type id with
--   <tt><i>G_TYPE_MAKE_FUNDAMENTAL()</i></tt> reserved for BSE.

-- | Shift value used in converting numbers to type IDs.

-- | An integer constant that represents the number of identifiers reserved
--   for types that are assigned at compile-time.

-- | A bit in the type number that's supposed to be left untouched.

-- | A mask for all <a>SignalMatchType</a> bits.

-- | A mask for all <a>SignalFlags</a> bits.

-- | Minimum shift count to be used for user defined flags, to be stored in
--   <a>ParamSpec</a>.<tt><i>flags</i></tt>. The maximum allowed is 10.

-- | <a>ParamFlags</a> value alias for <a>ParamFlagsStaticName</a> |
--   <a>ParamFlagsStaticNick</a> | <a>ParamFlagsStaticBlurb</a>.
--   
--   Since 2.13.0

-- | Mask containing the bits of <a>ParamSpec</a>.<tt><i>flags</i></tt>
--   which are reserved for GLib.


module GI.GObject.Flags

-- | Flags to be passed to <a>objectBindProperty</a> or
--   <tt><i>g_object_bind_property_full()</i></tt>.
--   
--   This enumeration can be extended at later date.
--   
--   <i>Since: 2.26</i>
data BindingFlags

-- | The default binding; if the source property changes, the target
--   property is updated with its value.
BindingFlagsDefault :: BindingFlags

-- | Bidirectional binding; if either the property of the source or the
--   property of the target changes, the other is updated.
BindingFlagsBidirectional :: BindingFlags

-- | Synchronize the values of the source and target properties when
--   creating the binding; the direction of the synchronization is always
--   from the source to the target.
BindingFlagsSyncCreate :: BindingFlags

-- | If the two properties being bound are booleans, setting one to
--   <a>True</a> will result in the other being set to <a>False</a> and
--   vice versa. This flag will only work for boolean properties, and
--   cannot be used when passing custom transformation functions to
--   <tt><i>g_object_bind_property_full()</i></tt>.
BindingFlagsInvertBoolean :: BindingFlags

-- | Catch-all for unknown values
AnotherBindingFlags :: Int -> BindingFlags

-- | The connection flags are used to specify the behaviour of a signal's
--   connection.
data ConnectFlags

-- | whether the handler should be called before or after the default
--   handler of the signal.
ConnectFlagsAfter :: ConnectFlags

-- | whether the instance and data should be swapped when calling the
--   handler; see <tt><i>g_signal_connect_swapped()</i></tt> for an
--   example.
ConnectFlagsSwapped :: ConnectFlags

-- | Catch-all for unknown values
AnotherConnectFlags :: Int -> ConnectFlags

-- | Through the <a>ParamFlags</a> flag values, certain aspects of
--   parameters can be configured. See also <a>PARAM_STATIC_STRINGS</a>.
data ParamFlags

-- | the parameter is readable
ParamFlagsReadable :: ParamFlags

-- | the parameter is writable
ParamFlagsWritable :: ParamFlags

-- | alias for <a>ParamFlagsReadable</a> | <a>ParamFlagsWritable</a>
ParamFlagsReadwrite :: ParamFlags

-- | the parameter will be set upon object construction
ParamFlagsConstruct :: ParamFlags

-- | the parameter can only be set upon object construction
ParamFlagsConstructOnly :: ParamFlags

-- | upon parameter conversion (see <a>paramValueConvert</a>) strict
--   validation is not required
ParamFlagsLaxValidation :: ParamFlags

-- | the string used as name when constructing the parameter is guaranteed
--   to remain valid and unmodified for the lifetime of the parameter.
--   Since 2.8
ParamFlagsStaticName :: ParamFlags

-- | internal
ParamFlagsPrivate :: ParamFlags

-- | the string used as nick when constructing the parameter is guaranteed
--   to remain valid and unmmodified for the lifetime of the parameter.
--   Since 2.8
ParamFlagsStaticNick :: ParamFlags

-- | the string used as blurb when constructing the parameter is guaranteed
--   to remain valid and unmodified for the lifetime of the parameter.
--   Since 2.8
ParamFlagsStaticBlurb :: ParamFlags

-- | calls to <a>objectSetProperty</a> for this property will not
--   automatically result in a "notify" signal being emitted: the
--   implementation must call <a>objectNotify</a> themselves in case the
--   property actually changes. Since: 2.42.
ParamFlagsExplicitNotify :: ParamFlags

-- | the parameter is deprecated and will be removed in a future version. A
--   warning will be generated if it is used while running with
--   G_ENABLE_DIAGNOSTIC=1. Since 2.26
ParamFlagsDeprecated :: ParamFlags

-- | Catch-all for unknown values
AnotherParamFlags :: Int -> ParamFlags

-- | The signal flags are used to specify a signal's behaviour, the overall
--   signal description outlines how especially the RUN flags control the
--   stages of a signal emission.
data SignalFlags

-- | Invoke the object method handler in the first emission stage.
SignalFlagsRunFirst :: SignalFlags

-- | Invoke the object method handler in the third emission stage.
SignalFlagsRunLast :: SignalFlags

-- | Invoke the object method handler in the last emission stage.
SignalFlagsRunCleanup :: SignalFlags

-- | Signals being emitted for an object while currently being in emission
--   for this very object will not be emitted recursively, but instead
--   cause the first emission to be restarted.
SignalFlagsNoRecurse :: SignalFlags

-- | This signal supports "::detail" appendices to the signal name upon
--   handler connections and emissions.
SignalFlagsDetailed :: SignalFlags

-- | Action signals are signals that may freely be emitted on alive objects
--   from user code via <tt><i>g_signal_emit()</i></tt> and friends,
--   without the need of being embedded into extra code that performs pre
--   or post emission adjustments on the object. They can also be thought
--   of as object methods which can be called generically by third-party
--   code.
SignalFlagsAction :: SignalFlags

-- | No emissions hooks are supported for this signal.
SignalFlagsNoHooks :: SignalFlags

-- | Varargs signal emission will always collect the arguments, even if
--   there are no signal handlers connected. Since 2.30.
SignalFlagsMustCollect :: SignalFlags

-- | The signal is deprecated and will be removed in a future version. A
--   warning will be generated if it is connected while running with
--   G_ENABLE_DIAGNOSTIC=1. Since 2.32.
SignalFlagsDeprecated :: SignalFlags

-- | Catch-all for unknown values
AnotherSignalFlags :: Int -> SignalFlags

-- | The match types specify what <a>signalHandlersBlockMatched</a>,
--   <a>signalHandlersUnblockMatched</a> and
--   <a>signalHandlersDisconnectMatched</a> match signals by.
data SignalMatchType

-- | The signal id must be equal.
SignalMatchTypeId :: SignalMatchType

-- | The signal detail be equal.
SignalMatchTypeDetail :: SignalMatchType

-- | The closure must be the same.
SignalMatchTypeClosure :: SignalMatchType

-- | The C closure callback must be the same.
SignalMatchTypeFunc :: SignalMatchType

-- | The closure data must be the same.
SignalMatchTypeData :: SignalMatchType

-- | Only unblocked signals may matched.
SignalMatchTypeUnblocked :: SignalMatchType

-- | Catch-all for unknown values
AnotherSignalMatchType :: Int -> SignalMatchType

-- | These flags used to be passed to <a>typeInitWithDebugFlags</a> which
--   is now deprecated.
--   
--   If you need to enable debugging features, use the GOBJECT_DEBUG
--   environment variable.

-- | <i>Deprecated: (Since version 2.36)<a>typeInit</a> is now done
--   automatically</i>
data TypeDebugFlags

-- | Print no messages
TypeDebugFlagsNone :: TypeDebugFlags

-- | Print messages about object bookkeeping
TypeDebugFlagsObjects :: TypeDebugFlags

-- | Print messages about signal emissions
TypeDebugFlagsSignals :: TypeDebugFlags

-- | Keep a count of instances of each type
TypeDebugFlagsInstanceCount :: TypeDebugFlags

-- | Mask covering all debug flags
TypeDebugFlagsMask :: TypeDebugFlags

-- | Catch-all for unknown values
AnotherTypeDebugFlags :: Int -> TypeDebugFlags

-- | Bit masks used to check or determine characteristics of a type.
data TypeFlags

-- | Indicates an abstract type. No instances can be created for an
--   abstract type
TypeFlagsAbstract :: TypeFlags

-- | Indicates an abstract value type, i.e. a type that introduces a value
--   table, but can't be used for <a>valueInit</a>
TypeFlagsValueAbstract :: TypeFlags

-- | Catch-all for unknown values
AnotherTypeFlags :: Int -> TypeFlags

-- | Bit masks used to check or determine specific characteristics of a
--   fundamental type.
data TypeFundamentalFlags

-- | Indicates a classed type
TypeFundamentalFlagsClassed :: TypeFundamentalFlags

-- | Indicates an instantiable type (implies classed)
TypeFundamentalFlagsInstantiatable :: TypeFundamentalFlags

-- | Indicates a flat derivable type
TypeFundamentalFlagsDerivable :: TypeFundamentalFlags

-- | Indicates a deep derivable type (implies derivable)
TypeFundamentalFlagsDeepDerivable :: TypeFundamentalFlags

-- | Catch-all for unknown values
AnotherTypeFundamentalFlags :: Int -> TypeFundamentalFlags
instance GHC.Classes.Eq GI.GObject.Flags.BindingFlags
instance GHC.Show.Show GI.GObject.Flags.BindingFlags
instance GHC.Classes.Eq GI.GObject.Flags.ConnectFlags
instance GHC.Show.Show GI.GObject.Flags.ConnectFlags
instance GHC.Classes.Eq GI.GObject.Flags.ParamFlags
instance GHC.Show.Show GI.GObject.Flags.ParamFlags
instance GHC.Classes.Eq GI.GObject.Flags.SignalFlags
instance GHC.Show.Show GI.GObject.Flags.SignalFlags
instance GHC.Classes.Eq GI.GObject.Flags.SignalMatchType
instance GHC.Show.Show GI.GObject.Flags.SignalMatchType
instance GHC.Classes.Eq GI.GObject.Flags.TypeDebugFlags
instance GHC.Show.Show GI.GObject.Flags.TypeDebugFlags
instance GHC.Classes.Eq GI.GObject.Flags.TypeFlags
instance GHC.Show.Show GI.GObject.Flags.TypeFlags
instance GHC.Classes.Eq GI.GObject.Flags.TypeFundamentalFlags
instance GHC.Show.Show GI.GObject.Flags.TypeFundamentalFlags
instance GHC.Enum.Enum GI.GObject.Flags.BindingFlags
instance GHC.Classes.Ord GI.GObject.Flags.BindingFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.GObject.Flags.BindingFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.GObject.Flags.BindingFlags
instance GHC.Enum.Enum GI.GObject.Flags.ConnectFlags
instance GHC.Classes.Ord GI.GObject.Flags.ConnectFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.GObject.Flags.ConnectFlags
instance GHC.Enum.Enum GI.GObject.Flags.ParamFlags
instance GHC.Classes.Ord GI.GObject.Flags.ParamFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.GObject.Flags.ParamFlags
instance GHC.Enum.Enum GI.GObject.Flags.SignalFlags
instance GHC.Classes.Ord GI.GObject.Flags.SignalFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.GObject.Flags.SignalFlags
instance GHC.Enum.Enum GI.GObject.Flags.SignalMatchType
instance GHC.Classes.Ord GI.GObject.Flags.SignalMatchType
instance Data.GI.Base.BasicTypes.IsGFlag GI.GObject.Flags.SignalMatchType
instance GHC.Enum.Enum GI.GObject.Flags.TypeDebugFlags
instance GHC.Classes.Ord GI.GObject.Flags.TypeDebugFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.GObject.Flags.TypeDebugFlags
instance GHC.Enum.Enum GI.GObject.Flags.TypeFlags
instance GHC.Classes.Ord GI.GObject.Flags.TypeFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.GObject.Flags.TypeFlags
instance GHC.Enum.Enum GI.GObject.Flags.TypeFundamentalFlags
instance GHC.Classes.Ord GI.GObject.Flags.TypeFundamentalFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.GObject.Flags.TypeFundamentalFlags


-- | All the fields in the GInitiallyUnowned structure are private to the
--   <a>InitiallyUnowned</a> implementation and should never be accessed
--   directly.
module GI.GObject.Objects.InitiallyUnowned

-- | Memory-managed wrapper type.
newtype InitiallyUnowned
InitiallyUnowned :: (ManagedPtr InitiallyUnowned) -> InitiallyUnowned

-- | Type class for types which can be safely cast to
--   <a>InitiallyUnowned</a>, for instance with <a>toInitiallyUnowned</a>.
class GObject o => IsInitiallyUnowned o

-- | Cast to <a>InitiallyUnowned</a>, for types for which this is known to
--   be safe. For general casts, use <a>castTo</a>.
toInitiallyUnowned :: (MonadIO m, IsInitiallyUnowned o) => o -> m InitiallyUnowned

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>InitiallyUnowned</a>.
noInitiallyUnowned :: Maybe InitiallyUnowned
instance (Data.GI.Base.BasicTypes.GObject a, Data.GI.Base.Overloading.UnknownAncestorError GI.GObject.Objects.InitiallyUnowned.InitiallyUnowned a) => GI.GObject.Objects.InitiallyUnowned.IsInitiallyUnowned a
instance GI.GObject.Objects.InitiallyUnowned.IsInitiallyUnowned GI.GObject.Objects.InitiallyUnowned.InitiallyUnowned
instance Data.GI.Base.BasicTypes.GObject GI.GObject.Objects.InitiallyUnowned.InitiallyUnowned
instance GI.GObject.Objects.Object.IsObject GI.GObject.Objects.InitiallyUnowned.InitiallyUnowned


-- | <a>Binding</a> is the representation of a binding between a property
--   on a <a>Object</a> instance (or source) and another property on
--   another <a>Object</a> instance (or target). Whenever the source
--   property changes, the same value is applied to the target property;
--   for instance, the following binding:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   g_object_bind_property (object1, "property-a",
--                           object2, "property-b",
--                           G_BINDING_DEFAULT);
--   </pre>
--   
--   will cause the property named "property-b" of <i><tt>object2</tt></i>
--   to be updated every time <tt><i>g_object_set()</i></tt> or the
--   specific accessor changes the value of the property "property-a" of
--   <i><tt>object1</tt></i>.
--   
--   It is possible to create a bidirectional binding between two
--   properties of two <a>Object</a> instances, so that if either property
--   changes, the other is updated as well, for instance:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   g_object_bind_property (object1, "property-a",
--                           object2, "property-b",
--                           G_BINDING_BIDIRECTIONAL);
--   </pre>
--   
--   will keep the two properties in sync.
--   
--   It is also possible to set a custom transformation function (in both
--   directions, in case of a bidirectional binding) to apply a custom
--   transformation from the source value to the target value before
--   applying it; for instance, the following binding:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   g_object_bind_property_full (adjustment1, "value",
--                                adjustment2, "value",
--                                G_BINDING_BIDIRECTIONAL,
--                                celsius_to_fahrenheit,
--                                fahrenheit_to_celsius,
--                                NULL, NULL);
--   </pre>
--   
--   will keep the "value" property of the two adjustments in sync; the
--   <i><tt>celsiusToFahrenheit</tt></i> function will be called whenever
--   the "value" property of <i><tt>adjustment1</tt></i> changes and will
--   transform the current value of the property before applying it to the
--   "value" property of <i><tt>adjustment2</tt></i>.
--   
--   Vice versa, the <i><tt>fahrenheitToCelsius</tt></i> function will be
--   called whenever the "value" property of <i><tt>adjustment2</tt></i>
--   changes, and will transform the current value of the property before
--   applying it to the "value" property of <i><tt>adjustment1</tt></i>.
--   
--   Note that <a>Binding</a> does not resolve cycles by itself; a cycle
--   like
--   
--   <pre>
--   object1:propertyA -&gt; object2:propertyB
--   object2:propertyB -&gt; object3:propertyC
--   object3:propertyC -&gt; object1:propertyA
--   </pre>
--   
--   might lead to an infinite loop. The loop, in this particular case, can
--   be avoided if the objects emit the
--   <a>Object</a>::<tt><i>notify</i></tt> signal only if the value has
--   effectively been changed. A binding is implemented using the
--   <a>Object</a>::<tt><i>notify</i></tt> signal, so it is susceptible to
--   all the various ways of blocking a signal emission, like
--   <a>signalStopEmission</a> or <a>signalHandlerBlock</a>.
--   
--   A binding will be severed, and the resources it allocates freed,
--   whenever either one of the <a>Object</a> instances it refers to are
--   finalized, or when the <a>Binding</a> instance loses its last
--   reference.
--   
--   Bindings for languages with garbage collection can use
--   <a>bindingUnbind</a> to explicitly release a binding between the
--   source and target properties, instead of relying on the last reference
--   on the binding, source, and target instances to drop.
--   
--   <a>Binding</a> is available since GObject 2.26
--   
--   <i>Since: 2.26</i>
module GI.GObject.Objects.Binding

-- | Memory-managed wrapper type.
newtype Binding
Binding :: (ManagedPtr Binding) -> Binding

-- | Type class for types which can be safely cast to <a>Binding</a>, for
--   instance with <a>toBinding</a>.
class GObject o => IsBinding o

-- | Cast to <a>Binding</a>, for types for which this is known to be safe.
--   For general casts, use <a>castTo</a>.
toBinding :: (MonadIO m, IsBinding o) => o -> m Binding

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a> <a>Binding</a>.
noBinding :: Maybe Binding

-- | Retrieves the flags passed when constructing the <a>Binding</a>.
--   
--   <i>Since: 2.26</i>
bindingGetFlags :: (HasCallStack, MonadIO m, IsBinding a) => a -> m [BindingFlags]

-- | Retrieves the <a>Object</a> instance used as the source of the
--   binding.
--   
--   <i>Since: 2.26</i>
bindingGetSource :: (HasCallStack, MonadIO m, IsBinding a) => a -> m Object

-- | Retrieves the name of the property of
--   <a>Binding</a>:<tt><i>source</i></tt> used as the source of the
--   binding.
--   
--   <i>Since: 2.26</i>
bindingGetSourceProperty :: (HasCallStack, MonadIO m, IsBinding a) => a -> m Text

-- | Retrieves the <a>Object</a> instance used as the target of the
--   binding.
--   
--   <i>Since: 2.26</i>
bindingGetTarget :: (HasCallStack, MonadIO m, IsBinding a) => a -> m Object

-- | Retrieves the name of the property of
--   <a>Binding</a>:<tt><i>target</i></tt> used as the target of the
--   binding.
--   
--   <i>Since: 2.26</i>
bindingGetTargetProperty :: (HasCallStack, MonadIO m, IsBinding a) => a -> m Text

-- | Explicitly releases the binding between the source and the target
--   property expressed by <i><tt>binding</tt></i>.
--   
--   This function will release the reference that is being held on the
--   <i><tt>binding</tt></i> instance; if you want to hold on to the
--   <a>Binding</a> instance after calling <a>bindingUnbind</a>, you will
--   need to hold a reference to it.
--   
--   <i>Since: 2.38</i>
bindingUnbind :: (HasCallStack, MonadIO m, IsBinding a) => a -> m ()

-- | Construct a <a>GValueConstruct</a> with valid value for the
--   “<tt>flags</tt>” property. This is rarely needed directly, but it is
--   used by <a>new</a>.
constructBindingFlags :: (IsBinding o) => [BindingFlags] -> IO (GValueConstruct o)

-- | Get the value of the “<tt>flags</tt>” property. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> binding #flags
--   </pre>
getBindingFlags :: (MonadIO m, IsBinding o) => o -> m [BindingFlags]

-- | Construct a <a>GValueConstruct</a> with valid value for the
--   “<tt>source</tt>” property. This is rarely needed directly, but it is
--   used by <a>new</a>.
constructBindingSource :: (IsBinding o, IsObject a) => a -> IO (GValueConstruct o)

-- | Get the value of the “<tt>source</tt>” property. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> binding #source
--   </pre>
getBindingSource :: (MonadIO m, IsBinding o) => o -> m Object

-- | Construct a <a>GValueConstruct</a> with valid value for the
--   “<tt>source-property</tt>” property. This is rarely needed directly,
--   but it is used by <a>new</a>.
constructBindingSourceProperty :: (IsBinding o) => Text -> IO (GValueConstruct o)

-- | Get the value of the “<tt>source-property</tt>” property. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> binding #sourceProperty
--   </pre>
getBindingSourceProperty :: (MonadIO m, IsBinding o) => o -> m Text

-- | Construct a <a>GValueConstruct</a> with valid value for the
--   “<tt>target</tt>” property. This is rarely needed directly, but it is
--   used by <a>new</a>.
constructBindingTarget :: (IsBinding o, IsObject a) => a -> IO (GValueConstruct o)

-- | Get the value of the “<tt>target</tt>” property. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> binding #target
--   </pre>
getBindingTarget :: (MonadIO m, IsBinding o) => o -> m Object

-- | Construct a <a>GValueConstruct</a> with valid value for the
--   “<tt>target-property</tt>” property. This is rarely needed directly,
--   but it is used by <a>new</a>.
constructBindingTargetProperty :: (IsBinding o) => Text -> IO (GValueConstruct o)

-- | Get the value of the “<tt>target-property</tt>” property. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> binding #targetProperty
--   </pre>
getBindingTargetProperty :: (MonadIO m, IsBinding o) => o -> m Text
instance (Data.GI.Base.BasicTypes.GObject a, Data.GI.Base.Overloading.UnknownAncestorError GI.GObject.Objects.Binding.Binding a) => GI.GObject.Objects.Binding.IsBinding a
instance GI.GObject.Objects.Binding.IsBinding GI.GObject.Objects.Binding.Binding
instance Data.GI.Base.BasicTypes.GObject GI.GObject.Objects.Binding.Binding
instance GI.GObject.Objects.Object.IsObject GI.GObject.Objects.Binding.Binding


module GI.GObject.Objects.ParamSpec


module GI.GObject.Objects.ParamSpecBoolean


module GI.GObject.Objects.ParamSpecBoxed


module GI.GObject.Objects.ParamSpecChar


module GI.GObject.Objects.ParamSpecDouble


module GI.GObject.Objects.ParamSpecEnum


module GI.GObject.Objects.ParamSpecFlags


module GI.GObject.Objects.ParamSpecFloat


module GI.GObject.Objects.ParamSpecGType


module GI.GObject.Objects.ParamSpecInt


module GI.GObject.Objects.ParamSpecInt64


module GI.GObject.Objects.ParamSpecLong


module GI.GObject.Objects.ParamSpecObject


module GI.GObject.Objects.ParamSpecOverride


module GI.GObject.Objects.ParamSpecParam


module GI.GObject.Objects.ParamSpecPointer


module GI.GObject.Objects.ParamSpecString


module GI.GObject.Objects.ParamSpecUChar


module GI.GObject.Objects.ParamSpecUInt


module GI.GObject.Objects.ParamSpecUInt64


module GI.GObject.Objects.ParamSpecULong


module GI.GObject.Objects.ParamSpecUnichar


module GI.GObject.Objects.ParamSpecValueArray


module GI.GObject.Objects.ParamSpecVariant


-- | A <a>CClosure</a> is a specialization of <a>Closure</a> for C function
--   callbacks.
module GI.GObject.Structs.CClosure

-- | Memory-managed wrapper type.
newtype CClosure
CClosure :: (ManagedPtr CClosure) -> CClosure

-- | Construct a <a>CClosure</a> struct initialized to zero.
newZeroCClosure :: MonadIO m => m CClosure

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>CClosure</a>.
noCClosure :: Maybe CClosure

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with
--   handlers that take two boxed pointers as arguments and return a
--   boolean. If you have such a signal, you will probably also need to use
--   an accumulator, such as <a>signalAccumulatorTrueHandled</a>.
cClosureMarshalBOOLEAN_BOXEDBOXED :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with
--   handlers that take a flags type as an argument and return a boolean.
--   If you have such a signal, you will probably also need to use an
--   accumulator, such as <a>signalAccumulatorTrueHandled</a>.
cClosureMarshalBOOLEAN_FLAGS :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A generic marshaller function implemented via <a>libffi</a>.
--   
--   Normally this function is not passed explicitly to
--   <tt><i>g_signal_new()</i></tt>, but used automatically by GLib when
--   specifying a <a>Nothing</a> marshaller.
--   
--   <i>Since: 2.30</i>
cClosureMarshalGeneric :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with
--   handlers that take a <a>Object</a> and a pointer and produce a string.
--   It is highly unlikely that your signal handler fits this description.
cClosureMarshalSTRING_OBJECTPOINTER :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single boolean argument.
cClosureMarshalVOID_BOOLEAN :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single argument which is any boxed pointer type.
cClosureMarshalVOID_BOXED :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single character argument.
cClosureMarshalVOID_CHAR :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with
--   one double-precision floating point argument.
cClosureMarshalVOID_DOUBLE :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single argument with an enumerated type.
cClosureMarshalVOID_ENUM :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single argument with a flags types.
cClosureMarshalVOID_FLAGS :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with
--   one single-precision floating point argument.
cClosureMarshalVOID_FLOAT :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single integer argument.
cClosureMarshalVOID_INT :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with
--   with a single long integer argument.
cClosureMarshalVOID_LONG :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single <a>Object</a> argument.
cClosureMarshalVOID_OBJECT :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single argument of type <a>ParamSpec</a>.
cClosureMarshalVOID_PARAM :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single raw pointer argument type.
--   
--   If it is possible, it is better to use one of the more specific
--   functions such as <a>cclosureMarshalVOID_OBJECT</a> or
--   <a>cclosureMarshalVOID_OBJECT</a>.
cClosureMarshalVOID_POINTER :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single string argument.
cClosureMarshalVOID_STRING :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single unsigned character argument.
cClosureMarshalVOID_UCHAR :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with
--   with a single unsigned integer argument.
cClosureMarshalVOID_UINT :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   unsigned int and a pointer as arguments.
cClosureMarshalVOID_UINTPOINTER :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single unsigned long integer argument.
cClosureMarshalVOID_ULONG :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with a
--   single <a>GVariant</a> argument.
cClosureMarshalVOID_VARIANT :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | A <tt><i>GClosureMarshal</i></tt> function for use with signals with
--   no arguments.
cClosureMarshalVOID_VOID :: (HasCallStack, MonadIO m) => Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | Set the value of the “<tt>callback</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #callback
--   </pre>
clearCClosureCallback :: MonadIO m => CClosure -> m ()

-- | Get the value of the “<tt>callback</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> cClosure #callback
--   </pre>
getCClosureCallback :: MonadIO m => CClosure -> m (Ptr ())

-- | Set the value of the “<tt>callback</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> cClosure [ #callback <a>:=</a> value ]
--   </pre>
setCClosureCallback :: MonadIO m => CClosure -> Ptr () -> m ()

-- | Get the value of the “<tt>closure</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> cClosure #closure
--   </pre>
getCClosureClosure :: MonadIO m => CClosure -> m Closure
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.CClosure.CClosure
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.CClosure.CClosure tag


-- | A structure which contains a single enum value, its name, and its
--   nickname.
module GI.GObject.Structs.EnumValue

-- | Memory-managed wrapper type.
newtype EnumValue
EnumValue :: (ManagedPtr EnumValue) -> EnumValue

-- | Construct a <a>EnumValue</a> struct initialized to zero.
newZeroEnumValue :: MonadIO m => m EnumValue

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>EnumValue</a>.
noEnumValue :: Maybe EnumValue

-- | Get the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> enumValue #value
--   </pre>
getEnumValueValue :: MonadIO m => EnumValue -> m Int32

-- | Set the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> enumValue [ #value <a>:=</a> value ]
--   </pre>
setEnumValueValue :: MonadIO m => EnumValue -> Int32 -> m ()

-- | Set the value of the “<tt>value_name</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #valueName
--   </pre>
clearEnumValueValueName :: MonadIO m => EnumValue -> m ()

-- | Get the value of the “<tt>value_name</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> enumValue #valueName
--   </pre>
getEnumValueValueName :: MonadIO m => EnumValue -> m (Maybe Text)

-- | Set the value of the “<tt>value_name</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> enumValue [ #valueName <a>:=</a> value ]
--   </pre>
setEnumValueValueName :: MonadIO m => EnumValue -> CString -> m ()

-- | Set the value of the “<tt>value_nick</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #valueNick
--   </pre>
clearEnumValueValueNick :: MonadIO m => EnumValue -> m ()

-- | Get the value of the “<tt>value_nick</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> enumValue #valueNick
--   </pre>
getEnumValueValueNick :: MonadIO m => EnumValue -> m (Maybe Text)

-- | Set the value of the “<tt>value_nick</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> enumValue [ #valueNick <a>:=</a> value ]
--   </pre>
setEnumValueValueNick :: MonadIO m => EnumValue -> CString -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.EnumValue.EnumValue
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.EnumValue.EnumValue tag


-- | A structure which contains a single flags value, its name, and its
--   nickname.
module GI.GObject.Structs.FlagsValue

-- | Memory-managed wrapper type.
newtype FlagsValue
FlagsValue :: (ManagedPtr FlagsValue) -> FlagsValue

-- | Construct a <a>FlagsValue</a> struct initialized to zero.
newZeroFlagsValue :: MonadIO m => m FlagsValue

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>FlagsValue</a>.
noFlagsValue :: Maybe FlagsValue

-- | Get the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> flagsValue #value
--   </pre>
getFlagsValueValue :: MonadIO m => FlagsValue -> m Word32

-- | Set the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> flagsValue [ #value <a>:=</a> value ]
--   </pre>
setFlagsValueValue :: MonadIO m => FlagsValue -> Word32 -> m ()

-- | Set the value of the “<tt>value_name</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #valueName
--   </pre>
clearFlagsValueValueName :: MonadIO m => FlagsValue -> m ()

-- | Get the value of the “<tt>value_name</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> flagsValue #valueName
--   </pre>
getFlagsValueValueName :: MonadIO m => FlagsValue -> m (Maybe Text)

-- | Set the value of the “<tt>value_name</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> flagsValue [ #valueName <a>:=</a> value ]
--   </pre>
setFlagsValueValueName :: MonadIO m => FlagsValue -> CString -> m ()

-- | Set the value of the “<tt>value_nick</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #valueNick
--   </pre>
clearFlagsValueValueNick :: MonadIO m => FlagsValue -> m ()

-- | Get the value of the “<tt>value_nick</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> flagsValue #valueNick
--   </pre>
getFlagsValueValueNick :: MonadIO m => FlagsValue -> m (Maybe Text)

-- | Set the value of the “<tt>value_nick</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> flagsValue [ #valueNick <a>:=</a> value ]
--   </pre>
setFlagsValueValueNick :: MonadIO m => FlagsValue -> CString -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.FlagsValue.FlagsValue
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.FlagsValue.FlagsValue tag


-- | The GObjectConstructParam struct is an auxiliary structure used to
--   hand
--   'GI.GObject.Objects.ParamSpec.ParamSpec'\/'GI.GObject.Structs.Value.Value'
--   pairs to the <i><tt>constructor</tt></i> of a <a>ObjectClass</a>.
module GI.GObject.Structs.ObjectConstructParam

-- | Memory-managed wrapper type.
newtype ObjectConstructParam
ObjectConstructParam :: (ManagedPtr ObjectConstructParam) -> ObjectConstructParam

-- | Construct a <a>ObjectConstructParam</a> struct initialized to zero.
newZeroObjectConstructParam :: MonadIO m => m ObjectConstructParam

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>ObjectConstructParam</a>.
noObjectConstructParam :: Maybe ObjectConstructParam

-- | Set the value of the “<tt>pspec</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #pspec
--   </pre>
clearObjectConstructParamPspec :: MonadIO m => ObjectConstructParam -> m ()

-- | Get the value of the “<tt>pspec</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> objectConstructParam #pspec
--   </pre>
getObjectConstructParamPspec :: MonadIO m => ObjectConstructParam -> m (Maybe GParamSpec)

-- | Set the value of the “<tt>pspec</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> objectConstructParam [ #pspec <a>:=</a> value ]
--   </pre>
setObjectConstructParamPspec :: MonadIO m => ObjectConstructParam -> Ptr GParamSpec -> m ()

-- | Set the value of the “<tt>value</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #value
--   </pre>
clearObjectConstructParamValue :: MonadIO m => ObjectConstructParam -> m ()

-- | Get the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> objectConstructParam #value
--   </pre>
getObjectConstructParamValue :: MonadIO m => ObjectConstructParam -> m (Maybe GValue)

-- | Set the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> objectConstructParam [ #value <a>:=</a> value ]
--   </pre>
setObjectConstructParamValue :: MonadIO m => ObjectConstructParam -> Ptr GValue -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.ObjectConstructParam.ObjectConstructParam
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.ObjectConstructParam.ObjectConstructParam tag


-- | A <a>ParamSpecPool</a> maintains a collection of
--   <tt><i>GParamSpecs</i></tt> which can be quickly accessed by owner and
--   name. The implementation of the <a>Object</a> property system uses
--   such a pool to store the <tt><i>GParamSpecs</i></tt> of the properties
--   all object types.
module GI.GObject.Structs.ParamSpecPool

-- | Memory-managed wrapper type.
newtype ParamSpecPool
ParamSpecPool :: (ManagedPtr ParamSpecPool) -> ParamSpecPool

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>ParamSpecPool</a>.
noParamSpecPool :: Maybe ParamSpecPool

-- | Inserts a <a>ParamSpec</a> in the pool.
paramSpecPoolInsert :: (HasCallStack, MonadIO m) => ParamSpecPool -> GParamSpec -> GType -> m ()

-- | Gets an <a>List</a> of all <tt><i>GParamSpecs</i></tt> owned by
--   <i><tt>ownerType</tt></i> in the pool.
paramSpecPoolListOwned :: (HasCallStack, MonadIO m) => ParamSpecPool -> GType -> m [GParamSpec]

-- | Looks up a <a>ParamSpec</a> in the pool.
paramSpecPoolLookup :: (HasCallStack, MonadIO m) => ParamSpecPool -> Text -> GType -> Bool -> m GParamSpec

-- | Creates a new <a>ParamSpecPool</a>.
--   
--   If <i><tt>typePrefixing</tt></i> is <a>True</a>, lookups in the newly
--   created pool will allow to specify the owner as a colon-separated
--   prefix of the property name, like "GtkContainer:border-width". This
--   feature is deprecated, so you should always set
--   <i><tt>typePrefixing</tt></i> to <a>False</a>.
paramSpecPoolNew :: (HasCallStack, MonadIO m) => Bool -> m ParamSpecPool

-- | Removes a <a>ParamSpec</a> from the pool.
paramSpecPoolRemove :: (HasCallStack, MonadIO m) => ParamSpecPool -> GParamSpec -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.ParamSpecPool.ParamSpecPool


-- | The GParameter struct is an auxiliary structure used to hand parameter
--   name/value pairs to <a>objectNewv</a>.
module GI.GObject.Structs.Parameter

-- | Memory-managed wrapper type.
newtype Parameter
Parameter :: (ManagedPtr Parameter) -> Parameter

-- | Construct a <a>Parameter</a> struct initialized to zero.
newZeroParameter :: MonadIO m => m Parameter

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>Parameter</a>.
noParameter :: Maybe Parameter

-- | Set the value of the “<tt>name</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #name
--   </pre>
clearParameterName :: MonadIO m => Parameter -> m ()

-- | Get the value of the “<tt>name</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> parameter #name
--   </pre>
getParameterName :: MonadIO m => Parameter -> m (Maybe Text)

-- | Set the value of the “<tt>name</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> parameter [ #name <a>:=</a> value ]
--   </pre>
setParameterName :: MonadIO m => Parameter -> CString -> m ()

-- | Get the value of the “<tt>value</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> parameter #value
--   </pre>
getParameterValue :: MonadIO m => Parameter -> m GValue
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.Parameter.Parameter
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.Parameter.Parameter tag


-- | The <a>SignalInvocationHint</a> structure is used to pass on
--   additional information to callbacks during a signal emission.
module GI.GObject.Structs.SignalInvocationHint

-- | Memory-managed wrapper type.
newtype SignalInvocationHint
SignalInvocationHint :: (ManagedPtr SignalInvocationHint) -> SignalInvocationHint

-- | Construct a <a>SignalInvocationHint</a> struct initialized to zero.
newZeroSignalInvocationHint :: MonadIO m => m SignalInvocationHint

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>SignalInvocationHint</a>.
noSignalInvocationHint :: Maybe SignalInvocationHint

-- | Get the value of the “<tt>detail</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> signalInvocationHint #detail
--   </pre>
getSignalInvocationHintDetail :: MonadIO m => SignalInvocationHint -> m Word32

-- | Set the value of the “<tt>detail</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> signalInvocationHint [ #detail <a>:=</a> value ]
--   </pre>
setSignalInvocationHintDetail :: MonadIO m => SignalInvocationHint -> Word32 -> m ()

-- | Get the value of the “<tt>run_type</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> signalInvocationHint #runType
--   </pre>
getSignalInvocationHintRunType :: MonadIO m => SignalInvocationHint -> m [SignalFlags]

-- | Set the value of the “<tt>run_type</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> signalInvocationHint [ #runType <a>:=</a> value ]
--   </pre>
setSignalInvocationHintRunType :: MonadIO m => SignalInvocationHint -> [SignalFlags] -> m ()

-- | Get the value of the “<tt>signal_id</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> signalInvocationHint #signalId
--   </pre>
getSignalInvocationHintSignalId :: MonadIO m => SignalInvocationHint -> m Word32

-- | Set the value of the “<tt>signal_id</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> signalInvocationHint [ #signalId <a>:=</a> value ]
--   </pre>
setSignalInvocationHintSignalId :: MonadIO m => SignalInvocationHint -> Word32 -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.SignalInvocationHint.SignalInvocationHint
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.SignalInvocationHint.SignalInvocationHint tag


-- | A structure holding in-depth information for a specific signal. It is
--   filled in by the <a>signalQuery</a> function.
module GI.GObject.Structs.SignalQuery

-- | Memory-managed wrapper type.
newtype SignalQuery
SignalQuery :: (ManagedPtr SignalQuery) -> SignalQuery

-- | Construct a <a>SignalQuery</a> struct initialized to zero.
newZeroSignalQuery :: MonadIO m => m SignalQuery

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>SignalQuery</a>.
noSignalQuery :: Maybe SignalQuery

-- | Get the value of the “<tt>itype</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> signalQuery #itype
--   </pre>
getSignalQueryItype :: MonadIO m => SignalQuery -> m GType

-- | Set the value of the “<tt>itype</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> signalQuery [ #itype <a>:=</a> value ]
--   </pre>
setSignalQueryItype :: MonadIO m => SignalQuery -> GType -> m ()

-- | Get the value of the “<tt>n_params</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> signalQuery #nParams
--   </pre>
getSignalQueryNParams :: MonadIO m => SignalQuery -> m Word32

-- | Set the value of the “<tt>n_params</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> signalQuery [ #nParams <a>:=</a> value ]
--   </pre>
setSignalQueryNParams :: MonadIO m => SignalQuery -> Word32 -> m ()

-- | Get the value of the “<tt>return_type</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> signalQuery #returnType
--   </pre>
getSignalQueryReturnType :: MonadIO m => SignalQuery -> m GType

-- | Set the value of the “<tt>return_type</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> signalQuery [ #returnType <a>:=</a> value ]
--   </pre>
setSignalQueryReturnType :: MonadIO m => SignalQuery -> GType -> m ()

-- | Get the value of the “<tt>signal_flags</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> signalQuery #signalFlags
--   </pre>
getSignalQuerySignalFlags :: MonadIO m => SignalQuery -> m [SignalFlags]

-- | Set the value of the “<tt>signal_flags</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> signalQuery [ #signalFlags <a>:=</a> value ]
--   </pre>
setSignalQuerySignalFlags :: MonadIO m => SignalQuery -> [SignalFlags] -> m ()

-- | Get the value of the “<tt>signal_id</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> signalQuery #signalId
--   </pre>
getSignalQuerySignalId :: MonadIO m => SignalQuery -> m Word32

-- | Set the value of the “<tt>signal_id</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> signalQuery [ #signalId <a>:=</a> value ]
--   </pre>
setSignalQuerySignalId :: MonadIO m => SignalQuery -> Word32 -> m ()

-- | Set the value of the “<tt>signal_name</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #signalName
--   </pre>
clearSignalQuerySignalName :: MonadIO m => SignalQuery -> m ()

-- | Get the value of the “<tt>signal_name</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> signalQuery #signalName
--   </pre>
getSignalQuerySignalName :: MonadIO m => SignalQuery -> m (Maybe Text)

-- | Set the value of the “<tt>signal_name</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> signalQuery [ #signalName <a>:=</a> value ]
--   </pre>
setSignalQuerySignalName :: MonadIO m => SignalQuery -> CString -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.SignalQuery.SignalQuery
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.SignalQuery.SignalQuery tag


-- | The class of a flags type holds information about its possible values.
module GI.GObject.Structs.FlagsClass

-- | Memory-managed wrapper type.
newtype FlagsClass
FlagsClass :: (ManagedPtr FlagsClass) -> FlagsClass

-- | Construct a <a>FlagsClass</a> struct initialized to zero.
newZeroFlagsClass :: MonadIO m => m FlagsClass

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>FlagsClass</a>.
noFlagsClass :: Maybe FlagsClass

-- | Get the value of the “<tt>g_type_class</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> flagsClass #gTypeClass
--   </pre>
getFlagsClassGTypeClass :: MonadIO m => FlagsClass -> m TypeClass

-- | Get the value of the “<tt>mask</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> flagsClass #mask
--   </pre>
getFlagsClassMask :: MonadIO m => FlagsClass -> m Word32

-- | Set the value of the “<tt>mask</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> flagsClass [ #mask <a>:=</a> value ]
--   </pre>
setFlagsClassMask :: MonadIO m => FlagsClass -> Word32 -> m ()

-- | Get the value of the “<tt>n_values</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> flagsClass #nValues
--   </pre>
getFlagsClassNValues :: MonadIO m => FlagsClass -> m Word32

-- | Set the value of the “<tt>n_values</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> flagsClass [ #nValues <a>:=</a> value ]
--   </pre>
setFlagsClassNValues :: MonadIO m => FlagsClass -> Word32 -> m ()

-- | Set the value of the “<tt>values</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #values
--   </pre>
clearFlagsClassValues :: MonadIO m => FlagsClass -> m ()

-- | Get the value of the “<tt>values</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> flagsClass #values
--   </pre>
getFlagsClassValues :: MonadIO m => FlagsClass -> m (Maybe FlagsValue)

-- | Set the value of the “<tt>values</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> flagsClass [ #values <a>:=</a> value ]
--   </pre>
setFlagsClassValues :: MonadIO m => FlagsClass -> Ptr FlagsValue -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.FlagsClass.FlagsClass
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.FlagsClass.FlagsClass tag


-- | The class of an enumeration type holds information about its possible
--   values.
module GI.GObject.Structs.EnumClass

-- | Memory-managed wrapper type.
newtype EnumClass
EnumClass :: (ManagedPtr EnumClass) -> EnumClass

-- | Construct a <a>EnumClass</a> struct initialized to zero.
newZeroEnumClass :: MonadIO m => m EnumClass

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>EnumClass</a>.
noEnumClass :: Maybe EnumClass

-- | Get the value of the “<tt>g_type_class</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> enumClass #gTypeClass
--   </pre>
getEnumClassGTypeClass :: MonadIO m => EnumClass -> m TypeClass

-- | Get the value of the “<tt>maximum</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> enumClass #maximum
--   </pre>
getEnumClassMaximum :: MonadIO m => EnumClass -> m Int32

-- | Set the value of the “<tt>maximum</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> enumClass [ #maximum <a>:=</a> value ]
--   </pre>
setEnumClassMaximum :: MonadIO m => EnumClass -> Int32 -> m ()

-- | Get the value of the “<tt>minimum</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> enumClass #minimum
--   </pre>
getEnumClassMinimum :: MonadIO m => EnumClass -> m Int32

-- | Set the value of the “<tt>minimum</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> enumClass [ #minimum <a>:=</a> value ]
--   </pre>
setEnumClassMinimum :: MonadIO m => EnumClass -> Int32 -> m ()

-- | Get the value of the “<tt>n_values</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> enumClass #nValues
--   </pre>
getEnumClassNValues :: MonadIO m => EnumClass -> m Word32

-- | Set the value of the “<tt>n_values</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> enumClass [ #nValues <a>:=</a> value ]
--   </pre>
setEnumClassNValues :: MonadIO m => EnumClass -> Word32 -> m ()

-- | Set the value of the “<tt>values</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #values
--   </pre>
clearEnumClassValues :: MonadIO m => EnumClass -> m ()

-- | Get the value of the “<tt>values</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> enumClass #values
--   </pre>
getEnumClassValues :: MonadIO m => EnumClass -> m (Maybe EnumValue)

-- | Set the value of the “<tt>values</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> enumClass [ #values <a>:=</a> value ]
--   </pre>
setEnumClassValues :: MonadIO m => EnumClass -> Ptr EnumValue -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.EnumClass.EnumClass
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.EnumClass.EnumClass tag


-- | An opaque structure used as the base of all classes.
module GI.GObject.Structs.TypeClass

-- | Memory-managed wrapper type.
newtype TypeClass
TypeClass :: (ManagedPtr TypeClass) -> TypeClass

-- | Construct a <a>TypeClass</a> struct initialized to zero.
newZeroTypeClass :: MonadIO m => m TypeClass

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeClass</a>.
noTypeClass :: Maybe TypeClass

-- | Registers a private structure for an instantiatable type.
--   
--   When an object is allocated, the private structures for the type and
--   all of its parent types are allocated sequentially in the same memory
--   block as the public structures, and are zero-filled.
--   
--   Note that the accumulated size of the private structures of a type and
--   all its parent types cannot exceed 64 KiB.
--   
--   This function should be called in the type's
--   <tt><i>class_init()</i></tt> function. The private structure can be
--   retrieved using the <tt><i>G_TYPE_INSTANCE_GET_PRIVATE()</i></tt>
--   macro.
--   
--   The following example shows attaching a private structure
--   MyObjectPrivate to an object MyObject defined in the standard GObject
--   fashion in the type's <tt><i>class_init()</i></tt> function.
--   
--   Note the use of a structure member "priv" to avoid the overhead of
--   repeatedly calling <tt><i>MY_OBJECT_GET_PRIVATE()</i></tt>.
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   typedef struct _MyObject        MyObject;
--   typedef struct _MyObjectPrivate MyObjectPrivate;
--   
--   struct _MyObject {
--    GObject parent;
--   
--    MyObjectPrivate *priv;
--   };
--   
--   struct _MyObjectPrivate {
--     int some_field;
--   };
--   
--   static void
--   my_object_class_init (MyObjectClass *klass)
--   {
--     g_type_class_add_private (klass, sizeof (MyObjectPrivate));
--   }
--   
--   static void
--   my_object_init (MyObject *my_object)
--   {
--     my_object-&gt;priv = G_TYPE_INSTANCE_GET_PRIVATE (my_object,
--                                                    MY_TYPE_OBJECT,
--                                                    MyObjectPrivate);
--     // my_object-&gt;priv-&gt;some_field will be automatically initialised to 0
--   }
--   
--   static int
--   my_object_get_some_field (MyObject *my_object)
--   {
--     MyObjectPrivate *priv;
--   
--     g_return_val_if_fail (MY_IS_OBJECT (my_object), 0);
--   
--     priv = my_object-&gt;priv;
--   
--     return priv-&gt;some_field;
--   }
--   </pre>
--   
--   <i>Since: 2.4</i>

-- | <i>Deprecated: (Since version 2.58)Use the
--   <tt><i>G_ADD_PRIVATE()</i></tt> macro with the <tt>G_DEFINE_*</tt>
--   family of macros to add instance private data to a type</i>
typeClassAddPrivate :: (HasCallStack, MonadIO m) => TypeClass -> Word64 -> m ()

-- | <i>No description available in the introspection data.</i>
typeClassAdjustPrivateOffset :: (HasCallStack, MonadIO m) => Ptr () -> Int32 -> m ()

-- | <i>No description available in the introspection data.</i>
typeClassGetPrivate :: (HasCallStack, MonadIO m) => TypeClass -> GType -> m (Ptr ())

-- | This function is essentially the same as <a>typeClassRef</a>, except
--   that the classes reference count isn't incremented. As a consequence,
--   this function may return <a>Nothing</a> if the class of the type
--   passed in does not currently exist (hasn't been referenced before).
typeClassPeek :: (HasCallStack, MonadIO m) => GType -> m TypeClass

-- | This is a convenience function often needed in class initializers. It
--   returns the class structure of the immediate parent type of the class
--   passed in. Since derived classes hold a reference count on their
--   parent classes as long as they are instantiated, the returned class
--   will always exist.
--   
--   This function is essentially equivalent to: g_type_class_peek
--   (g_type_parent (G_TYPE_FROM_CLASS (g_class)))
typeClassPeekParent :: (HasCallStack, MonadIO m) => TypeClass -> m TypeClass

-- | A more efficient version of <a>typeClassPeek</a> which works only for
--   static types.
--   
--   <i>Since: 2.4</i>
typeClassPeekStatic :: (HasCallStack, MonadIO m) => GType -> m TypeClass

-- | Increments the reference count of the class structure belonging to
--   <i><tt>type</tt></i>. This function will demand-create the class if it
--   doesn't exist already.
typeClassRef :: (HasCallStack, MonadIO m) => GType -> m TypeClass

-- | Decrements the reference count of the class structure being passed in.
--   Once the last reference count of a class has been released, classes
--   may be finalized by the type system, so further dereferencing of a
--   class pointer after <a>typeClassUnref</a> are invalid.
typeClassUnref :: (HasCallStack, MonadIO m) => TypeClass -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.TypeClass.TypeClass
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.TypeClass.TypeClass tag


-- | A structure that provides information to the type system which is used
--   specifically for managing fundamental types.
module GI.GObject.Structs.TypeFundamentalInfo

-- | Memory-managed wrapper type.
newtype TypeFundamentalInfo
TypeFundamentalInfo :: (ManagedPtr TypeFundamentalInfo) -> TypeFundamentalInfo

-- | Construct a <a>TypeFundamentalInfo</a> struct initialized to zero.
newZeroTypeFundamentalInfo :: MonadIO m => m TypeFundamentalInfo

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeFundamentalInfo</a>.
noTypeFundamentalInfo :: Maybe TypeFundamentalInfo

-- | Get the value of the “<tt>type_flags</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeFundamentalInfo #typeFlags
--   </pre>
getTypeFundamentalInfoTypeFlags :: MonadIO m => TypeFundamentalInfo -> m [TypeFundamentalFlags]

-- | Set the value of the “<tt>type_flags</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeFundamentalInfo [ #typeFlags <a>:=</a> value ]
--   </pre>
setTypeFundamentalInfoTypeFlags :: MonadIO m => TypeFundamentalInfo -> [TypeFundamentalFlags] -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.TypeFundamentalInfo.TypeFundamentalInfo
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.TypeFundamentalInfo.TypeFundamentalInfo tag


-- | <a>TypeModule</a> provides a simple implementation of the
--   <a>TypePlugin</a> interface. The model of <a>TypeModule</a> is a
--   dynamically loaded module which implements some number of types and
--   interface implementations. When the module is loaded, it registers its
--   types and interfaces using <a>typeModuleRegisterType</a> and
--   <a>typeModuleAddInterface</a>. As long as any instances of these types
--   and interface implementations are in use, the module is kept loaded.
--   When the types and interfaces are gone, the module may be unloaded. If
--   the types and interfaces become used again, the module will be
--   reloaded. Note that the last unref cannot happen in module code, since
--   that would lead to the caller's code being unloaded before
--   <a>objectUnref</a> returns to it.
--   
--   Keeping track of whether the module should be loaded or not is done by
--   using a use count - it starts at zero, and whenever it is greater than
--   zero, the module is loaded. The use count is maintained internally by
--   the type system, but also can be explicitly controlled by
--   <a>typeModuleUse</a> and <a>typeModuleUnuse</a>. Typically, when
--   loading a module for the first type, <a>typeModuleUse</a> will be used
--   to load it so that it can initialize its types. At some later point,
--   when the module no longer needs to be loaded except for the type
--   implementations it contains, <a>typeModuleUnuse</a> is called.
--   
--   <a>TypeModule</a> does not actually provide any implementation of
--   module loading and unloading. To create a particular module type you
--   must derive from <a>TypeModule</a> and implement the load and unload
--   functions in <a>TypeModuleClass</a>.
module GI.GObject.Objects.TypeModule

-- | Memory-managed wrapper type.
newtype TypeModule
TypeModule :: (ManagedPtr TypeModule) -> TypeModule

-- | Type class for types which can be safely cast to <a>TypeModule</a>,
--   for instance with <a>toTypeModule</a>.
class GObject o => IsTypeModule o

-- | Cast to <a>TypeModule</a>, for types for which this is known to be
--   safe. For general casts, use <a>castTo</a>.
toTypeModule :: (MonadIO m, IsTypeModule o) => o -> m TypeModule

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeModule</a>.
noTypeModule :: Maybe TypeModule

-- | Registers an additional interface for a type, whose interface lives in
--   the given type plugin. If the interface was already registered for the
--   type in this plugin, nothing will be done.
--   
--   As long as any instances of the type exist, the type plugin will not
--   be unloaded.
--   
--   Since 2.56 if <i><tt>module</tt></i> is <a>Nothing</a> this will call
--   <a>typeAddInterfaceStatic</a> instead. This can be used when making a
--   static build of the module.
typeModuleAddInterface :: (HasCallStack, MonadIO m, IsTypeModule a) => a -> GType -> GType -> InterfaceInfo -> m ()

-- | Looks up or registers an enumeration that is implemented with a
--   particular type plugin. If a type with name <i><tt>typeName</tt></i>
--   was previously registered, the <a>GType</a> identifier for the type is
--   returned, otherwise the type is newly registered, and the resulting
--   <a>GType</a> identifier returned.
--   
--   As long as any instances of the type exist, the type plugin will not
--   be unloaded.
--   
--   Since 2.56 if <i><tt>module</tt></i> is <a>Nothing</a> this will call
--   <a>typeRegisterStatic</a> instead. This can be used when making a
--   static build of the module.
--   
--   <i>Since: 2.6</i>
typeModuleRegisterEnum :: (HasCallStack, MonadIO m, IsTypeModule a) => a -> Text -> EnumValue -> m GType

-- | Looks up or registers a flags type that is implemented with a
--   particular type plugin. If a type with name <i><tt>typeName</tt></i>
--   was previously registered, the <a>GType</a> identifier for the type is
--   returned, otherwise the type is newly registered, and the resulting
--   <a>GType</a> identifier returned.
--   
--   As long as any instances of the type exist, the type plugin will not
--   be unloaded.
--   
--   Since 2.56 if <i><tt>module</tt></i> is <a>Nothing</a> this will call
--   <a>typeRegisterStatic</a> instead. This can be used when making a
--   static build of the module.
--   
--   <i>Since: 2.6</i>
typeModuleRegisterFlags :: (HasCallStack, MonadIO m, IsTypeModule a) => a -> Text -> FlagsValue -> m GType

-- | Looks up or registers a type that is implemented with a particular
--   type plugin. If a type with name <i><tt>typeName</tt></i> was
--   previously registered, the <a>GType</a> identifier for the type is
--   returned, otherwise the type is newly registered, and the resulting
--   <a>GType</a> identifier returned.
--   
--   When reregistering a type (typically because a module is unloaded then
--   reloaded, and reinitialized), <i><tt>module</tt></i> and
--   <i><tt>parentType</tt></i> must be the same as they were previously.
--   
--   As long as any instances of the type exist, the type plugin will not
--   be unloaded.
--   
--   Since 2.56 if <i><tt>module</tt></i> is <a>Nothing</a> this will call
--   <a>typeRegisterStatic</a> instead. This can be used when making a
--   static build of the module.
typeModuleRegisterType :: (HasCallStack, MonadIO m, IsTypeModule a) => a -> GType -> Text -> TypeInfo -> [TypeFlags] -> m GType

-- | Sets the name for a <a>TypeModule</a>
typeModuleSetName :: (HasCallStack, MonadIO m, IsTypeModule a) => a -> Text -> m ()

-- | Decreases the use count of a <a>TypeModule</a> by one. If the result
--   is zero, the module will be unloaded. (However, the <a>TypeModule</a>
--   will not be freed, and types associated with the <a>TypeModule</a> are
--   not unregistered. Once a <a>TypeModule</a> is initialized, it must
--   exist forever.)
typeModuleUnuse :: (HasCallStack, MonadIO m, IsTypeModule a) => a -> m ()

-- | Increases the use count of a <a>TypeModule</a> by one. If the use
--   count was zero before, the plugin will be loaded. If loading the
--   plugin fails, the use count is reset to its prior value.
typeModuleUse :: (HasCallStack, MonadIO m, IsTypeModule a) => a -> m Bool
instance (Data.GI.Base.BasicTypes.GObject a, Data.GI.Base.Overloading.UnknownAncestorError GI.GObject.Objects.TypeModule.TypeModule a) => GI.GObject.Objects.TypeModule.IsTypeModule a
instance GI.GObject.Objects.TypeModule.IsTypeModule GI.GObject.Objects.TypeModule.TypeModule
instance Data.GI.Base.BasicTypes.GObject GI.GObject.Objects.TypeModule.TypeModule
instance GI.GObject.Objects.Object.IsObject GI.GObject.Objects.TypeModule.TypeModule
instance GI.GObject.Interfaces.TypePlugin.IsTypePlugin GI.GObject.Objects.TypeModule.TypeModule


-- | An opaque structure used as the base of all type instances.
module GI.GObject.Structs.TypeInstance

-- | Memory-managed wrapper type.
newtype TypeInstance
TypeInstance :: (ManagedPtr TypeInstance) -> TypeInstance

-- | Construct a <a>TypeInstance</a> struct initialized to zero.
newZeroTypeInstance :: MonadIO m => m TypeInstance

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeInstance</a>.
noTypeInstance :: Maybe TypeInstance

-- | <i>No description available in the introspection data.</i>
typeInstanceGetPrivate :: (HasCallStack, MonadIO m) => TypeInstance -> GType -> m (Ptr ())
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.TypeInstance.TypeInstance
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.TypeInstance.TypeInstance tag


-- | All the fields in the GObject structure are private to the
--   <a>Object</a> implementation and should never be accessed directly.
module GI.GObject.Objects.Object

-- | Memory-managed wrapper type.
newtype Object
Object :: (ManagedPtr Object) -> Object

-- | Type class for types which can be safely cast to <a>Object</a>, for
--   instance with <a>toObject</a>.
class GObject o => IsObject o

-- | Cast to <a>Object</a>, for types for which this is known to be safe.
--   For general casts, use <a>castTo</a>.
toObject :: (MonadIO m, IsObject o) => o -> m Object

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a> <a>Object</a>.
noObject :: Maybe Object

-- | Creates a binding between <i><tt>sourceProperty</tt></i> on
--   <i><tt>source</tt></i> and <i><tt>targetProperty</tt></i> on
--   <i><tt>target</tt></i>. Whenever the <i><tt>sourceProperty</tt></i> is
--   changed the <i><tt>targetProperty</tt></i> is updated using the same
--   value. For instance:
--   
--   <pre>
--   g_object_bind_property (action, "active", widget, "sensitive", 0);
--   </pre>
--   
--   Will result in the "sensitive" property of the widget <a>Object</a>
--   instance to be updated with the same value of the "active" property of
--   the action <a>Object</a> instance.
--   
--   If <i><tt>flags</tt></i> contains <a>BindingFlagsBidirectional</a>
--   then the binding will be mutual: if <i><tt>targetProperty</tt></i> on
--   <i><tt>target</tt></i> changes then the <i><tt>sourceProperty</tt></i>
--   on <i><tt>source</tt></i> will be updated as well.
--   
--   The binding will automatically be removed when either the
--   <i><tt>source</tt></i> or the <i><tt>target</tt></i> instances are
--   finalized. To remove the binding without affecting the
--   <i><tt>source</tt></i> and the <i><tt>target</tt></i> you can just
--   call <a>objectUnref</a> on the returned <a>Binding</a> instance.
--   
--   A <a>Object</a> can have multiple bindings.
--   
--   <i>Since: 2.26</i>
objectBindProperty :: (HasCallStack, MonadIO m, IsObject a, IsObject b) => a -> Text -> b -> Text -> [BindingFlags] -> m Binding

-- | Creates a binding between <i><tt>sourceProperty</tt></i> on
--   <i><tt>source</tt></i> and <i><tt>targetProperty</tt></i> on
--   <i><tt>target</tt></i>, allowing you to set the transformation
--   functions to be used by the binding.
--   
--   This function is the language bindings friendly version of
--   <tt><i>g_object_bind_property_full()</i></tt>, using
--   <tt><i>GClosures</i></tt> instead of function pointers.
--   
--   <i>Since: 2.26</i>
objectBindPropertyFull :: (HasCallStack, MonadIO m, IsObject a, IsObject b) => a -> Text -> b -> Text -> [BindingFlags] -> Closure -> Closure -> m Binding

-- | <i>No description available in the introspection data.</i>
objectCompatControl :: (HasCallStack, MonadIO m) => Word64 -> Ptr () -> m Word64

-- | This function is intended for <a>Object</a> implementations to
--   re-enforce a [floating][floating-ref] object reference. Doing this is
--   seldom required: all <tt><i>GInitiallyUnowneds</i></tt> are created
--   with a floating reference which usually just needs to be sunken by
--   calling <a>objectRefSink</a>.
--   
--   <i>Since: 2.10</i>
objectForceFloating :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()

-- | Increases the freeze count on <i><tt>object</tt></i>. If the freeze
--   count is non-zero, the emission of "notify" signals on
--   <i><tt>object</tt></i> is stopped. The signals are queued until the
--   freeze count is decreased to zero. Duplicate notifications are
--   squashed so that at most one <a>Object</a>::<tt><i>notify</i></tt>
--   signal is emitted for each property modified while the object is
--   frozen.
--   
--   This is necessary for accessors that modify multiple properties to
--   prevent premature notification while the object is still being
--   modified.
objectFreezeNotify :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()

-- | Gets a named field from the objects table of associations (see
--   <a>objectSetData</a>).
objectGetData :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> m (Ptr ())

-- | Gets a property of an object. <i><tt>value</tt></i> must have been
--   initialized to the expected type of the property (or a type to which
--   the expected type can be transformed) using <a>valueInit</a>.
--   
--   In general, a copy is made of the property contents and the caller is
--   responsible for freeing the memory by calling <a>valueUnset</a>.
--   
--   Note that <a>objectGetProperty</a> is really intended for language
--   bindings, <tt><i>g_object_get()</i></tt> is much more convenient for C
--   programming.
objectGetProperty :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> GValue -> m ()

-- | This function gets back user data pointers stored via
--   <tt><i>g_object_set_qdata()</i></tt>.
objectGetQdata :: (HasCallStack, MonadIO m, IsObject a) => a -> Word32 -> m (Ptr ())

-- | Gets <i><tt>nProperties</tt></i> properties for an
--   <i><tt>object</tt></i>. Obtained properties will be set to
--   <i><tt>values</tt></i>. All properties must be valid. Warnings will be
--   emitted and undefined behaviour may result if invalid properties are
--   passed in.
--   
--   <i>Since: 2.54</i>
objectGetv :: (HasCallStack, MonadIO m, IsObject a) => a -> [Text] -> [GValue] -> m ()

-- | Find the <a>ParamSpec</a> with the given name for an interface.
--   Generally, the interface vtable passed in as <i><tt>gIface</tt></i>
--   will be the default vtable from <a>typeDefaultInterfaceRef</a>, or, if
--   you know the interface has already been loaded,
--   <a>typeDefaultInterfacePeek</a>.
--   
--   <i>Since: 2.4</i>
objectInterfaceFindProperty :: (HasCallStack, MonadIO m) => TypeInterface -> Text -> m GParamSpec

-- | Add a property to an interface; this is only useful for interfaces
--   that are added to GObject-derived types. Adding a property to an
--   interface forces all objects classes with that interface to have a
--   compatible property. The compatible property could be a newly created
--   <a>ParamSpec</a>, but normally <a>objectClassOverrideProperty</a> will
--   be used so that the object class only needs to provide an
--   implementation and inherits the property description, default value,
--   bounds, and so forth from the interface property.
--   
--   This function is meant to be called from the interface's default
--   vtable initialization function (the <i><tt>classInit</tt></i> member
--   of <a>TypeInfo</a>.) It must not be called after after
--   <i><tt>classInit</tt></i> has been called for any object types
--   implementing this interface.
--   
--   If <i><tt>pspec</tt></i> is a floating reference, it will be consumed.
--   
--   <i>Since: 2.4</i>
objectInterfaceInstallProperty :: (HasCallStack, MonadIO m) => TypeInterface -> GParamSpec -> m ()

-- | Checks whether <i><tt>object</tt></i> has a [floating][floating-ref]
--   reference.
--   
--   <i>Since: 2.10</i>
objectIsFloating :: (HasCallStack, MonadIO m, IsObject a) => a -> m Bool

-- | Creates a new instance of a <a>Object</a> subtype and sets its
--   properties.
--   
--   Construction parameters (see <tt><i>G_PARAM_CONSTRUCT</i></tt>,
--   <tt><i>G_PARAM_CONSTRUCT_ONLY</i></tt>) which are not explicitly
--   specified are set to their default values.

-- | <i>Deprecated: (Since version 2.54)Use
--   <tt><i>g_object_new_with_properties()</i></tt> instead.deprecated. See
--   <a>Parameter</a> for more information.</i>
objectNewv :: (HasCallStack, MonadIO m) => GType -> [Parameter] -> m Object

-- | Emits a "notify" signal for the property <i><tt>propertyName</tt></i>
--   on <i><tt>object</tt></i>.
--   
--   When possible, eg. when signaling a property change from within the
--   class that registered the property, you should use
--   <a>objectNotifyByPspec</a> instead.
--   
--   Note that emission of the notify signal may be blocked with
--   <a>objectFreezeNotify</a>. In this case, the signal emissions are
--   queued and will be emitted (in reverse order) when
--   <a>objectThawNotify</a> is called.
objectNotify :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> m ()

-- | Emits a "notify" signal for the property specified by
--   <i><tt>pspec</tt></i> on <i><tt>object</tt></i>.
--   
--   This function omits the property name lookup, hence it is faster than
--   <a>objectNotify</a>.
--   
--   One way to avoid using <a>objectNotify</a> from within the class that
--   registered the properties, and using <a>objectNotifyByPspec</a>
--   instead, is to store the GParamSpec used with
--   <a>objectClassInstallProperty</a> inside a static array, e.g.:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   enum
--   {
--     PROP_0,
--     PROP_FOO,
--     PROP_LAST
--   };
--   
--   static GParamSpec *properties[PROP_LAST];
--   
--   static void
--   my_object_class_init (MyObjectClass *klass)
--   {
--     properties[PROP_FOO] = g_param_spec_int ("foo", "Foo", "The foo",
--                                              0, 100,
--                                              50,
--                                              G_PARAM_READWRITE);
--     g_object_class_install_property (gobject_class,
--                                      PROP_FOO,
--                                      properties[PROP_FOO]);
--   }
--   </pre>
--   
--   and then notify a change on the "foo" property with:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   g_object_notify_by_pspec (self, properties[PROP_FOO]);
--   </pre>
--   
--   <i>Since: 2.26</i>
objectNotifyByPspec :: (HasCallStack, MonadIO m, IsObject a) => a -> GParamSpec -> m ()

-- | Increases the reference count of <i><tt>object</tt></i>.
--   
--   Since GLib 2.56, if <tt>GLIB_VERSION_MAX_ALLOWED</tt> is 2.56 or
--   greater, the type of <i><tt>object</tt></i> will be propagated to the
--   return type (using the GCC <tt><i>typeof()</i></tt> extension), so any
--   casting the caller needs to do on the return type must be explicit.
objectRef :: (HasCallStack, MonadIO m, IsObject a) => a -> m Object

-- | Increase the reference count of <i><tt>object</tt></i>, and possibly
--   remove the [floating][floating-ref] reference, if
--   <i><tt>object</tt></i> has a floating reference.
--   
--   In other words, if the object is floating, then this call "assumes
--   ownership" of the floating reference, converting it to a normal
--   reference by clearing the floating flag while leaving the reference
--   count unchanged. If the object is not floating, then this call adds a
--   new normal reference increasing the reference count by one.
--   
--   Since GLib 2.56, the type of <i><tt>object</tt></i> will be propagated
--   to the return type under the same conditions as for <a>objectRef</a>.
--   
--   <i>Since: 2.10</i>
objectRefSink :: (HasCallStack, MonadIO m, IsObject a) => a -> m Object

-- | Releases all references to other objects. This can be used to break
--   reference cycles.
--   
--   This function should only be called from object system
--   implementations.
objectRunDispose :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()

-- | Each object carries around a table of associations from strings to
--   pointers. This function lets you set an association.
--   
--   If the object already had an association with that name, the old
--   association will be destroyed.
objectSetData :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> Ptr () -> m ()

-- | Like <a>objectSetData</a> except it adds notification for when the
--   association is destroyed, either by setting it to a different value or
--   when the object is destroyed.
--   
--   Note that the <i><tt>destroy</tt></i> callback is not called if
--   <i><tt>data</tt></i> is <a>Nothing</a>.
objectSetDataFull :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> Ptr () -> Maybe (DestroyNotify) -> m ()

-- | Sets a property on an object.
objectSetProperty :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> GValue -> m ()

-- | Remove a specified datum from the object's data associations, without
--   invoking the association's destroy handler.
objectStealData :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> m (Ptr ())

-- | This function gets back user data pointers stored via
--   <tt><i>g_object_set_qdata()</i></tt> and removes the
--   <i><tt>data</tt></i> from object without invoking its
--   <tt><i>destroy()</i></tt> function (if any was set). Usually, calling
--   this function is only required to update user data pointers with a
--   destroy notifier, for example:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   void
--   object_add_to_user_list (GObject     *object,
--                            const gchar *new_string)
--   {
--     // the quark, naming the object data
--     GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
--     // retrive the old string list
--     GList *list = g_object_steal_qdata (object, quark_string_list);
--   
--     // prepend new string
--     list = g_list_prepend (list, g_strdup (new_string));
--     // this changed 'list', so we need to set it again
--     g_object_set_qdata_full (object, quark_string_list, list, free_string_list);
--   }
--   static void
--   free_string_list (gpointer data)
--   {
--     GList *node, *list = data;
--   
--     for (node = list; node; node = node-&gt;next)
--       g_free (node-&gt;data);
--     g_list_free (list);
--   }
--   </pre>
--   
--   Using <a>objectGetQdata</a> in the above example, instead of
--   <a>objectStealQdata</a> would have left the destroy function set, and
--   thus the partial string list would have been freed upon
--   <tt><i>g_object_set_qdata_full()</i></tt>.
objectStealQdata :: (HasCallStack, MonadIO m, IsObject a) => a -> Word32 -> m (Ptr ())

-- | Reverts the effect of a previous call to <a>objectFreezeNotify</a>.
--   The freeze count is decreased on <i><tt>object</tt></i> and when it
--   reaches zero, queued "notify" signals are emitted.
--   
--   Duplicate notifications for each property are squashed so that at most
--   one <a>Object</a>::<tt><i>notify</i></tt> signal is emitted for each
--   property, in the reverse order in which they have been queued.
--   
--   It is an error to call this function when the freeze count is zero.
objectThawNotify :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()

-- | Decreases the reference count of <i><tt>object</tt></i>. When its
--   reference count drops to 0, the object is finalized (i.e. its memory
--   is freed).
--   
--   If the pointer to the <a>Object</a> may be reused in future (for
--   example, if it is an instance variable of another object), it is
--   recommended to clear the pointer to <a>Nothing</a> rather than retain
--   a dangling pointer to a potentially invalid <a>Object</a> instance.
--   Use <tt><i>g_clear_object()</i></tt> for this.
objectUnref :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()

-- | This function essentially limits the life time of the
--   <i><tt>closure</tt></i> to the life time of the object. That is, when
--   the object is finalized, the <i><tt>closure</tt></i> is invalidated by
--   calling <a>closureInvalidate</a> on it, in order to prevent
--   invocations of the closure with a finalized (nonexisting) object.
--   Also, <a>objectRef</a> and <a>objectUnref</a> are added as marshal
--   guards to the <i><tt>closure</tt></i>, to ensure that an extra
--   reference count is held on <i><tt>object</tt></i> during invocation of
--   the <i><tt>closure</tt></i>. Usually, this function will be called on
--   closures that use this <i><tt>object</tt></i> as closure data.
objectWatchClosure :: (HasCallStack, MonadIO m, IsObject a) => a -> Closure -> m ()

-- | Type for the callback on the (unwrapped) C side.
type C_ObjectNotifyCallback = Ptr () -> Ptr GParamSpec -> Ptr () -> IO ()

-- | The notify signal is emitted on an object when one of its properties
--   has its value set through <a>objectSetProperty</a>,
--   <tt><i>g_object_set()</i></tt>, et al.
--   
--   Note that getting this signal doesn’t itself guarantee that the value
--   of the property has actually changed. When it is emitted is determined
--   by the derived GObject class. If the implementor did not create the
--   property with <a>ParamFlagsExplicitNotify</a>, then any call to
--   <a>objectSetProperty</a> results in ::notify being emitted, even if
--   the new value is the same as the old. If they did pass
--   <a>ParamFlagsExplicitNotify</a>, then this signal is emitted only when
--   they explicitly call <a>objectNotify</a> or
--   <a>objectNotifyByPspec</a>, and common practice is to do that only
--   when the value has actually changed.
--   
--   This signal is typically used to obtain change notification for a
--   single property, by specifying the property name as a detail in the
--   <tt><i>g_signal_connect()</i></tt> call, like this:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   g_signal_connect (text_view-&gt;buffer, "notify::paste-target-list",
--                     G_CALLBACK (gtk_text_view_target_list_notify),
--                     text_view)
--   </pre>
--   
--   It is important to note that you must use [canonical parameter
--   names][canonical-parameter-names] as detail strings for the notify
--   signal.
type ObjectNotifyCallback = GParamSpec  /@pspec@/: the 'GI.GObject.Objects.ParamSpec.ParamSpec' of the property which changed.  -> IO ()

-- | Connect a signal handler for the “<tt>notify</tt>” signal, to be run
--   after the default handler. When <a>overloading</a> is enabled, this is
--   equivalent to
--   
--   <pre>
--   <a>after</a> object #notify callback
--   </pre>
afterObjectNotify :: (IsObject a, MonadIO m) => a -> ObjectNotifyCallback -> m SignalHandlerId

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ObjectNotify :: ObjectNotifyCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ObjectNotifyCallback</a>.
mk_ObjectNotifyCallback :: C_ObjectNotifyCallback -> IO (FunPtr C_ObjectNotifyCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ObjectNotifyCallback</a></tt>.
noObjectNotifyCallback :: Maybe ObjectNotifyCallback

-- | Connect a signal handler for the “<tt>notify</tt>” signal, to be run
--   before the default handler. When <a>overloading</a> is enabled, this
--   is equivalent to
--   
--   <pre>
--   <a>on</a> object #notify callback
--   </pre>
onObjectNotify :: (IsObject a, MonadIO m) => a -> ObjectNotifyCallback -> m SignalHandlerId

-- | Wrap a <a>ObjectNotifyCallback</a> into a
--   <a>C_ObjectNotifyCallback</a>.
wrap_ObjectNotifyCallback :: ObjectNotifyCallback -> C_ObjectNotifyCallback
instance (Data.GI.Base.BasicTypes.GObject a, Data.GI.Base.Overloading.UnknownAncestorError GI.GObject.Objects.Object.Object a) => GI.GObject.Objects.Object.IsObject a
instance GI.GObject.Objects.Object.IsObject GI.GObject.Objects.Object.Object
instance Data.GI.Base.BasicTypes.GObject GI.GObject.Objects.Object.Object


module GI.GObject.Objects


-- | An opaque structure used as the base of all interface types.
module GI.GObject.Structs.TypeInterface

-- | Memory-managed wrapper type.
newtype TypeInterface
TypeInterface :: (ManagedPtr TypeInterface) -> TypeInterface

-- | Construct a <a>TypeInterface</a> struct initialized to zero.
newZeroTypeInterface :: MonadIO m => m TypeInterface

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeInterface</a>.
noTypeInterface :: Maybe TypeInterface

-- | Adds <i><tt>prerequisiteType</tt></i> to the list of prerequisites of
--   <i><tt>interfaceType</tt></i>. This means that any type implementing
--   <i><tt>interfaceType</tt></i> must also implement
--   <i><tt>prerequisiteType</tt></i>. Prerequisites can be thought of as
--   an alternative to interface derivation (which GType doesn't support).
--   An interface can have at most one instantiatable prerequisite type.
typeInterfaceAddPrerequisite :: (HasCallStack, MonadIO m) => GType -> GType -> m ()

-- | Returns the <a>TypePlugin</a> structure for the dynamic interface
--   <i><tt>interfaceType</tt></i> which has been added to
--   <i><tt>instanceType</tt></i>, or <a>Nothing</a> if
--   <i><tt>interfaceType</tt></i> has not been added to
--   <i><tt>instanceType</tt></i> or does not have a <a>TypePlugin</a>
--   structure. See <a>typeAddInterfaceDynamic</a>.
typeInterfaceGetPlugin :: (HasCallStack, MonadIO m) => GType -> GType -> m TypePlugin

-- | Returns the <a>TypeInterface</a> structure of an interface to which
--   the passed in class conforms.
typeInterfacePeek :: (HasCallStack, MonadIO m) => TypeClass -> GType -> m TypeInterface

-- | Returns the corresponding <a>TypeInterface</a> structure of the parent
--   type of the instance type to which <i><tt>gIface</tt></i> belongs.
--   This is useful when deriving the implementation of an interface from
--   the parent type and then possibly overriding some methods.
typeInterfacePeekParent :: (HasCallStack, MonadIO m) => TypeInterface -> m TypeInterface

-- | Returns the prerequisites of an interfaces type.
--   
--   <i>Since: 2.2</i>
typeInterfacePrerequisites :: (HasCallStack, MonadIO m) => GType -> m [GType]
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.TypeInterface.TypeInterface
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.TypeInterface.TypeInterface tag


-- | A structure holding information for a specific type. It is filled in
--   by the <a>typeQuery</a> function.
module GI.GObject.Structs.TypeQuery

-- | Memory-managed wrapper type.
newtype TypeQuery
TypeQuery :: (ManagedPtr TypeQuery) -> TypeQuery

-- | Construct a <a>TypeQuery</a> struct initialized to zero.
newZeroTypeQuery :: MonadIO m => m TypeQuery

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeQuery</a>.
noTypeQuery :: Maybe TypeQuery

-- | Get the value of the “<tt>class_size</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeQuery #classSize
--   </pre>
getTypeQueryClassSize :: MonadIO m => TypeQuery -> m Word32

-- | Set the value of the “<tt>class_size</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeQuery [ #classSize <a>:=</a> value ]
--   </pre>
setTypeQueryClassSize :: MonadIO m => TypeQuery -> Word32 -> m ()

-- | Get the value of the “<tt>instance_size</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeQuery #instanceSize
--   </pre>
getTypeQueryInstanceSize :: MonadIO m => TypeQuery -> m Word32

-- | Set the value of the “<tt>instance_size</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeQuery [ #instanceSize <a>:=</a> value ]
--   </pre>
setTypeQueryInstanceSize :: MonadIO m => TypeQuery -> Word32 -> m ()

-- | Get the value of the “<tt>type</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeQuery #type
--   </pre>
getTypeQueryType :: MonadIO m => TypeQuery -> m GType

-- | Set the value of the “<tt>type</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeQuery [ #type <a>:=</a> value ]
--   </pre>
setTypeQueryType :: MonadIO m => TypeQuery -> GType -> m ()

-- | Set the value of the “<tt>type_name</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #typeName
--   </pre>
clearTypeQueryTypeName :: MonadIO m => TypeQuery -> m ()

-- | Get the value of the “<tt>type_name</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeQuery #typeName
--   </pre>
getTypeQueryTypeName :: MonadIO m => TypeQuery -> m (Maybe Text)

-- | Set the value of the “<tt>type_name</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeQuery [ #typeName <a>:=</a> value ]
--   </pre>
setTypeQueryTypeName :: MonadIO m => TypeQuery -> CString -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.TypeQuery.TypeQuery
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.TypeQuery.TypeQuery tag


-- | The GObject type system supports dynamic loading of types. The
--   <a>TypePlugin</a> interface is used to handle the lifecycle of
--   dynamically loaded types. It goes as follows:
--   
--   <ol>
--   <li>The type is initially introduced (usually upon loading the module
--   the first time, or by your main application that knows what modules
--   introduces what types), like this:</li>
--   </ol>
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   new_type_id = g_type_register_dynamic (parent_type_id,
--                                          "TypeName",
--                                          new_type_plugin,
--                                          type_flags);
--   
--   </pre>
--   
--   where <i><tt>newTypePlugin</tt></i> is an implementation of the
--   <a>TypePlugin</a> interface.
--   
--   <ol>
--   <li>The type's implementation is referenced, e.g. through
--   <a>typeClassRef</a> or through
--   <tt><i>g_type_create_instance()</i></tt> (this is being called by
--   <tt><i>g_object_new()</i></tt>) or through one of the above done on a
--   type derived from <i><tt>newTypeId</tt></i>.</li>
--   <li>This causes the type system to load the type's implementation by
--   calling <a>typePluginUse</a> and <a>typePluginCompleteTypeInfo</a> on
--   <i><tt>newTypePlugin</tt></i>.</li>
--   <li>At some point the type's implementation isn't required anymore,
--   e.g. after <a>typeClassUnref</a> or <a>typeFreeInstance</a> (called
--   when the reference count of an instance drops to zero).</li>
--   <li>This causes the type system to throw away the information
--   retrieved from <a>typePluginCompleteTypeInfo</a> and then it calls
--   <a>typePluginUnuse</a> on <i><tt>newTypePlugin</tt></i>.</li>
--   <li>Things may repeat from the second step.</li>
--   </ol>
--   
--   So basically, you need to implement a <a>TypePlugin</a> type that
--   carries a use_count, once use_count goes from zero to one, you need to
--   load the implementation to successfully handle the upcoming
--   <a>typePluginCompleteTypeInfo</a> call. Later, maybe after succeeding
--   use/unuse calls, once use_count drops to zero, you can unload the
--   implementation again. The type system makes sure to call
--   <a>typePluginUse</a> and <a>typePluginCompleteTypeInfo</a> again when
--   the type is needed again.
--   
--   <a>TypeModule</a> is an implementation of <a>TypePlugin</a> that
--   already implements most of this except for the actual module loading
--   and unloading. It even handles multiple registered types per module.
module GI.GObject.Interfaces.TypePlugin

-- | Memory-managed wrapper type.
newtype TypePlugin
TypePlugin :: (ManagedPtr TypePlugin) -> TypePlugin

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>TypePlugin</a>.
noTypePlugin :: Maybe TypePlugin

-- | Type class for types which implement <a>TypePlugin</a>.
class ManagedPtrNewtype a => IsTypePlugin a

-- | Calls the <i><tt>completeInterfaceInfo</tt></i> function from the
--   <tt><i>GTypePluginClass</i></tt> of <i><tt>plugin</tt></i>. There
--   should be no need to use this function outside of the GObject type
--   system itself.
typePluginCompleteInterfaceInfo :: (HasCallStack, MonadIO m, IsTypePlugin a) => a -> GType -> GType -> InterfaceInfo -> m ()

-- | Calls the <i><tt>completeTypeInfo</tt></i> function from the
--   <tt><i>GTypePluginClass</i></tt> of <i><tt>plugin</tt></i>. There
--   should be no need to use this function outside of the GObject type
--   system itself.
typePluginCompleteTypeInfo :: (HasCallStack, MonadIO m, IsTypePlugin a) => a -> GType -> TypeInfo -> TypeValueTable -> m ()

-- | Calls the <i><tt>unusePlugin</tt></i> function from the
--   <tt><i>GTypePluginClass</i></tt> of <i><tt>plugin</tt></i>. There
--   should be no need to use this function outside of the GObject type
--   system itself.
typePluginUnuse :: (HasCallStack, MonadIO m, IsTypePlugin a) => a -> m ()

-- | Calls the <i><tt>usePlugin</tt></i> function from the
--   <tt><i>GTypePluginClass</i></tt> of <i><tt>plugin</tt></i>. There
--   should be no need to use this function outside of the GObject type
--   system itself.
typePluginUse :: (HasCallStack, MonadIO m, IsTypePlugin a) => a -> m ()
instance GI.GObject.Interfaces.TypePlugin.IsTypePlugin GI.GObject.Interfaces.TypePlugin.TypePlugin
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Interfaces.TypePlugin.TypePlugin


module GI.GObject.Interfaces


-- | A <a>ValueArray</a> contains an array of <a>Value</a> elements.
module GI.GObject.Structs.ValueArray

-- | Memory-managed wrapper type.
newtype ValueArray
ValueArray :: (ManagedPtr ValueArray) -> ValueArray

-- | Construct a <a>ValueArray</a> struct initialized to zero.
newZeroValueArray :: MonadIO m => m ValueArray

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>ValueArray</a>.
noValueArray :: Maybe ValueArray

-- | Insert a copy of <i><tt>value</tt></i> as last element of
--   <i><tt>valueArray</tt></i>. If <i><tt>value</tt></i> is
--   <a>Nothing</a>, an uninitialized value is appended.

-- | <i>Deprecated: (Since version 2.32)Use <a>Array</a> and
--   <tt><i>g_array_append_val()</i></tt> instead.</i>
valueArrayAppend :: (HasCallStack, MonadIO m) => ValueArray -> Maybe (GValue) -> m ValueArray

-- | Construct an exact copy of a <a>ValueArray</a> by duplicating all its
--   contents.

-- | <i>Deprecated: (Since version 2.32)Use <a>Array</a> and
--   <tt><i>g_array_ref()</i></tt> instead.</i>
valueArrayCopy :: (HasCallStack, MonadIO m) => ValueArray -> m ValueArray

-- | Return a pointer to the value at <i><tt>index_</tt></i> containd in
--   <i><tt>valueArray</tt></i>.

-- | <i>Deprecated: (Since version 2.32)Use <tt><i>g_array_index()</i></tt>
--   instead.</i>
valueArrayGetNth :: (HasCallStack, MonadIO m) => ValueArray -> Word32 -> m GValue

-- | Insert a copy of <i><tt>value</tt></i> at specified position into
--   <i><tt>valueArray</tt></i>. If <i><tt>value</tt></i> is
--   <a>Nothing</a>, an uninitialized value is inserted.

-- | <i>Deprecated: (Since version 2.32)Use <a>Array</a> and
--   <tt><i>g_array_insert_val()</i></tt> instead.</i>
valueArrayInsert :: (HasCallStack, MonadIO m) => ValueArray -> Word32 -> Maybe (GValue) -> m ValueArray

-- | Allocate and initialize a new <a>ValueArray</a>, optionally preserve
--   space for <i><tt>nPrealloced</tt></i> elements. New arrays always
--   contain 0 elements, regardless of the value of
--   <i><tt>nPrealloced</tt></i>.

-- | <i>Deprecated: (Since version 2.32)Use <a>Array</a> and
--   <tt><i>g_array_sized_new()</i></tt> instead.</i>
valueArrayNew :: (HasCallStack, MonadIO m) => Word32 -> m ValueArray

-- | Insert a copy of <i><tt>value</tt></i> as first element of
--   <i><tt>valueArray</tt></i>. If <i><tt>value</tt></i> is
--   <a>Nothing</a>, an uninitialized value is prepended.

-- | <i>Deprecated: (Since version 2.32)Use <a>Array</a> and
--   <tt><i>g_array_prepend_val()</i></tt> instead.</i>
valueArrayPrepend :: (HasCallStack, MonadIO m) => ValueArray -> Maybe (GValue) -> m ValueArray

-- | Remove the value at position <i><tt>index_</tt></i> from
--   <i><tt>valueArray</tt></i>.

-- | <i>Deprecated: (Since version 2.32)Use <a>Array</a> and
--   <tt><i>g_array_remove_index()</i></tt> instead.</i>
valueArrayRemove :: (HasCallStack, MonadIO m) => ValueArray -> Word32 -> m ValueArray

-- | Sort <i><tt>valueArray</tt></i> using <i><tt>compareFunc</tt></i> to
--   compare the elements according to the semantics of
--   <a>CompareDataFunc</a>.
--   
--   The current implementation uses the same sorting algorithm as standard
--   C <tt><i>qsort()</i></tt> function.

-- | <i>Deprecated: (Since version 2.32)Use <a>Array</a> and
--   <tt><i>g_array_sort_with_data()</i></tt>.</i>
valueArraySort :: (HasCallStack, MonadIO m) => ValueArray -> CompareDataFunc -> m ValueArray

-- | Get the value of the “<tt>n_values</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> valueArray #nValues
--   </pre>
getValueArrayNValues :: MonadIO m => ValueArray -> m Word32

-- | Set the value of the “<tt>n_values</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> valueArray [ #nValues <a>:=</a> value ]
--   </pre>
setValueArrayNValues :: MonadIO m => ValueArray -> Word32 -> m ()

-- | Set the value of the “<tt>values</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #values
--   </pre>
clearValueArrayValues :: MonadIO m => ValueArray -> m ()

-- | Get the value of the “<tt>values</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> valueArray #values
--   </pre>
getValueArrayValues :: MonadIO m => ValueArray -> m (Maybe GValue)

-- | Set the value of the “<tt>values</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> valueArray [ #values <a>:=</a> value ]
--   </pre>
setValueArrayValues :: MonadIO m => ValueArray -> Ptr GValue -> m ()
instance Data.GI.Base.BasicTypes.BoxedObject GI.GObject.Structs.ValueArray.ValueArray
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.ValueArray.ValueArray tag


-- | A structure containing a weak reference to a <a>Object</a>. It can
--   either be empty (i.e. point to <a>Nothing</a>), or point to an object
--   for as long as at least one "strong" reference to that object exists.
--   Before the object's <a>ObjectClass</a>.<tt><i>dispose</i></tt> method
--   is called, every <a>WeakRef</a> associated with becomes empty (i.e.
--   points to <a>Nothing</a>).
--   
--   Like <a>Value</a>, <a>WeakRef</a> can be statically allocated, stack-
--   or heap-allocated, or embedded in larger structures.
--   
--   Unlike <tt><i>g_object_weak_ref()</i></tt> and
--   <tt><i>g_object_add_weak_pointer()</i></tt>, this weak reference is
--   thread-safe: converting a weak pointer to a reference is atomic with
--   respect to invalidation of weak pointers to destroyed objects.
--   
--   If the object's <a>ObjectClass</a>.<tt><i>dispose</i></tt> method
--   results in additional references to the object being held, any
--   <tt><i>GWeakRefs</i></tt> taken before it was disposed will continue
--   to point to <a>Nothing</a>. If <tt><i>GWeakRefs</i></tt> are taken
--   after the object is disposed and re-referenced, they will continue to
--   point to it until its refcount goes back to zero, at which point they
--   too will be invalidated.
module GI.GObject.Structs.WeakRef

-- | Memory-managed wrapper type.
newtype WeakRef
WeakRef :: (ManagedPtr WeakRef) -> WeakRef

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a> <a>WeakRef</a>.
noWeakRef :: Maybe WeakRef
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.WeakRef.WeakRef


module GI.GObject.Callbacks

-- | A callback function used by the type system to finalize those portions
--   of a derived types class structure that were setup from the
--   corresponding <tt><i>GBaseInitFunc()</i></tt> function. Class
--   finalization basically works the inverse way in which class
--   initialization is performed. See <tt><i>GClassInitFunc()</i></tt> for
--   a discussion of the class initialization process.
type BaseFinalizeFunc = TypeClass  /@gClass@/: The 'GI.GObject.Structs.TypeClass.TypeClass' structure to finalize  -> IO ()

-- | Type for the callback on the (unwrapped) C side.
type C_BaseFinalizeFunc = Ptr TypeClass -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_BaseFinalizeFunc :: (HasCallStack, MonadIO m) => FunPtr C_BaseFinalizeFunc -> TypeClass -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_BaseFinalizeFunc :: BaseFinalizeFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_BaseFinalizeFunc</a>.
mk_BaseFinalizeFunc :: C_BaseFinalizeFunc -> IO (FunPtr C_BaseFinalizeFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>BaseFinalizeFunc</a></tt>.
noBaseFinalizeFunc :: Maybe BaseFinalizeFunc

-- | Wrap a <a>BaseFinalizeFunc</a> into a <a>C_BaseFinalizeFunc</a>.
wrap_BaseFinalizeFunc :: Maybe (Ptr (FunPtr C_BaseFinalizeFunc)) -> BaseFinalizeFunc -> C_BaseFinalizeFunc

-- | A callback function used by the type system to do base initialization
--   of the class structures of derived types. It is called as part of the
--   initialization process of all derived classes and should reallocate or
--   reset all dynamic class members copied over from the parent class. For
--   example, class members (such as strings) that are not sufficiently
--   handled by a plain memory copy of the parent class into the derived
--   class have to be altered. See <tt><i>GClassInitFunc()</i></tt> for a
--   discussion of the class initialization process.
type BaseInitFunc = TypeClass  /@gClass@/: The 'GI.GObject.Structs.TypeClass.TypeClass' structure to initialize  -> IO ()

-- | Type for the callback on the (unwrapped) C side.
type C_BaseInitFunc = Ptr TypeClass -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_BaseInitFunc :: (HasCallStack, MonadIO m) => FunPtr C_BaseInitFunc -> TypeClass -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_BaseInitFunc :: BaseInitFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_BaseInitFunc</a>.
mk_BaseInitFunc :: C_BaseInitFunc -> IO (FunPtr C_BaseInitFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>BaseInitFunc</a></tt>.
noBaseInitFunc :: Maybe BaseInitFunc

-- | Wrap a <a>BaseInitFunc</a> into a <a>C_BaseInitFunc</a>.
wrap_BaseInitFunc :: Maybe (Ptr (FunPtr C_BaseInitFunc)) -> BaseInitFunc -> C_BaseInitFunc

-- | A function to be called to transform <i><tt>fromValue</tt></i> to
--   <i><tt>toValue</tt></i>. If this is the <i><tt>transformTo</tt></i>
--   function of a binding, then <i><tt>fromValue</tt></i> is the
--   <i><tt>sourceProperty</tt></i> on the <i><tt>source</tt></i> object,
--   and <i><tt>toValue</tt></i> is the <i><tt>targetProperty</tt></i> on
--   the <i><tt>target</tt></i> object. If this is the
--   <i><tt>transformFrom</tt></i> function of a
--   <a>BindingFlagsBidirectional</a> binding, then those roles are
--   reversed.
--   
--   <i>Since: 2.26</i>
type BindingTransformFunc = Binding  /@binding@/: a 'GI.GObject.Objects.Binding.Binding'  -> GValue  /@fromValue@/: the 'GI.GObject.Structs.Value.Value' containing the value to transform  -> GValue  /@toValue@/: the 'GI.GObject.Structs.Value.Value' in which to store the transformed value  -> IO Bool  __Returns:__ 'True' if the transformation was successful, and 'False' otherwise 

-- | A function to be called to transform <i><tt>fromValue</tt></i> to
--   <i><tt>toValue</tt></i>. If this is the <i><tt>transformTo</tt></i>
--   function of a binding, then <i><tt>fromValue</tt></i> is the
--   <i><tt>sourceProperty</tt></i> on the <i><tt>source</tt></i> object,
--   and <i><tt>toValue</tt></i> is the <i><tt>targetProperty</tt></i> on
--   the <i><tt>target</tt></i> object. If this is the
--   <i><tt>transformFrom</tt></i> function of a
--   <a>BindingFlagsBidirectional</a> binding, then those roles are
--   reversed.
--   
--   <i>Since: 2.26</i>
type BindingTransformFunc_WithClosures = Binding  /@binding@/: a 'GI.GObject.Objects.Binding.Binding'  -> GValue  /@fromValue@/: the 'GI.GObject.Structs.Value.Value' containing the value to transform  -> GValue  /@toValue@/: the 'GI.GObject.Structs.Value.Value' in which to store the transformed value  -> Ptr ()  /@userData@/: data passed to the transform function  -> IO Bool  __Returns:__ 'True' if the transformation was successful, and 'False' otherwise 

-- | Type for the callback on the (unwrapped) C side.
type C_BindingTransformFunc = Ptr Binding -> Ptr GValue -> Ptr GValue -> Ptr () -> IO CInt

-- | A simple wrapper that ignores the closure arguments.
drop_closures_BindingTransformFunc :: BindingTransformFunc -> BindingTransformFunc_WithClosures

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_BindingTransformFunc :: (HasCallStack, MonadIO m, IsBinding a) => FunPtr C_BindingTransformFunc -> a -> GValue -> GValue -> Ptr () -> m Bool

-- | Wrap the callback into a <a>Closure</a>.
genClosure_BindingTransformFunc :: BindingTransformFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_BindingTransformFunc</a>.
mk_BindingTransformFunc :: C_BindingTransformFunc -> IO (FunPtr C_BindingTransformFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>BindingTransformFunc</a></tt>.
noBindingTransformFunc :: Maybe BindingTransformFunc

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>BindingTransformFunc_WithClosures</a></tt>.
noBindingTransformFunc_WithClosures :: Maybe BindingTransformFunc_WithClosures

-- | Wrap a <a>BindingTransformFunc</a> into a
--   <a>C_BindingTransformFunc</a>.
wrap_BindingTransformFunc :: Maybe (Ptr (FunPtr C_BindingTransformFunc)) -> BindingTransformFunc_WithClosures -> C_BindingTransformFunc

-- | This function is provided by the user and should produce a copy of the
--   passed in boxed structure.
type BoxedCopyFunc = Ptr ()  /@boxed@/: The boxed structure to be copied.  -> IO (Ptr ())  __Returns:__ The newly created copy of the boxed structure. 

-- | Type for the callback on the (unwrapped) C side.
type C_BoxedCopyFunc = Ptr () -> IO (Ptr ())

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_BoxedCopyFunc :: (HasCallStack, MonadIO m) => FunPtr C_BoxedCopyFunc -> Ptr () -> m (Ptr ())

-- | Wrap the callback into a <a>Closure</a>.
genClosure_BoxedCopyFunc :: BoxedCopyFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_BoxedCopyFunc</a>.
mk_BoxedCopyFunc :: C_BoxedCopyFunc -> IO (FunPtr C_BoxedCopyFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>BoxedCopyFunc</a></tt>.
noBoxedCopyFunc :: Maybe BoxedCopyFunc

-- | Wrap a <a>BoxedCopyFunc</a> into a <a>C_BoxedCopyFunc</a>.
wrap_BoxedCopyFunc :: Maybe (Ptr (FunPtr C_BoxedCopyFunc)) -> BoxedCopyFunc -> C_BoxedCopyFunc

-- | This function is provided by the user and should free the boxed
--   structure passed.
type BoxedFreeFunc = Ptr ()  /@boxed@/: The boxed structure to be freed.  -> IO ()

-- | Type for the callback on the (unwrapped) C side.
type C_BoxedFreeFunc = Ptr () -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_BoxedFreeFunc :: (HasCallStack, MonadIO m) => FunPtr C_BoxedFreeFunc -> Ptr () -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_BoxedFreeFunc :: BoxedFreeFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_BoxedFreeFunc</a>.
mk_BoxedFreeFunc :: C_BoxedFreeFunc -> IO (FunPtr C_BoxedFreeFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>BoxedFreeFunc</a></tt>.
noBoxedFreeFunc :: Maybe BoxedFreeFunc

-- | Wrap a <a>BoxedFreeFunc</a> into a <a>C_BoxedFreeFunc</a>.
wrap_BoxedFreeFunc :: Maybe (Ptr (FunPtr C_BoxedFreeFunc)) -> BoxedFreeFunc -> C_BoxedFreeFunc

-- | Type for the callback on the (unwrapped) C side.
type C_Callback = IO ()

-- | The type used for callback functions in structure definitions and
--   function signatures. This doesn't mean that all callback functions
--   must take no parameters and return void. The required signature of a
--   callback function is determined by the context in which is used (e.g.
--   the signal to which it is connected). Use <tt><i>G_CALLBACK()</i></tt>
--   to cast the callback function to a <a>Callback</a>.
type Callback = IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_Callback :: (HasCallStack, MonadIO m) => FunPtr C_Callback -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_Callback :: Callback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_Callback</a>.
mk_Callback :: C_Callback -> IO (FunPtr C_Callback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>Callback</a></tt>.
noCallback :: Maybe Callback

-- | Wrap a <a>Callback</a> into a <a>C_Callback</a>.
wrap_Callback :: Maybe (Ptr (FunPtr C_Callback)) -> Callback -> C_Callback

-- | Type for the callback on the (unwrapped) C side.
type C_ClassFinalizeFunc = Ptr TypeClass -> Ptr () -> IO ()

-- | A callback function used by the type system to finalize a class. This
--   function is rarely needed, as dynamically allocated class resources
--   should be handled by <tt><i>GBaseInitFunc()</i></tt> and
--   <tt><i>GBaseFinalizeFunc()</i></tt>. Also, specification of a
--   <tt><i>GClassFinalizeFunc()</i></tt> in the <a>TypeInfo</a> structure
--   of a static type is invalid, because classes of static types will
--   never be finalized (they are artificially kept alive when their
--   reference count drops to zero).
type ClassFinalizeFunc = TypeClass  /@gClass@/: The 'GI.GObject.Structs.TypeClass.TypeClass' structure to finalize  -> Ptr ()  /@classData@/: The /@classData@/ member supplied via the 'GI.GObject.Structs.TypeInfo.TypeInfo' structure  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ClassFinalizeFunc :: (HasCallStack, MonadIO m) => FunPtr C_ClassFinalizeFunc -> TypeClass -> Ptr () -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ClassFinalizeFunc :: ClassFinalizeFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ClassFinalizeFunc</a>.
mk_ClassFinalizeFunc :: C_ClassFinalizeFunc -> IO (FunPtr C_ClassFinalizeFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ClassFinalizeFunc</a></tt>.
noClassFinalizeFunc :: Maybe ClassFinalizeFunc

-- | Wrap a <a>ClassFinalizeFunc</a> into a <a>C_ClassFinalizeFunc</a>.
wrap_ClassFinalizeFunc :: Maybe (Ptr (FunPtr C_ClassFinalizeFunc)) -> ClassFinalizeFunc -> C_ClassFinalizeFunc

-- | Type for the callback on the (unwrapped) C side.
type C_ClassInitFunc = Ptr TypeClass -> Ptr () -> IO ()

-- | A callback function used by the type system to initialize the class of
--   a specific type. This function should initialize all static class
--   members.
--   
--   The initialization process of a class involves:
--   
--   <ul>
--   <li>Copying common members from the parent class over to the derived
--   class structure.</li>
--   <li>Zero initialization of the remaining members not copied over from
--   the parent class.</li>
--   <li>Invocation of the <tt><i>GBaseInitFunc()</i></tt> initializers of
--   all parent types and the class' type.</li>
--   <li>Invocation of the class' <tt><i>GClassInitFunc()</i></tt>
--   initializer.</li>
--   </ul>
--   
--   Since derived classes are partially initialized through a memory copy
--   of the parent class, the general rule is that
--   <tt><i>GBaseInitFunc()</i></tt> and
--   <tt><i>GBaseFinalizeFunc()</i></tt> should take care of necessary
--   reinitialization and release of those class members that were
--   introduced by the type that specified these
--   <tt><i>GBaseInitFunc()</i></tt>/<tt><i>GBaseFinalizeFunc()</i></tt>.
--   <tt><i>GClassInitFunc()</i></tt> should only care about initializing
--   static class members, while dynamic class members (such as allocated
--   strings or reference counted resources) are better handled by a
--   <tt><i>GBaseInitFunc()</i></tt> for this type, so proper
--   initialization of the dynamic class members is performed for class
--   initialization of derived types as well.
--   
--   An example may help to correspond the intend of the different class
--   initializers:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   typedef struct {
--     GObjectClass parent_class;
--     gint         static_integer;
--     gchar       *dynamic_string;
--   } TypeAClass;
--   static void
--   type_a_base_class_init (TypeAClass *class)
--   {
--     class-&gt;dynamic_string = g_strdup ("some string");
--   }
--   static void
--   type_a_base_class_finalize (TypeAClass *class)
--   {
--     g_free (class-&gt;dynamic_string);
--   }
--   static void
--   type_a_class_init (TypeAClass *class)
--   {
--     class-&gt;static_integer = 42;
--   }
--   
--   typedef struct {
--     TypeAClass   parent_class;
--     gfloat       static_float;
--     GString     *dynamic_gstring;
--   } TypeBClass;
--   static void
--   type_b_base_class_init (TypeBClass *class)
--   {
--     class-&gt;dynamic_gstring = g_string_new ("some other string");
--   }
--   static void
--   type_b_base_class_finalize (TypeBClass *class)
--   {
--     g_string_free (class-&gt;dynamic_gstring);
--   }
--   static void
--   type_b_class_init (TypeBClass *class)
--   {
--     class-&gt;static_float = 3.14159265358979323846;
--   }
--   </pre>
--   
--   Initialization of TypeBClass will first cause initialization of
--   TypeAClass (derived classes reference their parent classes, see
--   <a>typeClassRef</a> on this).
--   
--   Initialization of TypeAClass roughly involves zero-initializing its
--   fields, then calling its <tt><i>GBaseInitFunc()</i></tt>
--   <tt><i>type_a_base_class_init()</i></tt> to allocate its dynamic
--   members (dynamic_string), and finally calling its
--   <tt><i>GClassInitFunc()</i></tt> <tt><i>type_a_class_init()</i></tt>
--   to initialize its static members (static_integer). The first step in
--   the initialization process of TypeBClass is then a plain memory copy
--   of the contents of TypeAClass into TypeBClass and zero-initialization
--   of the remaining fields in TypeBClass. The dynamic members of
--   TypeAClass within TypeBClass now need reinitialization which is
--   performed by calling <tt><i>type_a_base_class_init()</i></tt> with an
--   argument of TypeBClass.
--   
--   After that, the <tt><i>GBaseInitFunc()</i></tt> of TypeBClass,
--   <tt><i>type_b_base_class_init()</i></tt> is called to allocate the
--   dynamic members of TypeBClass (dynamic_gstring), and finally the
--   <tt><i>GClassInitFunc()</i></tt> of TypeBClass,
--   <tt><i>type_b_class_init()</i></tt>, is called to complete the
--   initialization process with the static members (static_float).
--   
--   Corresponding finalization counter parts to the
--   <tt><i>GBaseInitFunc()</i></tt> functions have to be provided to
--   release allocated resources at class finalization time.
type ClassInitFunc = TypeClass  /@gClass@/: The 'GI.GObject.Structs.TypeClass.TypeClass' structure to initialize.  -> Ptr ()  /@classData@/: The /@classData@/ member supplied via the 'GI.GObject.Structs.TypeInfo.TypeInfo' structure.  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ClassInitFunc :: (HasCallStack, MonadIO m) => FunPtr C_ClassInitFunc -> TypeClass -> Ptr () -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ClassInitFunc :: ClassInitFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ClassInitFunc</a>.
mk_ClassInitFunc :: C_ClassInitFunc -> IO (FunPtr C_ClassInitFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ClassInitFunc</a></tt>.
noClassInitFunc :: Maybe ClassInitFunc

-- | Wrap a <a>ClassInitFunc</a> into a <a>C_ClassInitFunc</a>.
wrap_ClassInitFunc :: Maybe (Ptr (FunPtr C_ClassInitFunc)) -> ClassInitFunc -> C_ClassInitFunc

-- | Type for the callback on the (unwrapped) C side.
type C_ClosureMarshalFieldCallback = Ptr Closure -> Ptr GValue -> Word32 -> Ptr GValue -> Ptr () -> Ptr () -> IO ()

-- | <i>No description available in the introspection data.</i>
type ClosureMarshalFieldCallback = Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ClosureMarshalFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_ClosureMarshalFieldCallback -> Closure -> GValue -> Word32 -> GValue -> Ptr () -> Ptr () -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ClosureMarshalFieldCallback :: ClosureMarshalFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ClosureMarshalFieldCallback</a>.
mk_ClosureMarshalFieldCallback :: C_ClosureMarshalFieldCallback -> IO (FunPtr C_ClosureMarshalFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ClosureMarshalFieldCallback</a></tt>.
noClosureMarshalFieldCallback :: Maybe ClosureMarshalFieldCallback

-- | Wrap a <a>ClosureMarshalFieldCallback</a> into a
--   <a>C_ClosureMarshalFieldCallback</a>.
wrap_ClosureMarshalFieldCallback :: Maybe (Ptr (FunPtr C_ClosureMarshalFieldCallback)) -> ClosureMarshalFieldCallback -> C_ClosureMarshalFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_ClosureNotify = Ptr () -> Ptr Closure -> IO ()

-- | The type used for the various notification callbacks which can be
--   registered on closures.
type ClosureNotify = Ptr ()  /@data@/: data specified when registering the notification callback  -> Closure  /@closure@/: the 'GI.GObject.Structs.Closure.Closure' on which the notification is emitted  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ClosureNotify :: (HasCallStack, MonadIO m) => FunPtr C_ClosureNotify -> Ptr () -> Closure -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ClosureNotify :: ClosureNotify -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ClosureNotify</a>.
mk_ClosureNotify :: C_ClosureNotify -> IO (FunPtr C_ClosureNotify)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ClosureNotify</a></tt>.
noClosureNotify :: Maybe ClosureNotify

-- | Wrap a <a>ClosureNotify</a> into a <a>C_ClosureNotify</a>.
wrap_ClosureNotify :: Maybe (Ptr (FunPtr C_ClosureNotify)) -> ClosureNotify -> C_ClosureNotify

-- | Type for the callback on the (unwrapped) C side.
type C_InstanceInitFunc = Ptr TypeInstance -> Ptr TypeClass -> IO ()

-- | A callback function used by the type system to initialize a new
--   instance of a type. This function initializes all instance members and
--   allocates any resources required by it.
--   
--   Initialization of a derived instance involves calling all its parent
--   types instance initializers, so the class member of the instance is
--   altered during its initialization to always point to the class that
--   belongs to the type the current initializer was introduced for.
--   
--   The extended members of <i><tt>instance</tt></i> are guaranteed to
--   have been filled with zeros before this function is called.
type InstanceInitFunc = TypeInstance  /@instance@/: The instance to initialize  -> TypeClass  /@gClass@/: The class of the type the instance is created for  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_InstanceInitFunc :: (HasCallStack, MonadIO m) => FunPtr C_InstanceInitFunc -> TypeInstance -> TypeClass -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_InstanceInitFunc :: InstanceInitFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_InstanceInitFunc</a>.
mk_InstanceInitFunc :: C_InstanceInitFunc -> IO (FunPtr C_InstanceInitFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>InstanceInitFunc</a></tt>.
noInstanceInitFunc :: Maybe InstanceInitFunc

-- | Wrap a <a>InstanceInitFunc</a> into a <a>C_InstanceInitFunc</a>.
wrap_InstanceInitFunc :: Maybe (Ptr (FunPtr C_InstanceInitFunc)) -> InstanceInitFunc -> C_InstanceInitFunc

-- | Type for the callback on the (unwrapped) C side.
type C_InterfaceFinalizeFunc = Ptr TypeInterface -> Ptr () -> IO ()

-- | A callback function used by the type system to finalize an interface.
--   This function should destroy any internal data and release any
--   resources allocated by the corresponding
--   <tt><i>GInterfaceInitFunc()</i></tt> function.
type InterfaceFinalizeFunc = TypeInterface  /@gIface@/: The interface structure to finalize  -> Ptr ()  /@ifaceData@/: The /@interfaceData@/ supplied via the 'GI.GObject.Structs.InterfaceInfo.InterfaceInfo' structure  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_InterfaceFinalizeFunc :: (HasCallStack, MonadIO m) => FunPtr C_InterfaceFinalizeFunc -> TypeInterface -> Ptr () -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_InterfaceFinalizeFunc :: InterfaceFinalizeFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_InterfaceFinalizeFunc</a>.
mk_InterfaceFinalizeFunc :: C_InterfaceFinalizeFunc -> IO (FunPtr C_InterfaceFinalizeFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>InterfaceFinalizeFunc</a></tt>.
noInterfaceFinalizeFunc :: Maybe InterfaceFinalizeFunc

-- | Wrap a <a>InterfaceFinalizeFunc</a> into a
--   <a>C_InterfaceFinalizeFunc</a>.
wrap_InterfaceFinalizeFunc :: Maybe (Ptr (FunPtr C_InterfaceFinalizeFunc)) -> InterfaceFinalizeFunc -> C_InterfaceFinalizeFunc

-- | Type for the callback on the (unwrapped) C side.
type C_InterfaceInitFunc = Ptr TypeInterface -> Ptr () -> IO ()

-- | A callback function used by the type system to initialize a new
--   interface. This function should initialize all internal data and
--   allocate any resources required by the interface.
--   
--   The members of <i><tt>ifaceData</tt></i> are guaranteed to have been
--   filled with zeros before this function is called.
type InterfaceInitFunc = TypeInterface  /@gIface@/: The interface structure to initialize  -> Ptr ()  /@ifaceData@/: The /@interfaceData@/ supplied via the 'GI.GObject.Structs.InterfaceInfo.InterfaceInfo' structure  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_InterfaceInitFunc :: (HasCallStack, MonadIO m) => FunPtr C_InterfaceInitFunc -> TypeInterface -> Ptr () -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_InterfaceInitFunc :: InterfaceInitFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_InterfaceInitFunc</a>.
mk_InterfaceInitFunc :: C_InterfaceInitFunc -> IO (FunPtr C_InterfaceInitFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>InterfaceInitFunc</a></tt>.
noInterfaceInitFunc :: Maybe InterfaceInitFunc

-- | Wrap a <a>InterfaceInitFunc</a> into a <a>C_InterfaceInitFunc</a>.
wrap_InterfaceInitFunc :: Maybe (Ptr (FunPtr C_InterfaceInitFunc)) -> InterfaceInitFunc -> C_InterfaceInitFunc

-- | Type for the callback on the (unwrapped) C side.
type C_ObjectFinalizeFunc = Ptr Object -> IO ()

-- | The type of the <i><tt>finalize</tt></i> function of
--   <a>ObjectClass</a>.
type ObjectFinalizeFunc = Object  /@object@/: the 'GI.GObject.Objects.Object.Object' being finalized  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ObjectFinalizeFunc :: (HasCallStack, MonadIO m, IsObject a) => FunPtr C_ObjectFinalizeFunc -> a -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ObjectFinalizeFunc :: ObjectFinalizeFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ObjectFinalizeFunc</a>.
mk_ObjectFinalizeFunc :: C_ObjectFinalizeFunc -> IO (FunPtr C_ObjectFinalizeFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ObjectFinalizeFunc</a></tt>.
noObjectFinalizeFunc :: Maybe ObjectFinalizeFunc

-- | Wrap a <a>ObjectFinalizeFunc</a> into a <a>C_ObjectFinalizeFunc</a>.
wrap_ObjectFinalizeFunc :: Maybe (Ptr (FunPtr C_ObjectFinalizeFunc)) -> ObjectFinalizeFunc -> C_ObjectFinalizeFunc

-- | Type for the callback on the (unwrapped) C side.
type C_ObjectGetPropertyFunc = Ptr Object -> Word32 -> Ptr GValue -> Ptr GParamSpec -> IO ()

-- | The type of the <i><tt>getProperty</tt></i> function of
--   <a>ObjectClass</a>.
type ObjectGetPropertyFunc = Object  /@object@/: a 'GI.GObject.Objects.Object.Object'  -> Word32  /@propertyId@/: the numeric id under which the property was registered with 'GI.GObject.Structs.ObjectClass.objectClassInstallProperty'.  -> GValue  /@value@/: a 'GI.GObject.Structs.Value.Value' to return the property value in  -> GParamSpec  /@pspec@/: the 'GI.GObject.Objects.ParamSpec.ParamSpec' describing the property  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ObjectGetPropertyFunc :: (HasCallStack, MonadIO m, IsObject a) => FunPtr C_ObjectGetPropertyFunc -> a -> Word32 -> GValue -> GParamSpec -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ObjectGetPropertyFunc :: ObjectGetPropertyFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ObjectGetPropertyFunc</a>.
mk_ObjectGetPropertyFunc :: C_ObjectGetPropertyFunc -> IO (FunPtr C_ObjectGetPropertyFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ObjectGetPropertyFunc</a></tt>.
noObjectGetPropertyFunc :: Maybe ObjectGetPropertyFunc

-- | Wrap a <a>ObjectGetPropertyFunc</a> into a
--   <a>C_ObjectGetPropertyFunc</a>.
wrap_ObjectGetPropertyFunc :: Maybe (Ptr (FunPtr C_ObjectGetPropertyFunc)) -> ObjectGetPropertyFunc -> C_ObjectGetPropertyFunc

-- | Type for the callback on the (unwrapped) C side.
type C_ObjectSetPropertyFunc = Ptr Object -> Word32 -> Ptr GValue -> Ptr GParamSpec -> IO ()

-- | The type of the <i><tt>setProperty</tt></i> function of
--   <a>ObjectClass</a>.
type ObjectSetPropertyFunc = Object  /@object@/: a 'GI.GObject.Objects.Object.Object'  -> Word32  /@propertyId@/: the numeric id under which the property was registered with 'GI.GObject.Structs.ObjectClass.objectClassInstallProperty'.  -> GValue  /@value@/: the new value for the property  -> GParamSpec  /@pspec@/: the 'GI.GObject.Objects.ParamSpec.ParamSpec' describing the property  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ObjectSetPropertyFunc :: (HasCallStack, MonadIO m, IsObject a) => FunPtr C_ObjectSetPropertyFunc -> a -> Word32 -> GValue -> GParamSpec -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ObjectSetPropertyFunc :: ObjectSetPropertyFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ObjectSetPropertyFunc</a>.
mk_ObjectSetPropertyFunc :: C_ObjectSetPropertyFunc -> IO (FunPtr C_ObjectSetPropertyFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ObjectSetPropertyFunc</a></tt>.
noObjectSetPropertyFunc :: Maybe ObjectSetPropertyFunc

-- | Wrap a <a>ObjectSetPropertyFunc</a> into a
--   <a>C_ObjectSetPropertyFunc</a>.
wrap_ObjectSetPropertyFunc :: Maybe (Ptr (FunPtr C_ObjectSetPropertyFunc)) -> ObjectSetPropertyFunc -> C_ObjectSetPropertyFunc

-- | Type for the callback on the (unwrapped) C side.
type C_ParamSpecTypeInfoFinalizeFieldCallback = Ptr GParamSpec -> IO ()

-- | <i>No description available in the introspection data.</i>
type ParamSpecTypeInfoFinalizeFieldCallback = GParamSpec -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ParamSpecTypeInfoFinalizeFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_ParamSpecTypeInfoFinalizeFieldCallback -> GParamSpec -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ParamSpecTypeInfoFinalizeFieldCallback :: ParamSpecTypeInfoFinalizeFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ParamSpecTypeInfoFinalizeFieldCallback</a>.
mk_ParamSpecTypeInfoFinalizeFieldCallback :: C_ParamSpecTypeInfoFinalizeFieldCallback -> IO (FunPtr C_ParamSpecTypeInfoFinalizeFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ParamSpecTypeInfoFinalizeFieldCallback</a></tt>.
noParamSpecTypeInfoFinalizeFieldCallback :: Maybe ParamSpecTypeInfoFinalizeFieldCallback

-- | Wrap a <a>ParamSpecTypeInfoFinalizeFieldCallback</a> into a
--   <a>C_ParamSpecTypeInfoFinalizeFieldCallback</a>.
wrap_ParamSpecTypeInfoFinalizeFieldCallback :: Maybe (Ptr (FunPtr C_ParamSpecTypeInfoFinalizeFieldCallback)) -> ParamSpecTypeInfoFinalizeFieldCallback -> C_ParamSpecTypeInfoFinalizeFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_ParamSpecTypeInfoInstanceInitFieldCallback = Ptr GParamSpec -> IO ()

-- | <i>No description available in the introspection data.</i>
type ParamSpecTypeInfoInstanceInitFieldCallback = GParamSpec -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ParamSpecTypeInfoInstanceInitFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback -> GParamSpec -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ParamSpecTypeInfoInstanceInitFieldCallback :: ParamSpecTypeInfoInstanceInitFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ParamSpecTypeInfoInstanceInitFieldCallback</a>.
mk_ParamSpecTypeInfoInstanceInitFieldCallback :: C_ParamSpecTypeInfoInstanceInitFieldCallback -> IO (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ParamSpecTypeInfoInstanceInitFieldCallback</a></tt>.
noParamSpecTypeInfoInstanceInitFieldCallback :: Maybe ParamSpecTypeInfoInstanceInitFieldCallback

-- | Wrap a <a>ParamSpecTypeInfoInstanceInitFieldCallback</a> into a
--   <a>C_ParamSpecTypeInfoInstanceInitFieldCallback</a>.
wrap_ParamSpecTypeInfoInstanceInitFieldCallback :: Maybe (Ptr (FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback)) -> ParamSpecTypeInfoInstanceInitFieldCallback -> C_ParamSpecTypeInfoInstanceInitFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_ParamSpecTypeInfoValueSetDefaultFieldCallback = Ptr GParamSpec -> Ptr GValue -> IO ()

-- | <i>No description available in the introspection data.</i>
type ParamSpecTypeInfoValueSetDefaultFieldCallback = GParamSpec -> GValue -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ParamSpecTypeInfoValueSetDefaultFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback -> GParamSpec -> GValue -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ParamSpecTypeInfoValueSetDefaultFieldCallback :: ParamSpecTypeInfoValueSetDefaultFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ParamSpecTypeInfoValueSetDefaultFieldCallback</a>.
mk_ParamSpecTypeInfoValueSetDefaultFieldCallback :: C_ParamSpecTypeInfoValueSetDefaultFieldCallback -> IO (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ParamSpecTypeInfoValueSetDefaultFieldCallback</a></tt>.
noParamSpecTypeInfoValueSetDefaultFieldCallback :: Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback

-- | Wrap a <a>ParamSpecTypeInfoValueSetDefaultFieldCallback</a> into a
--   <a>C_ParamSpecTypeInfoValueSetDefaultFieldCallback</a>.
wrap_ParamSpecTypeInfoValueSetDefaultFieldCallback :: Maybe (Ptr (FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback)) -> ParamSpecTypeInfoValueSetDefaultFieldCallback -> C_ParamSpecTypeInfoValueSetDefaultFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_ParamSpecTypeInfoValueValidateFieldCallback = Ptr GParamSpec -> Ptr GValue -> IO CInt

-- | <i>No description available in the introspection data.</i>
type ParamSpecTypeInfoValueValidateFieldCallback = GParamSpec -> GValue -> IO Bool

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ParamSpecTypeInfoValueValidateFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback -> GParamSpec -> GValue -> m Bool

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ParamSpecTypeInfoValueValidateFieldCallback :: ParamSpecTypeInfoValueValidateFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ParamSpecTypeInfoValueValidateFieldCallback</a>.
mk_ParamSpecTypeInfoValueValidateFieldCallback :: C_ParamSpecTypeInfoValueValidateFieldCallback -> IO (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ParamSpecTypeInfoValueValidateFieldCallback</a></tt>.
noParamSpecTypeInfoValueValidateFieldCallback :: Maybe ParamSpecTypeInfoValueValidateFieldCallback

-- | Wrap a <a>ParamSpecTypeInfoValueValidateFieldCallback</a> into a
--   <a>C_ParamSpecTypeInfoValueValidateFieldCallback</a>.
wrap_ParamSpecTypeInfoValueValidateFieldCallback :: Maybe (Ptr (FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback)) -> ParamSpecTypeInfoValueValidateFieldCallback -> C_ParamSpecTypeInfoValueValidateFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_ParamSpecTypeInfoValuesCmpFieldCallback = Ptr GParamSpec -> Ptr GValue -> Ptr GValue -> IO Int32

-- | <i>No description available in the introspection data.</i>
type ParamSpecTypeInfoValuesCmpFieldCallback = GParamSpec -> GValue -> GValue -> IO Int32

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ParamSpecTypeInfoValuesCmpFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback -> GParamSpec -> GValue -> GValue -> m Int32

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ParamSpecTypeInfoValuesCmpFieldCallback :: ParamSpecTypeInfoValuesCmpFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ParamSpecTypeInfoValuesCmpFieldCallback</a>.
mk_ParamSpecTypeInfoValuesCmpFieldCallback :: C_ParamSpecTypeInfoValuesCmpFieldCallback -> IO (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ParamSpecTypeInfoValuesCmpFieldCallback</a></tt>.
noParamSpecTypeInfoValuesCmpFieldCallback :: Maybe ParamSpecTypeInfoValuesCmpFieldCallback

-- | Wrap a <a>ParamSpecTypeInfoValuesCmpFieldCallback</a> into a
--   <a>C_ParamSpecTypeInfoValuesCmpFieldCallback</a>.
wrap_ParamSpecTypeInfoValuesCmpFieldCallback :: Maybe (Ptr (FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback)) -> ParamSpecTypeInfoValuesCmpFieldCallback -> C_ParamSpecTypeInfoValuesCmpFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_SignalAccumulator = Ptr SignalInvocationHint -> Ptr GValue -> Ptr GValue -> Ptr () -> IO CInt

-- | The signal accumulator is a special callback function that can be used
--   to collect return values of the various callbacks that are called
--   during a signal emission. The signal accumulator is specified at
--   signal creation time, if it is left <a>Nothing</a>, no accumulation of
--   callback return values is performed. The return value of signal
--   emissions is then the value returned by the last callback.
type SignalAccumulator = SignalInvocationHint  /@ihint@/: Signal invocation hint, see 'GI.GObject.Structs.SignalInvocationHint.SignalInvocationHint'.  -> GValue  /@returnAccu@/: Accumulator to collect callback return values in, this is the return value of the current signal emission.  -> GValue  /@handlerReturn@/: A 'GI.GObject.Structs.Value.Value' holding the return value of the signal handler.  -> Ptr ()  /@data@/: Callback data that was specified when creating the signal.  -> IO Bool  __Returns:__ The accumulator function returns whether the signal emission should be aborted. Returning 'False' means to abort the current emission and 'True' is returned for continuation. 

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_SignalAccumulator :: (HasCallStack, MonadIO m) => FunPtr C_SignalAccumulator -> SignalInvocationHint -> GValue -> GValue -> Ptr () -> m Bool

-- | Wrap the callback into a <a>Closure</a>.
genClosure_SignalAccumulator :: SignalAccumulator -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_SignalAccumulator</a>.
mk_SignalAccumulator :: C_SignalAccumulator -> IO (FunPtr C_SignalAccumulator)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>SignalAccumulator</a></tt>.
noSignalAccumulator :: Maybe SignalAccumulator

-- | Wrap a <a>SignalAccumulator</a> into a <a>C_SignalAccumulator</a>.
wrap_SignalAccumulator :: Maybe (Ptr (FunPtr C_SignalAccumulator)) -> SignalAccumulator -> C_SignalAccumulator

-- | Type for the callback on the (unwrapped) C side.
type C_SignalEmissionHook = Ptr SignalInvocationHint -> Word32 -> Ptr GValue -> Ptr () -> IO CInt

-- | A simple function pointer to get invoked when the signal is emitted.
--   This allows you to tie a hook to the signal type, so that it will trap
--   all emissions of that signal, from any object.
--   
--   You may not attach these to signals created with the
--   <tt><i>G_SIGNAL_NO_HOOKS</i></tt> flag.
type SignalEmissionHook = SignalInvocationHint  /@ihint@/: Signal invocation hint, see 'GI.GObject.Structs.SignalInvocationHint.SignalInvocationHint'.  -> [GValue]  /@paramValues@/: the instance on which the signal was emitted, followed by the parameters of the emission.  -> Ptr ()  /@data@/: user data associated with the hook.  -> IO Bool  __Returns:__ whether it wants to stay connected. If it returns 'False', the signal hook is disconnected (and destroyed). 

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_SignalEmissionHook :: (HasCallStack, MonadIO m) => FunPtr C_SignalEmissionHook -> SignalInvocationHint -> [GValue] -> Ptr () -> m Bool

-- | Wrap the callback into a <a>Closure</a>.
genClosure_SignalEmissionHook :: SignalEmissionHook -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_SignalEmissionHook</a>.
mk_SignalEmissionHook :: C_SignalEmissionHook -> IO (FunPtr C_SignalEmissionHook)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>SignalEmissionHook</a></tt>.
noSignalEmissionHook :: Maybe SignalEmissionHook

-- | Wrap a <a>SignalEmissionHook</a> into a <a>C_SignalEmissionHook</a>.
wrap_SignalEmissionHook :: Maybe (Ptr (FunPtr C_SignalEmissionHook)) -> SignalEmissionHook -> C_SignalEmissionHook

-- | Type for the callback on the (unwrapped) C side.
type C_ToggleNotify = Ptr () -> Ptr Object -> CInt -> IO ()

-- | A callback function used for notification when the state of a toggle
--   reference changes. See <tt><i>g_object_add_toggle_ref()</i></tt>.
type ToggleNotify = Ptr ()  /@data@/: Callback data passed to @/g_object_add_toggle_ref()/@  -> Object  /@object@/: The object on which @/g_object_add_toggle_ref()/@ was called.  -> Bool  /@isLastRef@/: 'True' if the toggle reference is now the last reference to the object. 'False' if the toggle reference was the last reference and there are now other references.  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ToggleNotify :: (HasCallStack, MonadIO m, IsObject a) => FunPtr C_ToggleNotify -> Ptr () -> a -> Bool -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ToggleNotify :: ToggleNotify -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ToggleNotify</a>.
mk_ToggleNotify :: C_ToggleNotify -> IO (FunPtr C_ToggleNotify)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ToggleNotify</a></tt>.
noToggleNotify :: Maybe ToggleNotify

-- | Wrap a <a>ToggleNotify</a> into a <a>C_ToggleNotify</a>.
wrap_ToggleNotify :: Maybe (Ptr (FunPtr C_ToggleNotify)) -> ToggleNotify -> C_ToggleNotify

-- | Type for the callback on the (unwrapped) C side.
type C_TypeClassCacheFunc = Ptr () -> Ptr TypeClass -> IO CInt

-- | A callback function which is called when the reference count of a
--   class drops to zero. It may use <a>typeClassRef</a> to prevent the
--   class from being freed. You should not call <a>typeClassUnref</a> from
--   a <a>TypeClassCacheFunc</a> function to prevent infinite recursion,
--   use <tt><i>g_type_class_unref_uncached()</i></tt> instead.
--   
--   The functions have to check the class id passed in to figure whether
--   they actually want to cache the class of this type, since all classes
--   are routed through the same <a>TypeClassCacheFunc</a> chain.
type TypeClassCacheFunc = Ptr ()  /@cacheData@/: data that was given to the @/g_type_add_class_cache_func()/@ call  -> TypeClass  /@gClass@/: The 'GI.GObject.Structs.TypeClass.TypeClass' structure which is unreferenced  -> IO Bool  __Returns:__ 'True' to stop further @/GTypeClassCacheFuncs/@ from being called, 'False' to continue 

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypeClassCacheFunc :: (HasCallStack, MonadIO m) => FunPtr C_TypeClassCacheFunc -> Ptr () -> TypeClass -> m Bool

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypeClassCacheFunc :: TypeClassCacheFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypeClassCacheFunc</a>.
mk_TypeClassCacheFunc :: C_TypeClassCacheFunc -> IO (FunPtr C_TypeClassCacheFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeClassCacheFunc</a></tt>.
noTypeClassCacheFunc :: Maybe TypeClassCacheFunc

-- | Wrap a <a>TypeClassCacheFunc</a> into a <a>C_TypeClassCacheFunc</a>.
wrap_TypeClassCacheFunc :: Maybe (Ptr (FunPtr C_TypeClassCacheFunc)) -> TypeClassCacheFunc -> C_TypeClassCacheFunc

-- | Type for the callback on the (unwrapped) C side.
type C_TypeInterfaceCheckFunc = Ptr () -> Ptr TypeInterface -> IO ()

-- | A callback called after an interface vtable is initialized. See
--   <tt><i>g_type_add_interface_check()</i></tt>.
--   
--   <i>Since: 2.4</i>
type TypeInterfaceCheckFunc = Ptr ()  /@checkData@/: data passed to @/g_type_add_interface_check()/@  -> TypeInterface  /@gIface@/: the interface that has been initialized  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypeInterfaceCheckFunc :: (HasCallStack, MonadIO m) => FunPtr C_TypeInterfaceCheckFunc -> Ptr () -> TypeInterface -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypeInterfaceCheckFunc :: TypeInterfaceCheckFunc -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypeInterfaceCheckFunc</a>.
mk_TypeInterfaceCheckFunc :: C_TypeInterfaceCheckFunc -> IO (FunPtr C_TypeInterfaceCheckFunc)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeInterfaceCheckFunc</a></tt>.
noTypeInterfaceCheckFunc :: Maybe TypeInterfaceCheckFunc

-- | Wrap a <a>TypeInterfaceCheckFunc</a> into a
--   <a>C_TypeInterfaceCheckFunc</a>.
wrap_TypeInterfaceCheckFunc :: Maybe (Ptr (FunPtr C_TypeInterfaceCheckFunc)) -> TypeInterfaceCheckFunc -> C_TypeInterfaceCheckFunc

-- | Type for the callback on the (unwrapped) C side.
type C_TypePluginCompleteInterfaceInfo = Ptr TypePlugin -> CGType -> CGType -> Ptr InterfaceInfo -> IO ()

-- | The type of the <i><tt>completeInterfaceInfo</tt></i> function of
--   <tt><i>GTypePluginClass</i></tt>.
type TypePluginCompleteInterfaceInfo = TypePlugin  /@plugin@/: the 'GI.GObject.Interfaces.TypePlugin.TypePlugin'  -> GType  /@instanceType@/: the 'GType' of an instantiable type to which the interface is added  -> GType  /@interfaceType@/: the 'GType' of the interface whose info is completed  -> InterfaceInfo  /@info@/: the 'GI.GObject.Structs.InterfaceInfo.InterfaceInfo' to fill in  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypePluginCompleteInterfaceInfo :: (HasCallStack, MonadIO m, IsTypePlugin a) => FunPtr C_TypePluginCompleteInterfaceInfo -> a -> GType -> GType -> InterfaceInfo -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypePluginCompleteInterfaceInfo :: TypePluginCompleteInterfaceInfo -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypePluginCompleteInterfaceInfo</a>.
mk_TypePluginCompleteInterfaceInfo :: C_TypePluginCompleteInterfaceInfo -> IO (FunPtr C_TypePluginCompleteInterfaceInfo)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypePluginCompleteInterfaceInfo</a></tt>.
noTypePluginCompleteInterfaceInfo :: Maybe TypePluginCompleteInterfaceInfo

-- | Wrap a <a>TypePluginCompleteInterfaceInfo</a> into a
--   <a>C_TypePluginCompleteInterfaceInfo</a>.
wrap_TypePluginCompleteInterfaceInfo :: Maybe (Ptr (FunPtr C_TypePluginCompleteInterfaceInfo)) -> TypePluginCompleteInterfaceInfo -> C_TypePluginCompleteInterfaceInfo

-- | Type for the callback on the (unwrapped) C side.
type C_TypePluginCompleteTypeInfo = Ptr TypePlugin -> CGType -> Ptr TypeInfo -> Ptr TypeValueTable -> IO ()

-- | The type of the <i><tt>completeTypeInfo</tt></i> function of
--   <tt><i>GTypePluginClass</i></tt>.
type TypePluginCompleteTypeInfo = TypePlugin  /@plugin@/: the 'GI.GObject.Interfaces.TypePlugin.TypePlugin'  -> GType  /@gType@/: the 'GType' whose info is completed  -> TypeInfo  /@info@/: the 'GI.GObject.Structs.TypeInfo.TypeInfo' struct to fill in  -> TypeValueTable  /@valueTable@/: the 'GI.GObject.Structs.TypeValueTable.TypeValueTable' to fill in  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypePluginCompleteTypeInfo :: (HasCallStack, MonadIO m, IsTypePlugin a) => FunPtr C_TypePluginCompleteTypeInfo -> a -> GType -> TypeInfo -> TypeValueTable -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypePluginCompleteTypeInfo :: TypePluginCompleteTypeInfo -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypePluginCompleteTypeInfo</a>.
mk_TypePluginCompleteTypeInfo :: C_TypePluginCompleteTypeInfo -> IO (FunPtr C_TypePluginCompleteTypeInfo)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypePluginCompleteTypeInfo</a></tt>.
noTypePluginCompleteTypeInfo :: Maybe TypePluginCompleteTypeInfo

-- | Wrap a <a>TypePluginCompleteTypeInfo</a> into a
--   <a>C_TypePluginCompleteTypeInfo</a>.
wrap_TypePluginCompleteTypeInfo :: Maybe (Ptr (FunPtr C_TypePluginCompleteTypeInfo)) -> TypePluginCompleteTypeInfo -> C_TypePluginCompleteTypeInfo

-- | Type for the callback on the (unwrapped) C side.
type C_TypePluginUnuse = Ptr TypePlugin -> IO ()

-- | The type of the <i><tt>unusePlugin</tt></i> function of
--   <tt><i>GTypePluginClass</i></tt>.
type TypePluginUnuse = TypePlugin  /@plugin@/: the 'GI.GObject.Interfaces.TypePlugin.TypePlugin' whose use count should be decreased  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypePluginUnuse :: (HasCallStack, MonadIO m, IsTypePlugin a) => FunPtr C_TypePluginUnuse -> a -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypePluginUnuse :: TypePluginUnuse -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypePluginUnuse</a>.
mk_TypePluginUnuse :: C_TypePluginUnuse -> IO (FunPtr C_TypePluginUnuse)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypePluginUnuse</a></tt>.
noTypePluginUnuse :: Maybe TypePluginUnuse

-- | Wrap a <a>TypePluginUnuse</a> into a <a>C_TypePluginUnuse</a>.
wrap_TypePluginUnuse :: Maybe (Ptr (FunPtr C_TypePluginUnuse)) -> TypePluginUnuse -> C_TypePluginUnuse

-- | Type for the callback on the (unwrapped) C side.
type C_TypePluginUse = Ptr TypePlugin -> IO ()

-- | The type of the <i><tt>usePlugin</tt></i> function of
--   <tt><i>GTypePluginClass</i></tt>, which gets called to increase the
--   use count of <i><tt>plugin</tt></i>.
type TypePluginUse = TypePlugin  /@plugin@/: the 'GI.GObject.Interfaces.TypePlugin.TypePlugin' whose use count should be increased  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypePluginUse :: (HasCallStack, MonadIO m, IsTypePlugin a) => FunPtr C_TypePluginUse -> a -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypePluginUse :: TypePluginUse -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypePluginUse</a>.
mk_TypePluginUse :: C_TypePluginUse -> IO (FunPtr C_TypePluginUse)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypePluginUse</a></tt>.
noTypePluginUse :: Maybe TypePluginUse

-- | Wrap a <a>TypePluginUse</a> into a <a>C_TypePluginUse</a>.
wrap_TypePluginUse :: Maybe (Ptr (FunPtr C_TypePluginUse)) -> TypePluginUse -> C_TypePluginUse

-- | Type for the callback on the (unwrapped) C side.
type C_TypeValueTableCollectValueFieldCallback = Ptr GValue -> Word32 -> Ptr TypeCValue -> Word32 -> IO CString

-- | <i>No description available in the introspection data.</i>
type TypeValueTableCollectValueFieldCallback = GValue -> Word32 -> TypeCValue -> Word32 -> IO Text

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypeValueTableCollectValueFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_TypeValueTableCollectValueFieldCallback -> GValue -> Word32 -> TypeCValue -> Word32 -> m Text

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypeValueTableCollectValueFieldCallback :: TypeValueTableCollectValueFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypeValueTableCollectValueFieldCallback</a>.
mk_TypeValueTableCollectValueFieldCallback :: C_TypeValueTableCollectValueFieldCallback -> IO (FunPtr C_TypeValueTableCollectValueFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeValueTableCollectValueFieldCallback</a></tt>.
noTypeValueTableCollectValueFieldCallback :: Maybe TypeValueTableCollectValueFieldCallback

-- | Wrap a <a>TypeValueTableCollectValueFieldCallback</a> into a
--   <a>C_TypeValueTableCollectValueFieldCallback</a>.
wrap_TypeValueTableCollectValueFieldCallback :: Maybe (Ptr (FunPtr C_TypeValueTableCollectValueFieldCallback)) -> TypeValueTableCollectValueFieldCallback -> C_TypeValueTableCollectValueFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_TypeValueTableLcopyValueFieldCallback = Ptr GValue -> Word32 -> Ptr TypeCValue -> Word32 -> IO CString

-- | <i>No description available in the introspection data.</i>
type TypeValueTableLcopyValueFieldCallback = GValue -> Word32 -> TypeCValue -> Word32 -> IO Text

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypeValueTableLcopyValueFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_TypeValueTableLcopyValueFieldCallback -> GValue -> Word32 -> TypeCValue -> Word32 -> m Text

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypeValueTableLcopyValueFieldCallback :: TypeValueTableLcopyValueFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypeValueTableLcopyValueFieldCallback</a>.
mk_TypeValueTableLcopyValueFieldCallback :: C_TypeValueTableLcopyValueFieldCallback -> IO (FunPtr C_TypeValueTableLcopyValueFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeValueTableLcopyValueFieldCallback</a></tt>.
noTypeValueTableLcopyValueFieldCallback :: Maybe TypeValueTableLcopyValueFieldCallback

-- | Wrap a <a>TypeValueTableLcopyValueFieldCallback</a> into a
--   <a>C_TypeValueTableLcopyValueFieldCallback</a>.
wrap_TypeValueTableLcopyValueFieldCallback :: Maybe (Ptr (FunPtr C_TypeValueTableLcopyValueFieldCallback)) -> TypeValueTableLcopyValueFieldCallback -> C_TypeValueTableLcopyValueFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_TypeValueTableValueCopyFieldCallback = Ptr GValue -> Ptr GValue -> IO ()

-- | <i>No description available in the introspection data.</i>
type TypeValueTableValueCopyFieldCallback = GValue -> GValue -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypeValueTableValueCopyFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_TypeValueTableValueCopyFieldCallback -> GValue -> GValue -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypeValueTableValueCopyFieldCallback :: TypeValueTableValueCopyFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypeValueTableValueCopyFieldCallback</a>.
mk_TypeValueTableValueCopyFieldCallback :: C_TypeValueTableValueCopyFieldCallback -> IO (FunPtr C_TypeValueTableValueCopyFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeValueTableValueCopyFieldCallback</a></tt>.
noTypeValueTableValueCopyFieldCallback :: Maybe TypeValueTableValueCopyFieldCallback

-- | Wrap a <a>TypeValueTableValueCopyFieldCallback</a> into a
--   <a>C_TypeValueTableValueCopyFieldCallback</a>.
wrap_TypeValueTableValueCopyFieldCallback :: Maybe (Ptr (FunPtr C_TypeValueTableValueCopyFieldCallback)) -> TypeValueTableValueCopyFieldCallback -> C_TypeValueTableValueCopyFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_TypeValueTableValueFreeFieldCallback = Ptr GValue -> IO ()

-- | <i>No description available in the introspection data.</i>
type TypeValueTableValueFreeFieldCallback = GValue -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypeValueTableValueFreeFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_TypeValueTableValueFreeFieldCallback -> GValue -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypeValueTableValueFreeFieldCallback :: TypeValueTableValueFreeFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypeValueTableValueFreeFieldCallback</a>.
mk_TypeValueTableValueFreeFieldCallback :: C_TypeValueTableValueFreeFieldCallback -> IO (FunPtr C_TypeValueTableValueFreeFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeValueTableValueFreeFieldCallback</a></tt>.
noTypeValueTableValueFreeFieldCallback :: Maybe TypeValueTableValueFreeFieldCallback

-- | Wrap a <a>TypeValueTableValueFreeFieldCallback</a> into a
--   <a>C_TypeValueTableValueFreeFieldCallback</a>.
wrap_TypeValueTableValueFreeFieldCallback :: Maybe (Ptr (FunPtr C_TypeValueTableValueFreeFieldCallback)) -> TypeValueTableValueFreeFieldCallback -> C_TypeValueTableValueFreeFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_TypeValueTableValueInitFieldCallback = Ptr GValue -> IO ()

-- | <i>No description available in the introspection data.</i>
type TypeValueTableValueInitFieldCallback = GValue -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypeValueTableValueInitFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_TypeValueTableValueInitFieldCallback -> GValue -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypeValueTableValueInitFieldCallback :: TypeValueTableValueInitFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypeValueTableValueInitFieldCallback</a>.
mk_TypeValueTableValueInitFieldCallback :: C_TypeValueTableValueInitFieldCallback -> IO (FunPtr C_TypeValueTableValueInitFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeValueTableValueInitFieldCallback</a></tt>.
noTypeValueTableValueInitFieldCallback :: Maybe TypeValueTableValueInitFieldCallback

-- | Wrap a <a>TypeValueTableValueInitFieldCallback</a> into a
--   <a>C_TypeValueTableValueInitFieldCallback</a>.
wrap_TypeValueTableValueInitFieldCallback :: Maybe (Ptr (FunPtr C_TypeValueTableValueInitFieldCallback)) -> TypeValueTableValueInitFieldCallback -> C_TypeValueTableValueInitFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_TypeValueTableValuePeekPointerFieldCallback = Ptr GValue -> IO (Ptr ())

-- | <i>No description available in the introspection data.</i>
type TypeValueTableValuePeekPointerFieldCallback = GValue -> IO (Ptr ())

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_TypeValueTableValuePeekPointerFieldCallback :: (HasCallStack, MonadIO m) => FunPtr C_TypeValueTableValuePeekPointerFieldCallback -> GValue -> m (Ptr ())

-- | Wrap the callback into a <a>Closure</a>.
genClosure_TypeValueTableValuePeekPointerFieldCallback :: TypeValueTableValuePeekPointerFieldCallback -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_TypeValueTableValuePeekPointerFieldCallback</a>.
mk_TypeValueTableValuePeekPointerFieldCallback :: C_TypeValueTableValuePeekPointerFieldCallback -> IO (FunPtr C_TypeValueTableValuePeekPointerFieldCallback)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeValueTableValuePeekPointerFieldCallback</a></tt>.
noTypeValueTableValuePeekPointerFieldCallback :: Maybe TypeValueTableValuePeekPointerFieldCallback

-- | Wrap a <a>TypeValueTableValuePeekPointerFieldCallback</a> into a
--   <a>C_TypeValueTableValuePeekPointerFieldCallback</a>.
wrap_TypeValueTableValuePeekPointerFieldCallback :: Maybe (Ptr (FunPtr C_TypeValueTableValuePeekPointerFieldCallback)) -> TypeValueTableValuePeekPointerFieldCallback -> C_TypeValueTableValuePeekPointerFieldCallback

-- | Type for the callback on the (unwrapped) C side.
type C_ValueTransform = Ptr GValue -> Ptr GValue -> IO ()

-- | The type of value transformation functions which can be registered
--   with <tt><i>g_value_register_transform_func()</i></tt>.
--   
--   <i><tt>destValue</tt></i> will be initialized to the correct
--   destination type.
type ValueTransform = GValue  /@srcValue@/: Source value.  -> GValue  /@destValue@/: Target value.  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_ValueTransform :: (HasCallStack, MonadIO m) => FunPtr C_ValueTransform -> GValue -> GValue -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_ValueTransform :: ValueTransform -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_ValueTransform</a>.
mk_ValueTransform :: C_ValueTransform -> IO (FunPtr C_ValueTransform)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>ValueTransform</a></tt>.
noValueTransform :: Maybe ValueTransform

-- | Wrap a <a>ValueTransform</a> into a <a>C_ValueTransform</a>.
wrap_ValueTransform :: Maybe (Ptr (FunPtr C_ValueTransform)) -> ValueTransform -> C_ValueTransform

-- | Type for the callback on the (unwrapped) C side.
type C_WeakNotify = Ptr () -> Ptr Object -> IO ()

-- | A <a>WeakNotify</a> function can be added to an object as a callback
--   that gets triggered when the object is finalized. Since the object is
--   already being finalized when the <a>WeakNotify</a> is called, there's
--   not much you could do with the object, apart from e.g. using its
--   address as hash-index or the like.
type WeakNotify = Ptr ()  /@data@/: data that was provided when the weak reference was established  -> Object  /@whereTheObjectWas@/: the object being finalized  -> IO ()

-- | Given a pointer to a foreign C function, wrap it into a function
--   callable from Haskell.
dynamic_WeakNotify :: (HasCallStack, MonadIO m, IsObject a) => FunPtr C_WeakNotify -> Ptr () -> a -> m ()

-- | Wrap the callback into a <a>Closure</a>.
genClosure_WeakNotify :: WeakNotify -> IO Closure

-- | Generate a function pointer callable from C code, from a
--   <a>C_WeakNotify</a>.
mk_WeakNotify :: C_WeakNotify -> IO (FunPtr C_WeakNotify)

-- | A convenience synonym for <tt><a>Nothing</a> :: <a>Maybe</a>
--   <a>WeakNotify</a></tt>.
noWeakNotify :: Maybe WeakNotify

-- | Wrap a <a>WeakNotify</a> into a <a>C_WeakNotify</a>.
wrap_WeakNotify :: Maybe (Ptr (FunPtr C_WeakNotify)) -> WeakNotify -> C_WeakNotify


-- | The <a>TypeValueTable</a> provides the functions required by the
--   <a>Value</a> implementation, to serve as a container for values of a
--   type.
module GI.GObject.Structs.TypeValueTable

-- | Memory-managed wrapper type.
newtype TypeValueTable
TypeValueTable :: (ManagedPtr TypeValueTable) -> TypeValueTable

-- | Construct a <a>TypeValueTable</a> struct initialized to zero.
newZeroTypeValueTable :: MonadIO m => m TypeValueTable

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeValueTable</a>.
noTypeValueTable :: Maybe TypeValueTable

-- | Set the value of the “<tt>collect_format</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #collectFormat
--   </pre>
clearTypeValueTableCollectFormat :: MonadIO m => TypeValueTable -> m ()

-- | Get the value of the “<tt>collect_format</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeValueTable #collectFormat
--   </pre>
getTypeValueTableCollectFormat :: MonadIO m => TypeValueTable -> m (Maybe Text)

-- | Set the value of the “<tt>collect_format</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeValueTable [ #collectFormat <a>:=</a> value ]
--   </pre>
setTypeValueTableCollectFormat :: MonadIO m => TypeValueTable -> CString -> m ()

-- | Set the value of the “<tt>collect_value</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #collectValue
--   </pre>
clearTypeValueTableCollectValue :: MonadIO m => TypeValueTable -> m ()

-- | Get the value of the “<tt>collect_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeValueTable #collectValue
--   </pre>
getTypeValueTableCollectValue :: MonadIO m => TypeValueTable -> m (Maybe TypeValueTableCollectValueFieldCallback)

-- | Set the value of the “<tt>collect_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeValueTable [ #collectValue <a>:=</a> value ]
--   </pre>
setTypeValueTableCollectValue :: MonadIO m => TypeValueTable -> FunPtr C_TypeValueTableCollectValueFieldCallback -> m ()

-- | Set the value of the “<tt>lcopy_format</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #lcopyFormat
--   </pre>
clearTypeValueTableLcopyFormat :: MonadIO m => TypeValueTable -> m ()

-- | Get the value of the “<tt>lcopy_format</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeValueTable #lcopyFormat
--   </pre>
getTypeValueTableLcopyFormat :: MonadIO m => TypeValueTable -> m (Maybe Text)

-- | Set the value of the “<tt>lcopy_format</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeValueTable [ #lcopyFormat <a>:=</a> value ]
--   </pre>
setTypeValueTableLcopyFormat :: MonadIO m => TypeValueTable -> CString -> m ()

-- | Set the value of the “<tt>lcopy_value</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #lcopyValue
--   </pre>
clearTypeValueTableLcopyValue :: MonadIO m => TypeValueTable -> m ()

-- | Get the value of the “<tt>lcopy_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeValueTable #lcopyValue
--   </pre>
getTypeValueTableLcopyValue :: MonadIO m => TypeValueTable -> m (Maybe TypeValueTableLcopyValueFieldCallback)

-- | Set the value of the “<tt>lcopy_value</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeValueTable [ #lcopyValue <a>:=</a> value ]
--   </pre>
setTypeValueTableLcopyValue :: MonadIO m => TypeValueTable -> FunPtr C_TypeValueTableLcopyValueFieldCallback -> m ()

-- | Set the value of the “<tt>value_copy</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #valueCopy
--   </pre>
clearTypeValueTableValueCopy :: MonadIO m => TypeValueTable -> m ()

-- | Get the value of the “<tt>value_copy</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeValueTable #valueCopy
--   </pre>
getTypeValueTableValueCopy :: MonadIO m => TypeValueTable -> m (Maybe TypeValueTableValueCopyFieldCallback)

-- | Set the value of the “<tt>value_copy</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeValueTable [ #valueCopy <a>:=</a> value ]
--   </pre>
setTypeValueTableValueCopy :: MonadIO m => TypeValueTable -> FunPtr C_TypeValueTableValueCopyFieldCallback -> m ()

-- | Set the value of the “<tt>value_free</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #valueFree
--   </pre>
clearTypeValueTableValueFree :: MonadIO m => TypeValueTable -> m ()

-- | Get the value of the “<tt>value_free</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeValueTable #valueFree
--   </pre>
getTypeValueTableValueFree :: MonadIO m => TypeValueTable -> m (Maybe TypeValueTableValueFreeFieldCallback)

-- | Set the value of the “<tt>value_free</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeValueTable [ #valueFree <a>:=</a> value ]
--   </pre>
setTypeValueTableValueFree :: MonadIO m => TypeValueTable -> FunPtr C_TypeValueTableValueFreeFieldCallback -> m ()

-- | Set the value of the “<tt>value_init</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #valueInit
--   </pre>
clearTypeValueTableValueInit :: MonadIO m => TypeValueTable -> m ()

-- | Get the value of the “<tt>value_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeValueTable #valueInit
--   </pre>
getTypeValueTableValueInit :: MonadIO m => TypeValueTable -> m (Maybe TypeValueTableValueInitFieldCallback)

-- | Set the value of the “<tt>value_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeValueTable [ #valueInit <a>:=</a> value ]
--   </pre>
setTypeValueTableValueInit :: MonadIO m => TypeValueTable -> FunPtr C_TypeValueTableValueInitFieldCallback -> m ()

-- | Set the value of the “<tt>value_peek_pointer</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #valuePeekPointer
--   </pre>
clearTypeValueTableValuePeekPointer :: MonadIO m => TypeValueTable -> m ()

-- | Get the value of the “<tt>value_peek_pointer</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeValueTable #valuePeekPointer
--   </pre>
getTypeValueTableValuePeekPointer :: MonadIO m => TypeValueTable -> m (Maybe TypeValueTableValuePeekPointerFieldCallback)

-- | Set the value of the “<tt>value_peek_pointer</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeValueTable [ #valuePeekPointer <a>:=</a> value ]
--   </pre>
setTypeValueTableValuePeekPointer :: MonadIO m => TypeValueTable -> FunPtr C_TypeValueTableValuePeekPointerFieldCallback -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.TypeValueTable.TypeValueTable
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.TypeValueTable.TypeValueTable tag


-- | This structure is used to provide the type system with the information
--   required to initialize and destruct (finalize) a type's class and its
--   instances.
--   
--   The initialized structure is passed to the <a>typeRegisterStatic</a>
--   function (or is copied into the provided <a>TypeInfo</a> structure in
--   the <a>typePluginCompleteTypeInfo</a>). The type system will perform a
--   deep copy of this structure, so its memory does not need to be
--   persistent across invocation of <a>typeRegisterStatic</a>.
module GI.GObject.Structs.TypeInfo

-- | Memory-managed wrapper type.
newtype TypeInfo
TypeInfo :: (ManagedPtr TypeInfo) -> TypeInfo

-- | Construct a <a>TypeInfo</a> struct initialized to zero.
newZeroTypeInfo :: MonadIO m => m TypeInfo

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeInfo</a>.
noTypeInfo :: Maybe TypeInfo

-- | Set the value of the “<tt>base_finalize</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #baseFinalize
--   </pre>
clearTypeInfoBaseFinalize :: MonadIO m => TypeInfo -> m ()

-- | Get the value of the “<tt>base_finalize</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeInfo #baseFinalize
--   </pre>
getTypeInfoBaseFinalize :: MonadIO m => TypeInfo -> m (Maybe BaseFinalizeFunc)

-- | Set the value of the “<tt>base_finalize</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeInfo [ #baseFinalize <a>:=</a> value ]
--   </pre>
setTypeInfoBaseFinalize :: MonadIO m => TypeInfo -> FunPtr C_BaseFinalizeFunc -> m ()

-- | Set the value of the “<tt>base_init</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #baseInit
--   </pre>
clearTypeInfoBaseInit :: MonadIO m => TypeInfo -> m ()

-- | Get the value of the “<tt>base_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeInfo #baseInit
--   </pre>
getTypeInfoBaseInit :: MonadIO m => TypeInfo -> m (Maybe BaseInitFunc)

-- | Set the value of the “<tt>base_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeInfo [ #baseInit <a>:=</a> value ]
--   </pre>
setTypeInfoBaseInit :: MonadIO m => TypeInfo -> FunPtr C_BaseInitFunc -> m ()

-- | Set the value of the “<tt>class_data</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #classData
--   </pre>
clearTypeInfoClassData :: MonadIO m => TypeInfo -> m ()

-- | Get the value of the “<tt>class_data</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeInfo #classData
--   </pre>
getTypeInfoClassData :: MonadIO m => TypeInfo -> m (Ptr ())

-- | Set the value of the “<tt>class_data</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeInfo [ #classData <a>:=</a> value ]
--   </pre>
setTypeInfoClassData :: MonadIO m => TypeInfo -> Ptr () -> m ()

-- | Set the value of the “<tt>class_finalize</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #classFinalize
--   </pre>
clearTypeInfoClassFinalize :: MonadIO m => TypeInfo -> m ()

-- | Get the value of the “<tt>class_finalize</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeInfo #classFinalize
--   </pre>
getTypeInfoClassFinalize :: MonadIO m => TypeInfo -> m (Maybe ClassFinalizeFunc)

-- | Set the value of the “<tt>class_finalize</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeInfo [ #classFinalize <a>:=</a> value ]
--   </pre>
setTypeInfoClassFinalize :: MonadIO m => TypeInfo -> FunPtr C_ClassFinalizeFunc -> m ()

-- | Set the value of the “<tt>class_init</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #classInit
--   </pre>
clearTypeInfoClassInit :: MonadIO m => TypeInfo -> m ()

-- | Get the value of the “<tt>class_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeInfo #classInit
--   </pre>
getTypeInfoClassInit :: MonadIO m => TypeInfo -> m (Maybe ClassInitFunc)

-- | Set the value of the “<tt>class_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeInfo [ #classInit <a>:=</a> value ]
--   </pre>
setTypeInfoClassInit :: MonadIO m => TypeInfo -> FunPtr C_ClassInitFunc -> m ()

-- | Get the value of the “<tt>class_size</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeInfo #classSize
--   </pre>
getTypeInfoClassSize :: MonadIO m => TypeInfo -> m Word16

-- | Set the value of the “<tt>class_size</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeInfo [ #classSize <a>:=</a> value ]
--   </pre>
setTypeInfoClassSize :: MonadIO m => TypeInfo -> Word16 -> m ()

-- | Set the value of the “<tt>instance_init</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #instanceInit
--   </pre>
clearTypeInfoInstanceInit :: MonadIO m => TypeInfo -> m ()

-- | Get the value of the “<tt>instance_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeInfo #instanceInit
--   </pre>
getTypeInfoInstanceInit :: MonadIO m => TypeInfo -> m (Maybe InstanceInitFunc)

-- | Set the value of the “<tt>instance_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeInfo [ #instanceInit <a>:=</a> value ]
--   </pre>
setTypeInfoInstanceInit :: MonadIO m => TypeInfo -> FunPtr C_InstanceInitFunc -> m ()

-- | Get the value of the “<tt>instance_size</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeInfo #instanceSize
--   </pre>
getTypeInfoInstanceSize :: MonadIO m => TypeInfo -> m Word16

-- | Set the value of the “<tt>instance_size</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeInfo [ #instanceSize <a>:=</a> value ]
--   </pre>
setTypeInfoInstanceSize :: MonadIO m => TypeInfo -> Word16 -> m ()

-- | Get the value of the “<tt>n_preallocs</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeInfo #nPreallocs
--   </pre>
getTypeInfoNPreallocs :: MonadIO m => TypeInfo -> m Word16

-- | Set the value of the “<tt>n_preallocs</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeInfo [ #nPreallocs <a>:=</a> value ]
--   </pre>
setTypeInfoNPreallocs :: MonadIO m => TypeInfo -> Word16 -> m ()

-- | Set the value of the “<tt>value_table</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #valueTable
--   </pre>
clearTypeInfoValueTable :: MonadIO m => TypeInfo -> m ()

-- | Get the value of the “<tt>value_table</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeInfo #valueTable
--   </pre>
getTypeInfoValueTable :: MonadIO m => TypeInfo -> m (Maybe TypeValueTable)

-- | Set the value of the “<tt>value_table</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeInfo [ #valueTable <a>:=</a> value ]
--   </pre>
setTypeInfoValueTable :: MonadIO m => TypeInfo -> Ptr TypeValueTable -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.TypeInfo.TypeInfo
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.TypeInfo.TypeInfo tag


-- | This structure is used to provide the type system with the information
--   required to initialize and destruct (finalize) a parameter's class and
--   instances thereof. The initialized structure is passed to the
--   <a>paramTypeRegisterStatic</a> The type system will perform a deep
--   copy of this structure, so its memory does not need to be persistent
--   across invocation of <a>paramTypeRegisterStatic</a>.
module GI.GObject.Structs.ParamSpecTypeInfo

-- | Memory-managed wrapper type.
newtype ParamSpecTypeInfo
ParamSpecTypeInfo :: (ManagedPtr ParamSpecTypeInfo) -> ParamSpecTypeInfo

-- | Construct a <a>ParamSpecTypeInfo</a> struct initialized to zero.
newZeroParamSpecTypeInfo :: MonadIO m => m ParamSpecTypeInfo

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>ParamSpecTypeInfo</a>.
noParamSpecTypeInfo :: Maybe ParamSpecTypeInfo

-- | Set the value of the “<tt>finalize</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #finalize
--   </pre>
clearParamSpecTypeInfoFinalize :: MonadIO m => ParamSpecTypeInfo -> m ()

-- | Get the value of the “<tt>finalize</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> paramSpecTypeInfo #finalize
--   </pre>
getParamSpecTypeInfoFinalize :: MonadIO m => ParamSpecTypeInfo -> m (Maybe ParamSpecTypeInfoFinalizeFieldCallback)

-- | Set the value of the “<tt>finalize</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> paramSpecTypeInfo [ #finalize <a>:=</a> value ]
--   </pre>
setParamSpecTypeInfoFinalize :: MonadIO m => ParamSpecTypeInfo -> FunPtr C_ParamSpecTypeInfoFinalizeFieldCallback -> m ()

-- | Set the value of the “<tt>instance_init</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #instanceInit
--   </pre>
clearParamSpecTypeInfoInstanceInit :: MonadIO m => ParamSpecTypeInfo -> m ()

-- | Get the value of the “<tt>instance_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> paramSpecTypeInfo #instanceInit
--   </pre>
getParamSpecTypeInfoInstanceInit :: MonadIO m => ParamSpecTypeInfo -> m (Maybe ParamSpecTypeInfoInstanceInitFieldCallback)

-- | Set the value of the “<tt>instance_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> paramSpecTypeInfo [ #instanceInit <a>:=</a> value ]
--   </pre>
setParamSpecTypeInfoInstanceInit :: MonadIO m => ParamSpecTypeInfo -> FunPtr C_ParamSpecTypeInfoInstanceInitFieldCallback -> m ()

-- | Get the value of the “<tt>instance_size</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> paramSpecTypeInfo #instanceSize
--   </pre>
getParamSpecTypeInfoInstanceSize :: MonadIO m => ParamSpecTypeInfo -> m Word16

-- | Set the value of the “<tt>instance_size</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> paramSpecTypeInfo [ #instanceSize <a>:=</a> value ]
--   </pre>
setParamSpecTypeInfoInstanceSize :: MonadIO m => ParamSpecTypeInfo -> Word16 -> m ()

-- | Get the value of the “<tt>n_preallocs</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> paramSpecTypeInfo #nPreallocs
--   </pre>
getParamSpecTypeInfoNPreallocs :: MonadIO m => ParamSpecTypeInfo -> m Word16

-- | Set the value of the “<tt>n_preallocs</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> paramSpecTypeInfo [ #nPreallocs <a>:=</a> value ]
--   </pre>
setParamSpecTypeInfoNPreallocs :: MonadIO m => ParamSpecTypeInfo -> Word16 -> m ()

-- | Set the value of the “<tt>value_set_default</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #valueSetDefault
--   </pre>
clearParamSpecTypeInfoValueSetDefault :: MonadIO m => ParamSpecTypeInfo -> m ()

-- | Get the value of the “<tt>value_set_default</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> paramSpecTypeInfo #valueSetDefault
--   </pre>
getParamSpecTypeInfoValueSetDefault :: MonadIO m => ParamSpecTypeInfo -> m (Maybe ParamSpecTypeInfoValueSetDefaultFieldCallback)

-- | Set the value of the “<tt>value_set_default</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> paramSpecTypeInfo [ #valueSetDefault <a>:=</a> value ]
--   </pre>
setParamSpecTypeInfoValueSetDefault :: MonadIO m => ParamSpecTypeInfo -> FunPtr C_ParamSpecTypeInfoValueSetDefaultFieldCallback -> m ()

-- | Get the value of the “<tt>value_type</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> paramSpecTypeInfo #valueType
--   </pre>
getParamSpecTypeInfoValueType :: MonadIO m => ParamSpecTypeInfo -> m GType

-- | Set the value of the “<tt>value_type</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> paramSpecTypeInfo [ #valueType <a>:=</a> value ]
--   </pre>
setParamSpecTypeInfoValueType :: MonadIO m => ParamSpecTypeInfo -> GType -> m ()

-- | Set the value of the “<tt>value_validate</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #valueValidate
--   </pre>
clearParamSpecTypeInfoValueValidate :: MonadIO m => ParamSpecTypeInfo -> m ()

-- | Get the value of the “<tt>value_validate</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> paramSpecTypeInfo #valueValidate
--   </pre>
getParamSpecTypeInfoValueValidate :: MonadIO m => ParamSpecTypeInfo -> m (Maybe ParamSpecTypeInfoValueValidateFieldCallback)

-- | Set the value of the “<tt>value_validate</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> paramSpecTypeInfo [ #valueValidate <a>:=</a> value ]
--   </pre>
setParamSpecTypeInfoValueValidate :: MonadIO m => ParamSpecTypeInfo -> FunPtr C_ParamSpecTypeInfoValueValidateFieldCallback -> m ()

-- | Set the value of the “<tt>values_cmp</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #valuesCmp
--   </pre>
clearParamSpecTypeInfoValuesCmp :: MonadIO m => ParamSpecTypeInfo -> m ()

-- | Get the value of the “<tt>values_cmp</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> paramSpecTypeInfo #valuesCmp
--   </pre>
getParamSpecTypeInfoValuesCmp :: MonadIO m => ParamSpecTypeInfo -> m (Maybe ParamSpecTypeInfoValuesCmpFieldCallback)

-- | Set the value of the “<tt>values_cmp</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> paramSpecTypeInfo [ #valuesCmp <a>:=</a> value ]
--   </pre>
setParamSpecTypeInfoValuesCmp :: MonadIO m => ParamSpecTypeInfo -> FunPtr C_ParamSpecTypeInfoValuesCmpFieldCallback -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.ParamSpecTypeInfo.ParamSpecTypeInfo
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.ParamSpecTypeInfo.ParamSpecTypeInfo tag


-- | A structure that provides information to the type system which is used
--   specifically for managing interface types.
module GI.GObject.Structs.InterfaceInfo

-- | Memory-managed wrapper type.
newtype InterfaceInfo
InterfaceInfo :: (ManagedPtr InterfaceInfo) -> InterfaceInfo

-- | Construct a <a>InterfaceInfo</a> struct initialized to zero.
newZeroInterfaceInfo :: MonadIO m => m InterfaceInfo

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>InterfaceInfo</a>.
noInterfaceInfo :: Maybe InterfaceInfo

-- | Set the value of the “<tt>interface_data</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #interfaceData
--   </pre>
clearInterfaceInfoInterfaceData :: MonadIO m => InterfaceInfo -> m ()

-- | Get the value of the “<tt>interface_data</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> interfaceInfo #interfaceData
--   </pre>
getInterfaceInfoInterfaceData :: MonadIO m => InterfaceInfo -> m (Ptr ())

-- | Set the value of the “<tt>interface_data</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> interfaceInfo [ #interfaceData <a>:=</a> value ]
--   </pre>
setInterfaceInfoInterfaceData :: MonadIO m => InterfaceInfo -> Ptr () -> m ()

-- | Set the value of the “<tt>interface_finalize</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #interfaceFinalize
--   </pre>
clearInterfaceInfoInterfaceFinalize :: MonadIO m => InterfaceInfo -> m ()

-- | Get the value of the “<tt>interface_finalize</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> interfaceInfo #interfaceFinalize
--   </pre>
getInterfaceInfoInterfaceFinalize :: MonadIO m => InterfaceInfo -> m (Maybe InterfaceFinalizeFunc)

-- | Set the value of the “<tt>interface_finalize</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> interfaceInfo [ #interfaceFinalize <a>:=</a> value ]
--   </pre>
setInterfaceInfoInterfaceFinalize :: MonadIO m => InterfaceInfo -> FunPtr C_InterfaceFinalizeFunc -> m ()

-- | Set the value of the “<tt>interface_init</tt>” field to
--   <a>Nothing</a>. When <a>overloading</a> is enabled, this is equivalent
--   to
--   
--   <pre>
--   <a>clear</a> #interfaceInit
--   </pre>
clearInterfaceInfoInterfaceInit :: MonadIO m => InterfaceInfo -> m ()

-- | Get the value of the “<tt>interface_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> interfaceInfo #interfaceInit
--   </pre>
getInterfaceInfoInterfaceInit :: MonadIO m => InterfaceInfo -> m (Maybe InterfaceInitFunc)

-- | Set the value of the “<tt>interface_init</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> interfaceInfo [ #interfaceInit <a>:=</a> value ]
--   </pre>
setInterfaceInfoInterfaceInit :: MonadIO m => InterfaceInfo -> FunPtr C_InterfaceInitFunc -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.InterfaceInfo.InterfaceInfo
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.InterfaceInfo.InterfaceInfo tag


-- | <i>No description available in the introspection data.</i>
module GI.GObject.Structs.ClosureNotifyData

-- | Memory-managed wrapper type.
newtype ClosureNotifyData
ClosureNotifyData :: (ManagedPtr ClosureNotifyData) -> ClosureNotifyData

-- | Construct a <a>ClosureNotifyData</a> struct initialized to zero.
newZeroClosureNotifyData :: MonadIO m => m ClosureNotifyData

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>ClosureNotifyData</a>.
noClosureNotifyData :: Maybe ClosureNotifyData

-- | Set the value of the “<tt>data</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #data
--   </pre>
clearClosureNotifyDataData :: MonadIO m => ClosureNotifyData -> m ()

-- | Get the value of the “<tt>data</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> closureNotifyData #data
--   </pre>
getClosureNotifyDataData :: MonadIO m => ClosureNotifyData -> m (Ptr ())

-- | Set the value of the “<tt>data</tt>” field. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> closureNotifyData [ #data <a>:=</a> value ]
--   </pre>
setClosureNotifyDataData :: MonadIO m => ClosureNotifyData -> Ptr () -> m ()

-- | Set the value of the “<tt>notify</tt>” field to <a>Nothing</a>. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #notify
--   </pre>
clearClosureNotifyDataNotify :: MonadIO m => ClosureNotifyData -> m ()

-- | Get the value of the “<tt>notify</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> closureNotifyData #notify
--   </pre>
getClosureNotifyDataNotify :: MonadIO m => ClosureNotifyData -> m (Maybe ClosureNotify)

-- | Set the value of the “<tt>notify</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> closureNotifyData [ #notify <a>:=</a> value ]
--   </pre>
setClosureNotifyDataNotify :: MonadIO m => ClosureNotifyData -> FunPtr C_ClosureNotify -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Structs.ClosureNotifyData.ClosureNotifyData
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Structs.ClosureNotifyData.ClosureNotifyData tag


module GI.GObject.Structs


module GI.GObject.Functions

-- | Provide a copy of a boxed structure <i><tt>srcBoxed</tt></i> which is
--   of type <i><tt>boxedType</tt></i>.
boxedCopy :: (HasCallStack, MonadIO m) => GType -> Ptr () -> m (Ptr ())

-- | Free the boxed structure <i><tt>boxed</tt></i> which is of type
--   <i><tt>boxedType</tt></i>.
boxedFree :: (HasCallStack, MonadIO m) => GType -> Ptr () -> m ()

-- | This function is meant to be called from the
--   <tt>complete_type_info</tt> function of a <a>TypePlugin</a>
--   implementation, as in the following example:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   static void
--   my_enum_complete_type_info (GTypePlugin     *plugin,
--                               GType            g_type,
--                               GTypeInfo       *info,
--                               GTypeValueTable *value_table)
--   {
--     static const GEnumValue values[] = {
--       { MY_ENUM_FOO, "MY_ENUM_FOO", "foo" },
--       { MY_ENUM_BAR, "MY_ENUM_BAR", "bar" },
--       { 0, NULL, NULL }
--     };
--   
--     g_enum_complete_type_info (type, info, values);
--   }
--   </pre>
enumCompleteTypeInfo :: (HasCallStack, MonadIO m) => GType -> EnumValue -> m (TypeInfo)

-- | Returns the <a>EnumValue</a> for a value.
enumGetValue :: (HasCallStack, MonadIO m) => EnumClass -> Int32 -> m EnumValue

-- | Looks up a <a>EnumValue</a> by name.
enumGetValueByName :: (HasCallStack, MonadIO m) => EnumClass -> Text -> m EnumValue

-- | Looks up a <a>EnumValue</a> by nickname.
enumGetValueByNick :: (HasCallStack, MonadIO m) => EnumClass -> Text -> m EnumValue

-- | Registers a new static enumeration type with the name
--   <i><tt>name</tt></i>.
--   
--   It is normally more convenient to let [glib-mkenums][glib-mkenums],
--   generate a <tt><i>my_enum_get_type()</i></tt> function from a usual C
--   enumeration definition than to write one yourself using
--   <a>enumRegisterStatic</a>.
enumRegisterStatic :: (HasCallStack, MonadIO m) => Text -> EnumValue -> m GType

-- | Pretty-prints <i><tt>value</tt></i> in the form of the enum’s name.
--   
--   This is intended to be used for debugging purposes. The format of the
--   output may change in the future.
--   
--   <i>Since: 2.54</i>
enumToString :: (HasCallStack, MonadIO m) => GType -> Int32 -> m Text

-- | This function is meant to be called from the
--   <tt><i>complete_type_info()</i></tt> function of a <a>TypePlugin</a>
--   implementation, see the example for <a>enumCompleteTypeInfo</a> above.
flagsCompleteTypeInfo :: (HasCallStack, MonadIO m) => GType -> FlagsValue -> m (TypeInfo)

-- | Returns the first <a>FlagsValue</a> which is set in
--   <i><tt>value</tt></i>.
flagsGetFirstValue :: (HasCallStack, MonadIO m) => FlagsClass -> Word32 -> m FlagsValue

-- | Looks up a <a>FlagsValue</a> by name.
flagsGetValueByName :: (HasCallStack, MonadIO m) => FlagsClass -> Text -> m FlagsValue

-- | Looks up a <a>FlagsValue</a> by nickname.
flagsGetValueByNick :: (HasCallStack, MonadIO m) => FlagsClass -> Text -> m FlagsValue

-- | Registers a new static flags type with the name <i><tt>name</tt></i>.
--   
--   It is normally more convenient to let [glib-mkenums][glib-mkenums]
--   generate a <tt><i>my_flags_get_type()</i></tt> function from a usual C
--   enumeration definition than to write one yourself using
--   <a>flagsRegisterStatic</a>.
flagsRegisterStatic :: (HasCallStack, MonadIO m) => Text -> FlagsValue -> m GType

-- | Pretty-prints <i><tt>value</tt></i> in the form of the flag names
--   separated by <tt> | </tt> and sorted. Any extra bits will be shown at
--   the end as a hexadecimal number.
--   
--   This is intended to be used for debugging purposes. The format of the
--   output may change in the future.
--   
--   <i>Since: 2.54</i>
flagsToString :: (HasCallStack, MonadIO m) => GType -> Word32 -> m Text

-- | <i>No description available in the introspection data.</i>
gtypeGetType :: (HasCallStack, MonadIO m) => m GType

-- | Creates a new <a>ParamSpecBoolean</a> instance specifying a
--   <tt><i>G_TYPE_BOOLEAN</i></tt> property. In many cases, it may be more
--   appropriate to use an enum with <a>paramSpecEnum</a>, both to improve
--   code clarity by using explicitly named values, and to allow for more
--   values to be added in future without breaking API.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecBoolean :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Bool -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecBoxed</a> instance specifying a
--   <tt><i>G_TYPE_BOXED</i></tt> derived property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecBoxed :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> GType -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecChar</a> instance specifying a
--   <tt><i>G_TYPE_CHAR</i></tt> property.
paramSpecChar :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Int8 -> Int8 -> Int8 -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecDouble</a> instance specifying a
--   <tt><i>G_TYPE_DOUBLE</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecDouble :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Double -> Double -> Double -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecEnum</a> instance specifying a
--   <tt><i>G_TYPE_ENUM</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecEnum :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> GType -> Int32 -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecFlags</a> instance specifying a
--   <tt><i>G_TYPE_FLAGS</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecFlags :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> GType -> Word32 -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecFloat</a> instance specifying a
--   <tt><i>G_TYPE_FLOAT</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecFloat :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Float -> Float -> Float -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecGType</a> instance specifying a
--   <tt><i>G_TYPE_GTYPE</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
--   
--   <i>Since: 2.10</i>
paramSpecGtype :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> GType -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecInt</a> instance specifying a
--   <tt><i>G_TYPE_INT</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecInt :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Int32 -> Int32 -> Int32 -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecInt64</a> instance specifying a
--   <tt><i>G_TYPE_INT64</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecInt64 :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Int64 -> Int64 -> Int64 -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecLong</a> instance specifying a
--   <tt><i>G_TYPE_LONG</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecLong :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> CLong -> CLong -> CLong -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecBoxed</a> instance specifying a
--   <tt><i>G_TYPE_OBJECT</i></tt> derived property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecObject :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> GType -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecParam</a> instance specifying a
--   <tt><i>G_TYPE_PARAM</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecParam :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> GType -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecPointer</a> instance specifying a pointer
--   property. Where possible, it is better to use <a>paramSpecObject</a>
--   or <a>paramSpecBoxed</a> to expose memory management information.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecPointer :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecString</a> instance.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecString :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Maybe (Text) -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecUChar</a> instance specifying a
--   <tt><i>G_TYPE_UCHAR</i></tt> property.
paramSpecUchar :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Word8 -> Word8 -> Word8 -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecUInt</a> instance specifying a
--   <tt><i>G_TYPE_UINT</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecUint :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Word32 -> Word32 -> Word32 -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecUInt64</a> instance specifying a
--   <tt><i>G_TYPE_UINT64</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecUint64 :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Word64 -> Word64 -> Word64 -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecULong</a> instance specifying a
--   <tt><i>G_TYPE_ULONG</i></tt> property.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecUlong :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> CULong -> CULong -> CULong -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecUnichar</a> instance specifying a
--   <tt><i>G_TYPE_UINT</i></tt> property. <a>Value</a> structures for this
--   property can be accessed with <a>valueSetUint</a> and
--   <a>valueGetUint</a>.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
paramSpecUnichar :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> Char -> [ParamFlags] -> m GParamSpec

-- | Creates a new <a>ParamSpecVariant</a> instance specifying a
--   <a>GVariant</a> property.
--   
--   If <i><tt>defaultValue</tt></i> is floating, it is consumed.
--   
--   See <tt><i>g_param_spec_internal()</i></tt> for details on property
--   names.
--   
--   <i>Since: 2.26</i>
paramSpecVariant :: (HasCallStack, MonadIO m) => Text -> Text -> Text -> VariantType -> Maybe (GVariant) -> [ParamFlags] -> m GParamSpec

-- | Registers <i><tt>name</tt></i> as the name of a new static type
--   derived from <tt><i>G_TYPE_PARAM</i></tt>. The type system uses the
--   information contained in the <a>ParamSpecTypeInfo</a> structure
--   pointed to by <i><tt>info</tt></i> to manage the <a>ParamSpec</a> type
--   and its instances.
paramTypeRegisterStatic :: (HasCallStack, MonadIO m) => Text -> ParamSpecTypeInfo -> m GType

-- | Transforms <i><tt>srcValue</tt></i> into <i><tt>destValue</tt></i> if
--   possible, and then validates <i><tt>destValue</tt></i>, in order for
--   it to conform to <i><tt>pspec</tt></i>. If
--   <i><tt>strictValidation</tt></i> is <a>True</a> this function will
--   only succeed if the transformed <i><tt>destValue</tt></i> complied to
--   <i><tt>pspec</tt></i> without modifications.
--   
--   See also <a>valueTypeTransformable</a>, <a>valueTransform</a> and
--   <a>paramValueValidate</a>.
paramValueConvert :: (HasCallStack, MonadIO m) => GParamSpec -> GValue -> GValue -> Bool -> m Bool

-- | Checks whether <i><tt>value</tt></i> contains the default value as
--   specified in <i><tt>pspec</tt></i>.
paramValueDefaults :: (HasCallStack, MonadIO m) => GParamSpec -> GValue -> m Bool

-- | Sets <i><tt>value</tt></i> to its default value as specified in
--   <i><tt>pspec</tt></i>.
paramValueSetDefault :: (HasCallStack, MonadIO m) => GParamSpec -> GValue -> m ()

-- | Ensures that the contents of <i><tt>value</tt></i> comply with the
--   specifications set out by <i><tt>pspec</tt></i>. For example, a
--   <a>ParamSpecInt</a> might require that integers stored in
--   <i><tt>value</tt></i> may not be smaller than -42 and not be greater
--   than +42. If <i><tt>value</tt></i> contains an integer outside of this
--   range, it is modified accordingly, so the resulting value will fit
--   into the range -42 .. +42.
paramValueValidate :: (HasCallStack, MonadIO m) => GParamSpec -> GValue -> m Bool

-- | Compares <i><tt>value1</tt></i> with <i><tt>value2</tt></i> according
--   to <i><tt>pspec</tt></i>, and return -1, 0 or +1, if
--   <i><tt>value1</tt></i> is found to be less than, equal to or greater
--   than <i><tt>value2</tt></i>, respectively.
paramValuesCmp :: (HasCallStack, MonadIO m) => GParamSpec -> GValue -> GValue -> m Int32

-- | Creates a new <tt><i>G_TYPE_POINTER</i></tt> derived type id for a new
--   pointer type with name <i><tt>name</tt></i>.
pointerTypeRegisterStatic :: (HasCallStack, MonadIO m) => Text -> m GType

-- | A predefined <a>SignalAccumulator</a> for signals intended to be used
--   as a hook for application code to provide a particular value. Usually
--   only one such value is desired and multiple handlers for the same
--   signal don't make much sense (except for the case of the default
--   handler defined in the class structure, in which case you will usually
--   want the signal connection to override the class handler).
--   
--   This accumulator will use the return value from the first signal
--   handler that is run as the return value for the signal and not run any
--   further handlers (ie: the first handler "wins").
--   
--   <i>Since: 2.28</i>
signalAccumulatorFirstWins :: (HasCallStack, MonadIO m) => SignalInvocationHint -> GValue -> GValue -> Ptr () -> m Bool

-- | A predefined <a>SignalAccumulator</a> for signals that return a
--   boolean values. The behavior that this accumulator gives is that a
--   return of <a>True</a> stops the signal emission: no further callbacks
--   will be invoked, while a return of <a>False</a> allows the emission to
--   continue. The idea here is that a <a>True</a> return indicates that
--   the callback handled the signal, and no further handling is needed.
--   
--   <i>Since: 2.4</i>
signalAccumulatorTrueHandled :: (HasCallStack, MonadIO m) => SignalInvocationHint -> GValue -> GValue -> Ptr () -> m Bool

-- | Adds an emission hook for a signal, which will get called for any
--   emission of that signal, independent of the instance. This is possible
--   only for signals which don't have <tt><i>G_SIGNAL_NO_HOOKS</i></tt>
--   flag set.
signalAddEmissionHook :: (HasCallStack, MonadIO m) => Word32 -> Word32 -> SignalEmissionHook -> m CULong

-- | Calls the original class closure of a signal. This function should
--   only be called from an overridden class closure; see
--   <a>signalOverrideClassClosure</a> and
--   <tt><i>g_signal_override_class_handler()</i></tt>.
signalChainFromOverridden :: (HasCallStack, MonadIO m) => [GValue] -> GValue -> m ()

-- | Connects a closure to a signal for a particular object.
signalConnectClosure :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> Closure -> Bool -> m CULong

-- | Connects a closure to a signal for a particular object.
signalConnectClosureById :: (HasCallStack, MonadIO m, IsObject a) => a -> Word32 -> Word32 -> Closure -> Bool -> m CULong

-- | Emits a signal.
--   
--   Note that <a>signalEmitv</a> doesn't change
--   <i><tt>returnValue</tt></i> if no handlers are connected, in contrast
--   to <tt><i>g_signal_emit()</i></tt> and
--   <tt><i>g_signal_emit_valist()</i></tt>.
signalEmitv :: (HasCallStack, MonadIO m) => [GValue] -> Word32 -> Word32 -> m (GValue)

-- | Returns the invocation hint of the innermost signal emission of
--   instance.
signalGetInvocationHint :: (HasCallStack, MonadIO m, IsObject a) => a -> m SignalInvocationHint

-- | Blocks a handler of an instance so it will not be called during any
--   signal emissions unless it is unblocked again. Thus "blocking" a
--   signal handler means to temporarily deactive it, a signal handler has
--   to be unblocked exactly the same amount of times it has been blocked
--   before to become active again.
--   
--   The <i><tt>handlerId</tt></i> has to be a valid signal handler id,
--   connected to a signal of <i><tt>instance</tt></i>.
signalHandlerBlock :: (HasCallStack, MonadIO m, IsObject a) => a -> CULong -> m ()

-- | Disconnects a handler from an instance so it will not be called during
--   any future or currently ongoing emissions of the signal it has been
--   connected to. The <i><tt>handlerId</tt></i> becomes invalid and may be
--   reused.
--   
--   The <i><tt>handlerId</tt></i> has to be a valid signal handler id,
--   connected to a signal of <i><tt>instance</tt></i>.
signalHandlerDisconnect :: (HasCallStack, MonadIO m, IsObject a) => a -> CULong -> m ()

-- | Finds the first signal handler that matches certain selection
--   criteria. The criteria mask is passed as an OR-ed combination of
--   <a>SignalMatchType</a> flags, and the criteria values are passed as
--   arguments. The match <i><tt>mask</tt></i> has to be non-0 for
--   successful matches. If no handler was found, 0 is returned.
signalHandlerFind :: (HasCallStack, MonadIO m, IsObject a) => a -> [SignalMatchType] -> Word32 -> Word32 -> Maybe (Closure) -> Ptr () -> Ptr () -> m CULong

-- | Returns whether <i><tt>handlerId</tt></i> is the ID of a handler
--   connected to <i><tt>instance</tt></i>.
signalHandlerIsConnected :: (HasCallStack, MonadIO m, IsObject a) => a -> CULong -> m Bool

-- | Undoes the effect of a previous <a>signalHandlerBlock</a> call. A
--   blocked handler is skipped during signal emissions and will not be
--   invoked, unblocking it (for exactly the amount of times it has been
--   blocked before) reverts its "blocked" state, so the handler will be
--   recognized by the signal system and is called upon future or currently
--   ongoing signal emissions (since the order in which handlers are called
--   during signal emissions is deterministic, whether the unblocked
--   handler in question is called as part of a currently ongoing emission
--   depends on how far that emission has proceeded yet).
--   
--   The <i><tt>handlerId</tt></i> has to be a valid id of a signal handler
--   that is connected to a signal of <i><tt>instance</tt></i> and is
--   currently blocked.
signalHandlerUnblock :: (HasCallStack, MonadIO m, IsObject a) => a -> CULong -> m ()

-- | Blocks all handlers on an instance that match a certain selection
--   criteria. The criteria mask is passed as an OR-ed combination of
--   <a>SignalMatchType</a> flags, and the criteria values are passed as
--   arguments. Passing at least one of the <a>SignalMatchTypeClosure</a>,
--   <a>SignalMatchTypeFunc</a> or <a>SignalMatchTypeData</a> match flags
--   is required for successful matches. If no handlers were found, 0 is
--   returned, the number of blocked handlers otherwise.
signalHandlersBlockMatched :: (HasCallStack, MonadIO m, IsObject a) => a -> [SignalMatchType] -> Word32 -> Word32 -> Maybe (Closure) -> Ptr () -> Ptr () -> m Word32

-- | Destroy all signal handlers of a type instance. This function is an
--   implementation detail of the <a>Object</a> dispose implementation, and
--   should not be used outside of the type system.
signalHandlersDestroy :: (HasCallStack, MonadIO m, IsObject a) => a -> m ()

-- | Disconnects all handlers on an instance that match a certain selection
--   criteria. The criteria mask is passed as an OR-ed combination of
--   <a>SignalMatchType</a> flags, and the criteria values are passed as
--   arguments. Passing at least one of the <a>SignalMatchTypeClosure</a>,
--   <a>SignalMatchTypeFunc</a> or <a>SignalMatchTypeData</a> match flags
--   is required for successful matches. If no handlers were found, 0 is
--   returned, the number of disconnected handlers otherwise.
signalHandlersDisconnectMatched :: (HasCallStack, MonadIO m, IsObject a) => a -> [SignalMatchType] -> Word32 -> Word32 -> Maybe (Closure) -> Ptr () -> Ptr () -> m Word32

-- | Unblocks all handlers on an instance that match a certain selection
--   criteria. The criteria mask is passed as an OR-ed combination of
--   <a>SignalMatchType</a> flags, and the criteria values are passed as
--   arguments. Passing at least one of the <a>SignalMatchTypeClosure</a>,
--   <a>SignalMatchTypeFunc</a> or <a>SignalMatchTypeData</a> match flags
--   is required for successful matches. If no handlers were found, 0 is
--   returned, the number of unblocked handlers otherwise. The match
--   criteria should not apply to any handlers that are not currently
--   blocked.
signalHandlersUnblockMatched :: (HasCallStack, MonadIO m, IsObject a) => a -> [SignalMatchType] -> Word32 -> Word32 -> Maybe (Closure) -> Ptr () -> Ptr () -> m Word32

-- | Returns whether there are any handlers connected to
--   <i><tt>instance</tt></i> for the given signal id and detail.
--   
--   If <i><tt>detail</tt></i> is 0 then it will only match handlers that
--   were connected without detail. If <i><tt>detail</tt></i> is non-zero
--   then it will match handlers connected both without detail and with the
--   given detail. This is consistent with how a signal emitted with
--   <i><tt>detail</tt></i> would be delivered to those handlers.
--   
--   Since 2.46 this also checks for a non-default class closure being
--   installed, as this is basically always what you want.
--   
--   One example of when you might use this is when the arguments to the
--   signal are difficult to compute. A class implementor may opt to not
--   emit the signal if no one is attached anyway, thus saving the cost of
--   building the arguments.
signalHasHandlerPending :: (HasCallStack, MonadIO m, IsObject a) => a -> Word32 -> Word32 -> Bool -> m Bool

-- | Lists the signals by id that a certain instance or interface type
--   created. Further information about the signals can be acquired through
--   <a>signalQuery</a>.
signalListIds :: (HasCallStack, MonadIO m) => GType -> m [Word32]

-- | Given the name of the signal and the type of object it connects to,
--   gets the signal's identifying integer. Emitting the signal by number
--   is somewhat faster than using the name each time.
--   
--   Also tries the ancestors of the given type.
--   
--   See <tt><i>g_signal_new()</i></tt> for details on allowed signal
--   names.
signalLookup :: (HasCallStack, MonadIO m) => Text -> GType -> m Word32

-- | Given the signal's identifier, finds its name.
--   
--   Two different signals may have the same name, if they have differing
--   types.
signalName :: (HasCallStack, MonadIO m) => Word32 -> m Text

-- | Overrides the class closure (i.e. the default handler) for the given
--   signal for emissions on instances of <i><tt>instanceType</tt></i>.
--   <i><tt>instanceType</tt></i> must be derived from the type to which
--   the signal belongs.
--   
--   See <a>signalChainFromOverridden</a> and
--   <tt><i>g_signal_chain_from_overridden_handler()</i></tt> for how to
--   chain up to the parent class closure from inside the overridden one.
signalOverrideClassClosure :: (HasCallStack, MonadIO m) => Word32 -> GType -> Closure -> m ()

-- | Internal function to parse a signal name into its
--   <i><tt>signalId</tt></i> and <i><tt>detail</tt></i> quark.
signalParseName :: (HasCallStack, MonadIO m) => Text -> GType -> Bool -> m ((Bool, Word32, Word32))

-- | Queries the signal system for in-depth information about a specific
--   signal. This function will fill in a user-provided structure to hold
--   signal-specific information. If an invalid signal id is passed in, the
--   <i><tt>signalId</tt></i> member of the <a>SignalQuery</a> is 0. All
--   members filled into the <a>SignalQuery</a> structure should be
--   considered constant and have to be left untouched.
signalQuery :: (HasCallStack, MonadIO m) => Word32 -> m (SignalQuery)

-- | Deletes an emission hook.
signalRemoveEmissionHook :: (HasCallStack, MonadIO m) => Word32 -> CULong -> m ()

-- | Stops a signal's current emission.
--   
--   This will prevent the default method from running, if the signal was
--   <a>SignalFlagsRunLast</a> and you connected normally (i.e. without the
--   "after" flag).
--   
--   Prints a warning if used on a signal which isn't being emitted.
signalStopEmission :: (HasCallStack, MonadIO m, IsObject a) => a -> Word32 -> Word32 -> m ()

-- | Stops a signal's current emission.
--   
--   This is just like <a>signalStopEmission</a> except it will look up the
--   signal id for you.
signalStopEmissionByName :: (HasCallStack, MonadIO m, IsObject a) => a -> Text -> m ()

-- | Creates a new closure which invokes the function found at the offset
--   <i><tt>structOffset</tt></i> in the class structure of the interface
--   or classed type identified by <i><tt>itype</tt></i>.
signalTypeCclosureNew :: (HasCallStack, MonadIO m) => GType -> Word32 -> m Closure

-- | Set the callback for a source as a <a>Closure</a>.
--   
--   If the source is not one of the standard GLib types, the
--   <i><tt>closureCallback</tt></i> and <i><tt>closureMarshal</tt></i>
--   fields of the <a>SourceFuncs</a> structure must have been filled in
--   with pointers to appropriate functions.
sourceSetClosure :: (HasCallStack, MonadIO m) => Source -> Closure -> m ()

-- | Sets a dummy callback for <i><tt>source</tt></i>. The callback will do
--   nothing, and if the source expects a <a>Bool</a> return value, it will
--   return <a>True</a>. (If the source expects any other type of return
--   value, it will return a 0/<a>Nothing</a> value; whatever
--   <a>valueInit</a> initializes a <a>Value</a> to for that type.)
--   
--   If the source is not one of the standard GLib types, the
--   <i><tt>closureCallback</tt></i> and <i><tt>closureMarshal</tt></i>
--   fields of the <a>SourceFuncs</a> structure must have been filled in
--   with pointers to appropriate functions.
sourceSetDummyCallback :: (HasCallStack, MonadIO m) => Source -> m ()

-- | Return a newly allocated string, which describes the contents of a
--   <a>Value</a>. The main purpose of this function is to describe
--   <a>Value</a> contents for debugging output, the way in which the
--   contents are described may change between different GLib versions.
strdupValueContents :: (HasCallStack, MonadIO m) => GValue -> m Text

-- | Registers a private class structure for a classed type; when the class
--   is allocated, the private structures for the class and all of its
--   parent types are allocated sequentially in the same memory block as
--   the public structures, and are zero-filled.
--   
--   This function should be called in the type's
--   <tt><i>get_type()</i></tt> function after the type is registered. The
--   private structure can be retrieved using the
--   <tt><i>G_TYPE_CLASS_GET_PRIVATE()</i></tt> macro.
--   
--   <i>Since: 2.24</i>
typeAddClassPrivate :: (HasCallStack, MonadIO m) => GType -> Word64 -> m ()

-- | <i>No description available in the introspection data.</i>
typeAddInstancePrivate :: (HasCallStack, MonadIO m) => GType -> Word64 -> m Int32

-- | Adds the dynamic <i><tt>interfaceType</tt></i> to
--   <i><tt>instantiableType</tt></i>. The information contained in the
--   <a>TypePlugin</a> structure pointed to by <i><tt>plugin</tt></i> is
--   used to manage the relationship.
typeAddInterfaceDynamic :: (HasCallStack, MonadIO m, IsTypePlugin a) => GType -> GType -> a -> m ()

-- | Adds the static <i><tt>interfaceType</tt></i> to
--   <i><tt>instantiableType</tt></i>. The information contained in the
--   <a>InterfaceInfo</a> structure pointed to by <i><tt>info</tt></i> is
--   used to manage the relationship.
typeAddInterfaceStatic :: (HasCallStack, MonadIO m) => GType -> GType -> InterfaceInfo -> m ()

-- | <i>No description available in the introspection data.</i>
typeCheckClassIsA :: (HasCallStack, MonadIO m) => TypeClass -> GType -> m Bool

-- | Private helper function to aid implementation of the
--   <tt><i>G_TYPE_CHECK_INSTANCE()</i></tt> macro.
typeCheckInstance :: (HasCallStack, MonadIO m) => TypeInstance -> m Bool

-- | <i>No description available in the introspection data.</i>
typeCheckInstanceIsA :: (HasCallStack, MonadIO m) => TypeInstance -> GType -> m Bool

-- | <i>No description available in the introspection data.</i>
typeCheckInstanceIsFundamentallyA :: (HasCallStack, MonadIO m) => TypeInstance -> GType -> m Bool

-- | <i>No description available in the introspection data.</i>
typeCheckIsValueType :: (HasCallStack, MonadIO m) => GType -> m Bool

-- | <i>No description available in the introspection data.</i>
typeCheckValue :: (HasCallStack, MonadIO m) => GValue -> m Bool

-- | <i>No description available in the introspection data.</i>
typeCheckValueHolds :: (HasCallStack, MonadIO m) => GValue -> GType -> m Bool

-- | Return a newly allocated and 0-terminated array of type IDs, listing
--   the child types of <i><tt>type</tt></i>.
typeChildren :: (HasCallStack, MonadIO m) => GType -> m [GType]

-- | If the interface type <i><tt>gType</tt></i> is currently in use,
--   returns its default interface vtable.
--   
--   <i>Since: 2.4</i>
typeDefaultInterfacePeek :: (HasCallStack, MonadIO m) => GType -> m TypeInterface

-- | Increments the reference count for the interface type
--   <i><tt>gType</tt></i>, and returns the default interface vtable for
--   the type.
--   
--   If the type is not currently in use, then the default vtable for the
--   type will be created and initalized by calling the base interface init
--   and default vtable init functions for the type (the
--   <i><tt>baseInit</tt></i> and <i><tt>classInit</tt></i> members of
--   <a>TypeInfo</a>). Calling <a>typeDefaultInterfaceRef</a> is useful
--   when you want to make sure that signals and properties for an
--   interface have been installed.
--   
--   <i>Since: 2.4</i>
typeDefaultInterfaceRef :: (HasCallStack, MonadIO m) => GType -> m TypeInterface

-- | Decrements the reference count for the type corresponding to the
--   interface default vtable <i><tt>gIface</tt></i>. If the type is
--   dynamic, then when no one is using the interface and all references
--   have been released, the finalize function for the interface's default
--   vtable (the <i><tt>classFinalize</tt></i> member of <a>TypeInfo</a>)
--   will be called.
--   
--   <i>Since: 2.4</i>
typeDefaultInterfaceUnref :: (HasCallStack, MonadIO m) => TypeInterface -> m ()

-- | Returns the length of the ancestry of the passed in type. This
--   includes the type itself, so that e.g. a fundamental type has depth 1.
typeDepth :: (HasCallStack, MonadIO m) => GType -> m Word32

-- | Ensures that the indicated <i><tt>type</tt></i> has been registered
--   with the type system, and its <tt><i>_class_init()</i></tt> method has
--   been run.
--   
--   In theory, simply calling the type's <tt><i>_get_type()</i></tt>
--   method (or using the corresponding macro) is supposed take care of
--   this. However, <tt><i>_get_type()</i></tt> methods are often marked
--   <tt><i>G_GNUC_CONST</i></tt> for performance reasons, even though this
--   is technically incorrect (since <tt><i>G_GNUC_CONST</i></tt> requires
--   that the function not have side effects, which
--   <tt><i>_get_type()</i></tt> methods do on the first call). As a
--   result, if you write a bare call to a <tt><i>_get_type()</i></tt>
--   macro, it may get optimized out by the compiler. Using
--   <a>typeEnsure</a> guarantees that the type's
--   <tt><i>_get_type()</i></tt> method is called.
--   
--   <i>Since: 2.34</i>
typeEnsure :: (HasCallStack, MonadIO m) => GType -> m ()

-- | Frees an instance of a type, returning it to the instance pool for the
--   type, if there is one.
--   
--   Like <tt><i>g_type_create_instance()</i></tt>, this function is
--   reserved for implementors of fundamental types.
typeFreeInstance :: (HasCallStack, MonadIO m) => TypeInstance -> m ()

-- | Lookup the type ID from a given type name, returning 0 if no type has
--   been registered under this name (this is the preferred method to find
--   out by name whether a specific type has been registered yet).
typeFromName :: (HasCallStack, MonadIO m) => Text -> m GType

-- | Internal function, used to extract the fundamental type ID portion.
--   Use <tt><i>G_TYPE_FUNDAMENTAL()</i></tt> instead.
typeFundamental :: (HasCallStack, MonadIO m) => GType -> m GType

-- | Returns the next free fundamental type id which can be used to
--   register a new fundamental type with <a>typeRegisterFundamental</a>.
--   The returned type ID represents the highest currently registered
--   fundamental type identifier.
typeFundamentalNext :: (HasCallStack, MonadIO m) => m GType

-- | Returns the number of instances allocated of the particular type; this
--   is only available if GLib is built with debugging support and the
--   instance_count debug flag is set (by setting the GOBJECT_DEBUG
--   variable to include instance-count).
--   
--   <i>Since: 2.44</i>
typeGetInstanceCount :: (HasCallStack, MonadIO m) => GType -> m Int32

-- | Returns the <a>TypePlugin</a> structure for <i><tt>type</tt></i>.
typeGetPlugin :: (HasCallStack, MonadIO m) => GType -> m TypePlugin

-- | Obtains data which has previously been attached to
--   <i><tt>type</tt></i> with <a>typeSetQdata</a>.
--   
--   Note that this does not take subtyping into account; data attached to
--   one type with <a>typeSetQdata</a> cannot be retrieved from a subtype
--   using <a>typeGetQdata</a>.
typeGetQdata :: (HasCallStack, MonadIO m) => GType -> Word32 -> m (Ptr ())

-- | Returns an opaque serial number that represents the state of the set
--   of registered types. Any time a type is registered this serial
--   changes, which means you can cache information based on type lookups
--   (such as <a>typeFromName</a>) and know if the cache is still valid at
--   a later time by comparing the current serial with the one at the type
--   lookup.
--   
--   <i>Since: 2.36</i>
typeGetTypeRegistrationSerial :: (HasCallStack, MonadIO m) => m Word32

-- | This function used to initialise the type system. Since GLib 2.36, the
--   type system is initialised automatically and this function does
--   nothing.

-- | <i>Deprecated: (Since version 2.36)the type system is now initialised
--   automatically</i>
typeInit :: (HasCallStack, MonadIO m) => m ()

-- | This function used to initialise the type system with debugging flags.
--   Since GLib 2.36, the type system is initialised automatically and this
--   function does nothing.
--   
--   If you need to enable debugging features, use the GOBJECT_DEBUG
--   environment variable.

-- | <i>Deprecated: (Since version 2.36)the type system is now initialised
--   automatically</i>
typeInitWithDebugFlags :: (HasCallStack, MonadIO m) => [TypeDebugFlags] -> m ()

-- | Return a newly allocated and 0-terminated array of type IDs, listing
--   the interface types that <i><tt>type</tt></i> conforms to.
typeInterfaces :: (HasCallStack, MonadIO m) => GType -> m [GType]

-- | If <i><tt>isAType</tt></i> is a derivable type, check whether
--   <i><tt>type</tt></i> is a descendant of <i><tt>isAType</tt></i>. If
--   <i><tt>isAType</tt></i> is an interface, check whether
--   <i><tt>type</tt></i> conforms to it.
typeIsA :: (HasCallStack, MonadIO m) => GType -> GType -> m Bool

-- | Get the unique name that is assigned to a type ID. Note that this
--   function (like all other GType API) cannot cope with invalid type IDs.
--   <tt><i>G_TYPE_INVALID</i></tt> may be passed to this function, as may
--   be any other validly registered type ID, but randomized type IDs
--   should not be passed in and will most likely lead to a crash.
typeName :: (HasCallStack, MonadIO m) => GType -> m Text

-- | <i>No description available in the introspection data.</i>
typeNameFromClass :: (HasCallStack, MonadIO m) => TypeClass -> m Text

-- | <i>No description available in the introspection data.</i>
typeNameFromInstance :: (HasCallStack, MonadIO m) => TypeInstance -> m Text

-- | Given a <i><tt>leafType</tt></i> and a <i><tt>rootType</tt></i> which
--   is contained in its anchestry, return the type that
--   <i><tt>rootType</tt></i> is the immediate parent of. In other words,
--   this function determines the type that is derived directly from
--   <i><tt>rootType</tt></i> which is also a base class of
--   <i><tt>leafType</tt></i>. Given a root type and a leaf type, this
--   function can be used to determine the types and order in which the
--   leaf type is descended from the root type.
typeNextBase :: (HasCallStack, MonadIO m) => GType -> GType -> m GType

-- | Return the direct parent type of the passed in type. If the passed in
--   type has no parent, i.e. is a fundamental type, 0 is returned.
typeParent :: (HasCallStack, MonadIO m) => GType -> m GType

-- | Get the corresponding quark of the type IDs name.
typeQname :: (HasCallStack, MonadIO m) => GType -> m Word32

-- | Queries the type system for information about a specific type. This
--   function will fill in a user-provided structure to hold type-specific
--   information. If an invalid <a>GType</a> is passed in, the
--   <i><tt>type</tt></i> member of the <a>TypeQuery</a> is 0. All members
--   filled into the <a>TypeQuery</a> structure should be considered
--   constant and have to be left untouched.
typeQuery :: (HasCallStack, MonadIO m) => GType -> m (TypeQuery)

-- | Registers <i><tt>typeName</tt></i> as the name of a new dynamic type
--   derived from <i><tt>parentType</tt></i>. The type system uses the
--   information contained in the <a>TypePlugin</a> structure pointed to by
--   <i><tt>plugin</tt></i> to manage the type and its instances (if not
--   abstract). The value of <i><tt>flags</tt></i> determines the nature
--   (e.g. abstract or not) of the type.
typeRegisterDynamic :: (HasCallStack, MonadIO m, IsTypePlugin a) => GType -> Text -> a -> [TypeFlags] -> m GType

-- | Registers <i><tt>typeId</tt></i> as the predefined identifier and
--   <i><tt>typeName</tt></i> as the name of a fundamental type. If
--   <i><tt>typeId</tt></i> is already registered, or a type named
--   <i><tt>typeName</tt></i> is already registered, the behaviour is
--   undefined. The type system uses the information contained in the
--   <a>TypeInfo</a> structure pointed to by <i><tt>info</tt></i> and the
--   <a>TypeFundamentalInfo</a> structure pointed to by
--   <i><tt>finfo</tt></i> to manage the type and its instances. The value
--   of <i><tt>flags</tt></i> determines additional characteristics of the
--   fundamental type.
typeRegisterFundamental :: (HasCallStack, MonadIO m) => GType -> Text -> TypeInfo -> TypeFundamentalInfo -> [TypeFlags] -> m GType

-- | Registers <i><tt>typeName</tt></i> as the name of a new static type
--   derived from <i><tt>parentType</tt></i>. The type system uses the
--   information contained in the <a>TypeInfo</a> structure pointed to by
--   <i><tt>info</tt></i> to manage the type and its instances (if not
--   abstract). The value of <i><tt>flags</tt></i> determines the nature
--   (e.g. abstract or not) of the type.
typeRegisterStatic :: (HasCallStack, MonadIO m) => GType -> Text -> TypeInfo -> [TypeFlags] -> m GType

-- | Attaches arbitrary data to a type.
typeSetQdata :: (HasCallStack, MonadIO m) => GType -> Word32 -> Ptr () -> m ()

-- | <i>No description available in the introspection data.</i>
typeTestFlags :: (HasCallStack, MonadIO m) => GType -> Word32 -> m Bool


-- | A union holding one collected value.
module GI.GObject.Unions.TypeCValue

-- | Memory-managed wrapper type.
newtype TypeCValue
TypeCValue :: (ManagedPtr TypeCValue) -> TypeCValue

-- | Construct a <a>TypeCValue</a> struct initialized to zero.
newZeroTypeCValue :: MonadIO m => m TypeCValue

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>TypeCValue</a>.
noTypeCValue :: Maybe TypeCValue

-- | Get the value of the “<tt>v_double</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeCValue #vDouble
--   </pre>
getTypeCValueVDouble :: MonadIO m => TypeCValue -> m Double

-- | Set the value of the “<tt>v_double</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeCValue [ #vDouble <a>:=</a> value ]
--   </pre>
setTypeCValueVDouble :: MonadIO m => TypeCValue -> Double -> m ()

-- | Get the value of the “<tt>v_int</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeCValue #vInt
--   </pre>
getTypeCValueVInt :: MonadIO m => TypeCValue -> m Int32

-- | Set the value of the “<tt>v_int</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeCValue [ #vInt <a>:=</a> value ]
--   </pre>
setTypeCValueVInt :: MonadIO m => TypeCValue -> Int32 -> m ()

-- | Get the value of the “<tt>v_int64</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeCValue #vInt64
--   </pre>
getTypeCValueVInt64 :: MonadIO m => TypeCValue -> m Int64

-- | Set the value of the “<tt>v_int64</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeCValue [ #vInt64 <a>:=</a> value ]
--   </pre>
setTypeCValueVInt64 :: MonadIO m => TypeCValue -> Int64 -> m ()

-- | Get the value of the “<tt>v_long</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeCValue #vLong
--   </pre>
getTypeCValueVLong :: MonadIO m => TypeCValue -> m CLong

-- | Set the value of the “<tt>v_long</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeCValue [ #vLong <a>:=</a> value ]
--   </pre>
setTypeCValueVLong :: MonadIO m => TypeCValue -> CLong -> m ()

-- | Set the value of the “<tt>v_pointer</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #vPointer
--   </pre>
clearTypeCValueVPointer :: MonadIO m => TypeCValue -> m ()

-- | Get the value of the “<tt>v_pointer</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> typeCValue #vPointer
--   </pre>
getTypeCValueVPointer :: MonadIO m => TypeCValue -> m (Ptr ())

-- | Set the value of the “<tt>v_pointer</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> typeCValue [ #vPointer <a>:=</a> value ]
--   </pre>
setTypeCValueVPointer :: MonadIO m => TypeCValue -> Ptr () -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Unions.TypeCValue.TypeCValue
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Unions.TypeCValue.TypeCValue tag


-- | <i>No description available in the introspection data.</i>
module GI.GObject.Unions.Value_Data_Union_

-- | Memory-managed wrapper type.
newtype Value_Data_Union_
Value_Data_Union_ :: (ManagedPtr Value_Data_Union_) -> Value_Data_Union_

-- | Construct a <a>Value_Data_Union_</a> struct initialized to zero.
newZeroValue_Data_Union_ :: MonadIO m => m Value_Data_Union_

-- | A convenience alias for <a>Nothing</a> :: <a>Maybe</a>
--   <a>Value_Data_Union_</a>.
noValue_Data_Union_ :: Maybe Value_Data_Union_

-- | Get the value of the “<tt>v_double</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> value_Data_Union_ #vDouble
--   </pre>
getValue_Data_Union_VDouble :: MonadIO m => Value_Data_Union_ -> m Double

-- | Set the value of the “<tt>v_double</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> value_Data_Union_ [ #vDouble <a>:=</a> value ]
--   </pre>
setValue_Data_Union_VDouble :: MonadIO m => Value_Data_Union_ -> Double -> m ()

-- | Get the value of the “<tt>v_float</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> value_Data_Union_ #vFloat
--   </pre>
getValue_Data_Union_VFloat :: MonadIO m => Value_Data_Union_ -> m Float

-- | Set the value of the “<tt>v_float</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> value_Data_Union_ [ #vFloat <a>:=</a> value ]
--   </pre>
setValue_Data_Union_VFloat :: MonadIO m => Value_Data_Union_ -> Float -> m ()

-- | Get the value of the “<tt>v_int</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> value_Data_Union_ #vInt
--   </pre>
getValue_Data_Union_VInt :: MonadIO m => Value_Data_Union_ -> m Int32

-- | Set the value of the “<tt>v_int</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> value_Data_Union_ [ #vInt <a>:=</a> value ]
--   </pre>
setValue_Data_Union_VInt :: MonadIO m => Value_Data_Union_ -> Int32 -> m ()

-- | Get the value of the “<tt>v_int64</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> value_Data_Union_ #vInt64
--   </pre>
getValue_Data_Union_VInt64 :: MonadIO m => Value_Data_Union_ -> m Int64

-- | Set the value of the “<tt>v_int64</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> value_Data_Union_ [ #vInt64 <a>:=</a> value ]
--   </pre>
setValue_Data_Union_VInt64 :: MonadIO m => Value_Data_Union_ -> Int64 -> m ()

-- | Get the value of the “<tt>v_long</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> value_Data_Union_ #vLong
--   </pre>
getValue_Data_Union_VLong :: MonadIO m => Value_Data_Union_ -> m CLong

-- | Set the value of the “<tt>v_long</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> value_Data_Union_ [ #vLong <a>:=</a> value ]
--   </pre>
setValue_Data_Union_VLong :: MonadIO m => Value_Data_Union_ -> CLong -> m ()

-- | Set the value of the “<tt>v_pointer</tt>” field to <a>Nothing</a>.
--   When <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>clear</a> #vPointer
--   </pre>
clearValue_Data_Union_VPointer :: MonadIO m => Value_Data_Union_ -> m ()

-- | Get the value of the “<tt>v_pointer</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> value_Data_Union_ #vPointer
--   </pre>
getValue_Data_Union_VPointer :: MonadIO m => Value_Data_Union_ -> m (Ptr ())

-- | Set the value of the “<tt>v_pointer</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> value_Data_Union_ [ #vPointer <a>:=</a> value ]
--   </pre>
setValue_Data_Union_VPointer :: MonadIO m => Value_Data_Union_ -> Ptr () -> m ()

-- | Get the value of the “<tt>v_uint</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> value_Data_Union_ #vUint
--   </pre>
getValue_Data_Union_VUint :: MonadIO m => Value_Data_Union_ -> m Word32

-- | Set the value of the “<tt>v_uint</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> value_Data_Union_ [ #vUint <a>:=</a> value ]
--   </pre>
setValue_Data_Union_VUint :: MonadIO m => Value_Data_Union_ -> Word32 -> m ()

-- | Get the value of the “<tt>v_uint64</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> value_Data_Union_ #vUint64
--   </pre>
getValue_Data_Union_VUint64 :: MonadIO m => Value_Data_Union_ -> m Word64

-- | Set the value of the “<tt>v_uint64</tt>” field. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> value_Data_Union_ [ #vUint64 <a>:=</a> value ]
--   </pre>
setValue_Data_Union_VUint64 :: MonadIO m => Value_Data_Union_ -> Word64 -> m ()

-- | Get the value of the “<tt>v_ulong</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> value_Data_Union_ #vUlong
--   </pre>
getValue_Data_Union_VUlong :: MonadIO m => Value_Data_Union_ -> m CULong

-- | Set the value of the “<tt>v_ulong</tt>” field. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>set</a> value_Data_Union_ [ #vUlong <a>:=</a> value ]
--   </pre>
setValue_Data_Union_VUlong :: MonadIO m => Value_Data_Union_ -> CULong -> m ()
instance Data.GI.Base.BasicTypes.WrappedPtr GI.GObject.Unions.Value_Data_Union_.Value_Data_Union_
instance (tag ~ 'Data.GI.Base.Attributes.AttrSet) => Data.GI.Base.Constructible.Constructible GI.GObject.Unions.Value_Data_Union_.Value_Data_Union_ tag


module GI.GObject.Unions


module GI.GObject
