ivory-0.1.0.9: Safe embedded C programming.

Safe HaskellNone
LanguageHaskell2010

Ivory.Language.Cast

Description

Safe casting. We assume Floats have 32 bits and Doubles have 64.

Synopsis

Documentation

safeCast :: SafeCast from to => from -> to Source #

ivoryCast :: forall a b. (IvoryExpr a, IvoryExpr b) => a -> b Source #

castWith :: RuntimeCast from to => to -> from -> to Source #

Cast with a default value if the casted value is too large.

castDefault :: (Default to, RuntimeCast from to) => from -> to Source #

`CastWith 0` for types for which 0 is defined.

signCast :: SignCast from to => from -> to Source #

class (IvoryExpr from, IvoryExpr to) => SafeCast from to Source #

Statically safe casts.

Instances
SafeCast IChar IChar Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

safeCast :: IChar -> IChar Source #

SafeCast Sint64 Sint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint64 IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint32 Sint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint32 Sint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint32 IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint32 IFloat Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint16 Sint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint16 Sint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint16 Sint16 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint16 IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint16 IFloat Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint8 Sint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint8 Sint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint8 Sint16 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint8 Sint8 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

safeCast :: Sint8 -> Sint8 Source #

SafeCast Sint8 IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Sint8 IFloat Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint64 Uint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint64 IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint32 Sint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint32 Uint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint32 Uint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint32 IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint32 IFloat Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint16 Sint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint16 Sint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint16 Uint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint16 Uint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint16 Uint16 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint16 IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint16 IFloat Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint8 Sint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint8 Sint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint8 Sint16 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint8 Uint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint8 Uint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint8 Uint16 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint8 Uint8 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

safeCast :: Uint8 -> Uint8 Source #

SafeCast Uint8 IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast Uint8 IFloat Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IBool IChar Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

safeCast :: IBool -> IChar Source #

SafeCast IBool Sint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IBool Sint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IBool Sint16 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IBool Sint8 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

safeCast :: IBool -> Sint8 Source #

SafeCast IBool Uint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IBool Uint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IBool Uint16 Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IBool Uint8 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

safeCast :: IBool -> Uint8 Source #

SafeCast IBool IBool Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

safeCast :: IBool -> IBool Source #

SafeCast IBool IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IBool IFloat Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IDouble IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IFloat IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

SafeCast IFloat IFloat Source # 
Instance details

Defined in Ivory.Language.Cast

(ANat n, IvoryIntegral to, Default to) => SafeCast (Ix n) to Source # 
Instance details

Defined in Ivory.Language.Array

Methods

safeCast :: Ix n -> to Source #

class (IvoryExpr from, IvoryExpr to, Default to) => RuntimeCast from to Source #

Casts requiring runtime checks.

Minimal complete definition

inBounds

Instances
(Bounded from, Bounded to, IvoryOrd from, IvoryOrd to, IvoryExpr from, IvoryExpr to, Default from, Default to, SafeCast to from) => RuntimeCast from to Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

inBounds :: to -> from -> IBool

(Default to, Bounded to, IvoryIntegral to, SafeCast to IDouble) => RuntimeCast IDouble to Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

inBounds :: to -> IDouble -> IBool

(Default to, Bounded to, IvoryIntegral to, SafeCast to IFloat) => RuntimeCast IFloat to Source #

Casting from a floating to a Integral type always results in truncation.

Instance details

Defined in Ivory.Language.Cast

Methods

inBounds :: to -> IFloat -> IBool

class Default a Source #

Default values for expression types.

Minimal complete definition

defaultVal

Instances
Default Sint64 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

defaultVal :: Sint64

Default Sint32 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

defaultVal :: Sint32

Default Sint16 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

defaultVal :: Sint16

Default Sint8 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

defaultVal :: Sint8

Default Uint64 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

defaultVal :: Uint64

Default Uint32 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

defaultVal :: Uint32

Default Uint16 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

defaultVal :: Uint16

Default Uint8 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

defaultVal :: Uint8

Default IDouble Source # 
Instance details

Defined in Ivory.Language.Cast

Default IFloat Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

defaultVal :: IFloat

class (IvoryExpr from, IvoryExpr to) => SignCast from to Source #

SignCast takes a unsigned number into its signed form iff safe, otherwise 0, and same with signed into unsigned

Minimal complete definition

signCast

Instances
SignCast Sint64 Uint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SignCast Sint32 Uint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SignCast Sint16 Uint16 Source # 
Instance details

Defined in Ivory.Language.Cast

SignCast Sint8 Uint8 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

signCast :: Sint8 -> Uint8 Source #

SignCast Uint64 Sint64 Source # 
Instance details

Defined in Ivory.Language.Cast

SignCast Uint32 Sint32 Source # 
Instance details

Defined in Ivory.Language.Cast

SignCast Uint16 Sint16 Source # 
Instance details

Defined in Ivory.Language.Cast

SignCast Uint8 Sint8 Source # 
Instance details

Defined in Ivory.Language.Cast

Methods

signCast :: Uint8 -> Sint8 Source #