ivory-0.1.0.7: Safe embedded C programming.

Safe HaskellNone
LanguageHaskell2010

Ivory.Language.Type

Synopsis

Documentation

class IvoryType t where Source #

The connection between Haskell and Ivory types.

Minimal complete definition

ivoryType

Methods

ivoryType :: Proxy t -> Type Source #

Instances

IvoryType () Source #

void type

Methods

ivoryType :: Proxy * () -> Type Source #

IvoryType OpaqueType Source # 
IvoryType IString Source # 
IvoryType IChar Source # 
IvoryType Sint64 Source # 
IvoryType Sint32 Source # 
IvoryType Sint16 Source # 
IvoryType Sint8 Source # 
IvoryType Uint64 Source # 
IvoryType Uint32 Source # 
IvoryType Uint16 Source # 
IvoryType Uint8 Source # 
IvoryType IBool Source # 
IvoryType IDouble Source # 
IvoryType IFloat Source # 
ProcType proc => IvoryType (Def proc) Source # 

Methods

ivoryType :: Proxy * (Def proc) -> Type Source #

ProcType proc => IvoryType (ProcPtr proc) Source # 

Methods

ivoryType :: Proxy * (ProcPtr proc) -> Type Source #

ANat n => IvoryType (Ix n) Source # 

Methods

ivoryType :: Proxy * (Ix n) -> Type Source #

IvoryRep (BitRep n) => IvoryType (Bits n) Source # 

Methods

ivoryType :: Proxy * (Bits n) -> Type Source #

(KnownNullability n, KnownConstancy c, IvoryArea a) => IvoryType (Pointer n c s a) Source # 

Methods

ivoryType :: Proxy * (Pointer n c s a) -> Type Source #

class IvoryType t => IvoryVar t where Source #

Lifting a variable name.

Minimal complete definition

wrapVar, unwrapExpr

Methods

wrapVar :: Var -> t Source #

unwrapExpr :: t -> Expr Source #

Instances

IvoryVar IString Source # 
IvoryVar IChar Source # 
IvoryVar Sint64 Source # 
IvoryVar Sint32 Source # 
IvoryVar Sint16 Source # 
IvoryVar Sint8 Source # 
IvoryVar Uint64 Source # 
IvoryVar Uint32 Source # 
IvoryVar Uint16 Source # 
IvoryVar Uint8 Source # 
IvoryVar IBool Source # 
IvoryVar IDouble Source # 
IvoryVar IFloat Source # 
ProcType proc => IvoryVar (ProcPtr proc) Source # 

Methods

wrapVar :: Var -> ProcPtr proc Source #

unwrapExpr :: ProcPtr proc -> Expr Source #

ANat n => IvoryVar (Ix n) Source # 

Methods

wrapVar :: Var -> Ix n Source #

unwrapExpr :: Ix n -> Expr Source #

IvoryRep (BitRep n) => IvoryVar (Bits n) Source # 

Methods

wrapVar :: Var -> Bits n Source #

unwrapExpr :: Bits n -> Expr Source #

(KnownNullability n, KnownConstancy c, IvoryArea a) => IvoryVar (Pointer n c s a) Source # 

Methods

wrapVar :: Var -> Pointer n c s a Source #

unwrapExpr :: Pointer n c s a -> Expr Source #

class IvoryVar t => IvoryExpr t where Source #

Unwrapping for Ivory expressions.

Minimal complete definition

wrapExpr

Methods

wrapExpr :: Expr -> t Source #

typedExpr :: forall t. IvoryVar t => t -> Typed Expr Source #

exprBinop :: IvoryExpr a => (Expr -> Expr -> Expr) -> a -> a -> a Source #

exprUnary :: IvoryExpr a => (Expr -> Expr) -> a -> a Source #

data OpaqueType Source #

An opaque type that can never be implemented.

Constructors

OpaqueType