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

Safe HaskellNone
LanguageHaskell98

Data.GI.Base.Overloading

Contents

Description

Helpers for dealing with GObjects.

Synopsis

Type level inheritance

type family ParentTypes a :: [*] Source

The direct parents of this object: its direct parent type, if any, and the interfaces it implements. The interfaces inherited from parent types can be omitted.

type family IsDescendantOf parent descendant :: Constraint Source

Check that a type is in the list of GObjectParents of another GObject-derived type.

Equations

IsDescendantOf d d = () ~ () 
IsDescendantOf p d = CheckForAncestorType d p (ParentTypes d) ~ HasAncestor p d 

Looking up attributes in parent types

type family AttributeList a :: [(Symbol, *)] Source

The list of attributes defined for a given type. Each element of the list is a tuple, with the first element of the tuple the name of the attribute, and the second the type encoding the information of the attribute. This type will be an instance of AttrInfo.

type family ResolveAttribute s o :: * Source

Return the type encoding the attribute information for a given type and attribute.

Equations

ResolveAttribute s o = FindElement s (AttributeList o) (UnknownAttribute "Error: could not find attribute" s "for object" o) 

type family HasAttribute attr o Source

A constraint imposing that the given object has the given attribute.

Equations

HasAttribute attr o = IsElem attr (AttributeList o) HasAttribute (DoesNotHaveAttribute "Error: attribute" attr "not found for type" o) ~ HasAttribute 

class HasAttr attr o Source

A constraint that enforces that the given type has a given attribute.

Instances

HasAttribute attr o => HasAttr attr o Source 

Looking up signals in parent types

type family SignalList a :: [(Symbol, *)] Source

The list of signals defined for a given type. Each element of the list is a tuple, with the first element of the tuple the name of the signal, and the second the type encoding the information of the signal. This type will be an instance of SignalInfo.

type family ResolveSignal s o :: * Source

Return the type encoding the signal information for a given type and signal.

Equations

ResolveSignal s o = FindElement s (SignalList o) (UnknownSignal "Error: could not find signal" s "for object" o) 

type family HasSignal s o Source

A constraint enforcing that the signal exists for the given object, or one of its ancestors.

Equations

HasSignal s o = IsElem s (SignalList o) HasSignal (DoesNotHaveSignal "Error: signal" s "not found for type" o) ~ HasSignal