Safe Haskell | None |
---|---|
Language | Haskell2010 |
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
class Marshal t where
The class Marshal
allows Haskell values to be marshalled to and from the
QML environment.
type MarshalMode t c d
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.
marshaller :: MarshallerFor t
Yields the Marshaller
for the type t
.
type family ModeBidi c
MarshalMode
for non-object types with bidirectional marshalling.
type ModeBidi IGetObjType | |
type ModeBidi IIsObjType | |
type ModeBidi ICanReturnTo = Yes | |
type ModeBidi ICanPassTo = Yes | |
type ModeBidi ICanGetFrom = Yes |
type family ModeFrom c
MarshalMode
for non-object types with from-only marshalling.
type ModeFrom IGetObjType | |
type ModeFrom IIsObjType | |
type ModeFrom ICanReturnTo | |
type ModeFrom ICanPassTo | |
type ModeFrom ICanGetFrom = Yes |
type family ModeTo c
MarshalMode
for non-object types with to-only marshalling.
type ModeTo IGetObjType | |
type ModeTo IIsObjType | |
type ModeTo ICanReturnTo = Yes | |
type ModeTo ICanPassTo = Yes | |
type ModeTo ICanGetFrom |
type family ModeRetVoid c
MarshalMode
for void in method returns.
type ModeRetVoid IGetObjType | |
type ModeRetVoid IIsObjType | |
type ModeRetVoid ICanReturnTo = Yes | |
type ModeRetVoid ICanPassTo | |
type ModeRetVoid ICanGetFrom |
type family ModeObjBidi a c
MarshalMode
for object types with bidirectional marshalling.
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
MarshalMode
for object types with from-only marshalling.
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
MarshalMode
for object types with to-only marshalling.
type ModeObjTo a IGetObjType = a | |
type ModeObjTo a IIsObjType = Yes | |
type ModeObjTo a ICanReturnTo = Yes | |
type ModeObjTo a ICanPassTo = Yes | |
type ModeObjTo a ICanGetFrom |
data Yes
Type value indicating a capability is supported.
type CanGetFrom t = MarshalMode t ICanGetFrom ()
Type function equal to Yes
if the marshallable type t
supports being
received from QML.
data ICanGetFrom
Type index into MarshalMode
for querying if the mode supports receiving
values from QML.
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 ()
Type function equal to Yes
if the marshallable type t
supports being
passed to QML.
data ICanPassTo
Type index into MarshalMode
for querying if the mode supports passing
values to QML.
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 ()
Type function equal to Yes
if the marshallable type t
supports being
returned to QML.
data ICanReturnTo
Type index into MarshalMode
for querying if the mode supports returning
values to QML.
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 ()
Type function equal to Yes
if the marshallable type t
is an object.
data IIsObjType
Type index into MarshalMode
for querying if the mode supports an object
type.
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 ()
Type function which returns the type encapsulated by the object handles
used by the marshallable type t
.
data IGetObjType
Type index into MarshalMode
for querying the type encapsulated by the
mode's object handles.
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
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
data Ignored
Represents an argument whose value is ignored.
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
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
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
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
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
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
Variant of toMarshallerIO
where the conversion function between types
a
and b
does not live in the IO monad.