ivory-0.1.0.8: Safe embedded C programming.

Safe HaskellNone
LanguageHaskell2010

Ivory.Language.Ref

Synopsis

Documentation

class IvoryRef (ref :: RefScope -> Area * -> *) Source #

TODO remove class, leave function only

Minimal complete definition

unwrapRef

Instances
IvoryRef (Pointer Valid c) Source # 
Instance details

Defined in Ivory.Language.Ref

Methods

unwrapRef :: IvoryVar a => Pointer Valid c s (Stored a) -> Expr

class IvoryVar a => IvoryStore a Source #

Things that can be safely stored in references.

Instances
IvoryStore IChar Source # 
Instance details

Defined in Ivory.Language.Ref

IvoryStore Sint64 Source # 
Instance details

Defined in Ivory.Language.Ref

IvoryStore Sint32 Source # 
Instance details

Defined in Ivory.Language.Ref

IvoryStore Sint16 Source # 
Instance details

Defined in Ivory.Language.Ref

IvoryStore Sint8 Source # 
Instance details

Defined in Ivory.Language.Ref

IvoryStore Uint64 Source # 
Instance details

Defined in Ivory.Language.Ref

IvoryStore Uint32 Source # 
Instance details

Defined in Ivory.Language.Ref

IvoryStore Uint16 Source # 
Instance details

Defined in Ivory.Language.Ref

IvoryStore Uint8 Source # 
Instance details

Defined in Ivory.Language.Ref

IvoryStore IBool Source # 
Instance details

Defined in Ivory.Language.Ref

IvoryStore IDouble Source # 
Instance details

Defined in Ivory.Language.Float

IvoryStore IFloat Source # 
Instance details

Defined in Ivory.Language.Float

ANat n => IvoryStore (Ix n) Source # 
Instance details

Defined in Ivory.Language.Array

IvoryRep (BitRep n) => IvoryStore (Bits n) Source # 
Instance details

Defined in Ivory.Language.BitData.Bits

(KnownConstancy c, IvoryArea a) => IvoryStore (Pointer Nullable c Global a) Source # 
Instance details

Defined in Ivory.Language.Ref

type Ref = Pointer Valid Mutable Source #

A non-null pointer to a memory area.

constRef :: IvoryArea area => Ref s area -> ConstRef s area Source #

Turn a reference into a constant reference. TODO deprecate in favor of pointerCastToConst

deref :: forall eff ref s a. (IvoryStore a, IvoryVar a, IvoryVar (ref s (Stored a)), IvoryRef ref) => ref s (Stored a) -> Ivory eff a Source #

Dereferenceing.

refCopy :: forall eff sTo ref sFrom a. (IvoryRef ref, IvoryVar (Ref sTo a), IvoryVar (ref sFrom a), IvoryArea a) => Ref sTo a -> ref sFrom a -> Ivory eff () Source #

Memory copy. Emits an assertion that the two references are unequal.

store :: forall eff s a. IvoryStore a => Ref s (Stored a) -> a -> Ivory eff () Source #