ivory-0.1.0.8: Safe embedded C programming.

Safe HaskellNone
LanguageHaskell2010

Ivory.Language.MemArea

Synopsis

Documentation

newtype AreaInitM a Source #

This is used to generate fresh names for compound initializers.

Constructors

AreaInitM 
Instances
Monad AreaInitM Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

(>>=) :: AreaInitM a -> (a -> AreaInitM b) -> AreaInitM b #

(>>) :: AreaInitM a -> AreaInitM b -> AreaInitM b #

return :: a -> AreaInitM a #

fail :: String -> AreaInitM a #

Functor AreaInitM Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

fmap :: (a -> b) -> AreaInitM a -> AreaInitM b #

(<$) :: a -> AreaInitM b -> AreaInitM a #

Applicative AreaInitM Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

pure :: a -> AreaInitM a #

(<*>) :: AreaInitM (a -> b) -> AreaInitM a -> AreaInitM b #

liftA2 :: (a -> b -> c) -> AreaInitM a -> AreaInitM b -> AreaInitM c #

(*>) :: AreaInitM a -> AreaInitM b -> AreaInitM b #

(<*) :: AreaInitM a -> AreaInitM b -> AreaInitM a #

FreshName AreaInitM Source # 
Instance details

Defined in Ivory.Language.MemArea

ReaderM AreaInitM String Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

ask :: AreaInitM String #

StateM AreaInitM Int Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

get :: AreaInitM Int #

set :: Int -> AreaInitM () #

areaInit :: String -> Init area -> (Init, [Binding]) Source #

data MemArea (area :: Area *) Source #

Externally defined memory areas.

Instances
IvoryAddrOf MemArea Ref Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

addrOf :: IvoryArea area => MemArea area -> Ref Global area Source #

Eq (MemArea area) Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

(==) :: MemArea area -> MemArea area -> Bool #

(/=) :: MemArea area -> MemArea area -> Bool #

Show (MemArea area) Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

showsPrec :: Int -> MemArea area -> ShowS #

show :: MemArea area -> String #

showList :: [MemArea area] -> ShowS #

bindingArea :: Bool -> Binding -> Area Source #

Create an area from an auxillary binding.

area :: forall area. (IvoryArea area, IvoryZero area) => Sym -> Maybe (Init area) -> MemArea area Source #

Define a global constant. Requires an IvoryZero constraint to ensure the area has an initializers, but does not explicilty initialize to 0 so that the value is placed in the .bss section.

importArea :: IvoryArea area => Sym -> String -> MemArea area Source #

Import an external symbol from a header.

newtype ConstMemArea (area :: Area *) Source #

Constructors

ConstMemArea (MemArea area) 
Instances
IvoryAddrOf ConstMemArea ConstRef Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

addrOf :: IvoryArea area => ConstMemArea area -> ConstRef Global area Source #

constArea :: forall area. IvoryArea area => Sym -> Init area -> ConstMemArea area Source #

Constant memory area definition.

importConstArea :: IvoryArea area => Sym -> String -> ConstMemArea area Source #

Import an external symbol from a header.

class IvoryAddrOf (mem :: Area * -> *) ref | mem -> ref, ref -> mem where Source #

Turn a memory area into a reference.

Minimal complete definition

addrOf

Methods

addrOf :: IvoryArea area => mem area -> ref Global area Source #

Instances
IvoryAddrOf ConstMemArea ConstRef Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

addrOf :: IvoryArea area => ConstMemArea area -> ConstRef Global area Source #

IvoryAddrOf MemArea Ref Source # 
Instance details

Defined in Ivory.Language.MemArea

Methods

addrOf :: IvoryArea area => MemArea area -> Ref Global area Source #