module Lib(getp, setp, exit, gett, sett) where {- TML library functions -} import Data import Control import Array import SArray exit vl = do v <- lit (vl :: Tint) ret $ v -- Pointers are represented as 1-element arrays. getp ptr = do n <- lit (0 :: Tint) get ptr n setp ptr v = do n <- lit (0 :: Tint) set ptr n v -- Shortcuts for struct-of-pointer dereference to struct followed by -- destructuring. This uses multiple signals (arrays) instead of a -- single multi-valued array. -- t is for 'transposed' gett a n = do packed <- gets a n unpack packed sett a n v = do packed <- pack v sets a n packed