| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Graphics.QML.Marshal
Description
Type classs and instances for marshalling values between Haskell and QML.
- class Marshal t where
- type MarshalMode t c d
- marshaller :: MarshallerFor t
- type family ModeBidi c
- type family ModeFrom c
- type family ModeTo c
- type family ModeRetVoid c
- type family ModeObjBidi a c
- type family ModeObjFrom a c
- type family ModeObjTo a c
- data Yes
- type CanGetFrom t = MarshalMode t ICanGetFrom ()
- data ICanGetFrom
- type CanPassTo t = MarshalMode t ICanPassTo ()
- data ICanPassTo
- type CanReturnTo t = MarshalMode t ICanReturnTo ()
- data ICanReturnTo
- type IsObjType t = MarshalMode t IIsObjType ()
- data IIsObjType
- type GetObjType t = MarshalMode t IGetObjType ()
- data IGetObjType
- data Marshaller t u v w x y
- data Ignored = Ignored
- bidiMarshallerIO :: forall a b. (Marshal a, CanGetFrom a ~ Yes, CanPassTo a ~ Yes) => (a -> IO b) -> (b -> IO a) -> BidiMarshaller a b
- bidiMarshaller :: forall a b. (Marshal a, CanGetFrom a ~ Yes, CanPassTo a ~ Yes) => (a -> b) -> (b -> a) -> BidiMarshaller a b
- fromMarshallerIO :: forall a b. (Marshal a, CanGetFrom a ~ Yes) => (a -> IO b) -> FromMarshaller a b
- fromMarshaller :: forall a b. (Marshal a, CanGetFrom a ~ Yes) => (a -> b) -> FromMarshaller a b
- toMarshallerIO :: forall a b. (Marshal a, CanPassTo a ~ Yes) => (b -> IO a) -> ToMarshaller a b
- toMarshaller :: forall a b. (Marshal a, CanPassTo a ~ Yes) => (b -> a) -> ToMarshaller a b
Marshalling Type-class
The class Marshal allows Haskell values to be marshalled to and from the
QML environment.
Associated Types
type MarshalMode t c d Source
The MarshalMode associated type family specifies the marshalling
capabilities offered by the instance. c indicates the capability being
queried. d is dummy parameter which allows certain instances to type
check.
MarshalMode for non-object types with bidirectional marshalling.
Instances
| type ModeBidi IGetObjType | |
| type ModeBidi IIsObjType | |
| type ModeBidi ICanReturnTo = Yes | |
| type ModeBidi ICanPassTo = Yes | |
| type ModeBidi ICanGetFrom = Yes |
MarshalMode for non-object types with from-only marshalling.
Instances
| type ModeFrom IGetObjType | |
| type ModeFrom IIsObjType | |
| type ModeFrom ICanReturnTo | |
| type ModeFrom ICanPassTo | |
| type ModeFrom ICanGetFrom = Yes |
MarshalMode for non-object types with to-only marshalling.
Instances
| type ModeTo IGetObjType | |
| type ModeTo IIsObjType | |
| type ModeTo ICanReturnTo = Yes | |
| type ModeTo ICanPassTo = Yes | |
| type ModeTo ICanGetFrom |
type family ModeRetVoid c Source
MarshalMode for void in method returns.
Instances
| type ModeRetVoid IGetObjType | |
| type ModeRetVoid IIsObjType | |
| type ModeRetVoid ICanReturnTo = Yes | |
| type ModeRetVoid ICanPassTo | |
| type ModeRetVoid ICanGetFrom |
type family ModeObjBidi a c Source
MarshalMode for object types with bidirectional marshalling.
Instances
| type ModeObjBidi a IGetObjType = a | |
| type ModeObjBidi a IIsObjType = Yes | |
| type ModeObjBidi a ICanReturnTo = Yes | |
| type ModeObjBidi a ICanPassTo = Yes | |
| type ModeObjBidi a ICanGetFrom = Yes |
type family ModeObjFrom a c Source
MarshalMode for object types with from-only marshalling.
Instances
| type ModeObjFrom a IGetObjType = a | |
| type ModeObjFrom a IIsObjType = Yes | |
| type ModeObjFrom a ICanReturnTo | |
| type ModeObjFrom a ICanPassTo | |
| type ModeObjFrom a ICanGetFrom = Yes |
type family ModeObjTo a c Source
MarshalMode for object types with to-only marshalling.
Instances
| type ModeObjTo a IGetObjType = a | |
| type ModeObjTo a IIsObjType = Yes | |
| type ModeObjTo a ICanReturnTo = Yes | |
| type ModeObjTo a ICanPassTo = Yes | |
| type ModeObjTo a ICanGetFrom |
type CanGetFrom t = MarshalMode t ICanGetFrom () Source
Type function equal to Yes if the marshallable type t supports being
received from QML.
data ICanGetFrom Source
Type index into MarshalMode for querying if the mode supports receiving
values from QML.
Instances
| type ModeRetVoid ICanGetFrom | |
| type ModeTo ICanGetFrom | |
| type ModeFrom ICanGetFrom = Yes | |
| type ModeBidi ICanGetFrom = Yes | |
| type ModeObjTo a ICanGetFrom | |
| type ModeObjFrom a ICanGetFrom = Yes | |
| type ModeObjBidi a ICanGetFrom = Yes | |
| type MarshalMode [a] ICanGetFrom d = MarshalMode a ICanGetFrom d | |
| type MarshalMode (Maybe a) ICanGetFrom d = MarshalMode a ICanGetFrom d |
type CanPassTo t = MarshalMode t ICanPassTo () Source
Type function equal to Yes if the marshallable type t supports being
passed to QML.
data ICanPassTo Source
Type index into MarshalMode for querying if the mode supports passing
values to QML.
Instances
| type ModeRetVoid ICanPassTo | |
| type ModeTo ICanPassTo = Yes | |
| type ModeFrom ICanPassTo | |
| type ModeBidi ICanPassTo = Yes | |
| type ModeObjTo a ICanPassTo = Yes | |
| type ModeObjFrom a ICanPassTo | |
| type ModeObjBidi a ICanPassTo = Yes | |
| type MarshalMode [a] ICanPassTo d = MarshalMode a ICanPassTo d | |
| type MarshalMode (Maybe a) ICanPassTo d = MarshalMode a ICanPassTo d |
type CanReturnTo t = MarshalMode t ICanReturnTo () Source
Type function equal to Yes if the marshallable type t supports being
returned to QML.
data ICanReturnTo Source
Type index into MarshalMode for querying if the mode supports returning
values to QML.
Instances
| type ModeRetVoid ICanReturnTo = Yes | |
| type ModeTo ICanReturnTo = Yes | |
| type ModeFrom ICanReturnTo | |
| type ModeBidi ICanReturnTo = Yes | |
| type ModeObjTo a ICanReturnTo = Yes | |
| type ModeObjFrom a ICanReturnTo | |
| type ModeObjBidi a ICanReturnTo = Yes | |
| type MarshalMode [a] ICanReturnTo d = MarshalMode a ICanReturnTo d | |
| type MarshalMode (Maybe a) ICanReturnTo d = MarshalMode a ICanReturnTo d |
type IsObjType t = MarshalMode t IIsObjType () Source
Type function equal to Yes if the marshallable type t is an object.
data IIsObjType Source
Type index into MarshalMode for querying if the mode supports an object
type.
Instances
| type ModeRetVoid IIsObjType | |
| type ModeTo IIsObjType | |
| type ModeFrom IIsObjType | |
| type ModeBidi IIsObjType | |
| type ModeObjTo a IIsObjType = Yes | |
| type ModeObjFrom a IIsObjType = Yes | |
| type ModeObjBidi a IIsObjType = Yes | |
| type MarshalMode [a] IIsObjType d | |
| type MarshalMode (Maybe a) IIsObjType d |
type GetObjType t = MarshalMode t IGetObjType () Source
Type function which returns the type encapsulated by the object handles
used by the marshallable type t.
data IGetObjType Source
Type index into MarshalMode for querying the type encapsulated by the
mode's object handles.
Instances
| type ModeRetVoid IGetObjType | |
| type ModeTo IGetObjType | |
| type ModeFrom IGetObjType | |
| type ModeBidi IGetObjType | |
| type ModeObjTo a IGetObjType = a | |
| type ModeObjFrom a IGetObjType = a | |
| type ModeObjBidi a IGetObjType = a | |
| type MarshalMode [a] IGetObjType d | |
| type MarshalMode (Maybe a) IGetObjType d |
data Marshaller t u v w x y Source
Encapsulates the functionality to needed to implement an instance of
Marshal so that such instances can be defined without access to
implementation details.
Data Types
Represents an argument whose value is ignored.
Constructors
| Ignored |
Instances
| Marshal Ignored | |
| type MarshalMode Ignored c d = ModeFrom c |
Custom Marshallers
bidiMarshallerIO :: forall a b. (Marshal a, CanGetFrom a ~ Yes, CanPassTo a ~ Yes) => (a -> IO b) -> (b -> IO a) -> BidiMarshaller a b Source
Provides a bidirectional Marshaller which allows you to define an
instance of Marshal for your own type b in terms of another marshallable
type a. Type b should have a MarshalMode of ModeObjBidi or
ModeBidi depending on whether a was an object type or not.
bidiMarshaller :: forall a b. (Marshal a, CanGetFrom a ~ Yes, CanPassTo a ~ Yes) => (a -> b) -> (b -> a) -> BidiMarshaller a b Source
Variant of bidiMarshallerIO where the conversion functions between types
a and b do not live in the IO monad.
fromMarshallerIO :: forall a b. (Marshal a, CanGetFrom a ~ Yes) => (a -> IO b) -> FromMarshaller a b Source
Provides a "from" Marshaller which allows you to define an instance of
Marshal for your own type b in terms of another marshallable type a.
Type b should have a MarshalMode of ModeObjFrom or ModeFrom
depending on whether a was an object type or not.
fromMarshaller :: forall a b. (Marshal a, CanGetFrom a ~ Yes) => (a -> b) -> FromMarshaller a b Source
Variant of fromMarshallerIO where the conversion function between types
a and b does not live in the IO monad.
toMarshallerIO :: forall a b. (Marshal a, CanPassTo a ~ Yes) => (b -> IO a) -> ToMarshaller a b Source
Provides a "to" Marshaller which allows you to define an instance of
Marshal for your own type b in terms of another marshallable type a.
Type b should have a MarshalMode of ModeObjTo or ModeTo
depending on whether a was an object type or not.
toMarshaller :: forall a b. (Marshal a, CanPassTo a ~ Yes) => (b -> a) -> ToMarshaller a b Source
Variant of toMarshallerIO where the conversion function between types
a and b does not live in the IO monad.