@@ -25,6 +25,7 @@ free (CPt p _ _) = mfree p
2525ctype : CPtr -> CType
2626ctype (CPt _ _ t) = t
2727
28+
2829get : (p : CPtr) -> IO (translate (ctype p))
2930get (CPt p o I8) = prim_peek8 p o
3031get (CPt p o I16) = prim_peek16 p o
@@ -33,10 +34,31 @@ get (CPt p o I64) = prim_peek64 p o
3334get (CPt p o FLOAT) = prim_peekSingle p o
3435get (CPt p o DOUBLE) = prim_peekDouble p o
3536get (CPt p o PTR) = prim_peekPtr p o
37+get (CPt p o (ARRAY n t)) = ?getArray
38+get (CPt p o (UNION xs)) = ?getUnion
39+get (CPt p o (STRUCT xs)) = ?getStruct
40+get (CPt p o (PACKEDSTRUCT xs)) = ?getPacked
3641
3742
3843put : (p : CPtr) -> (translate (ctype p)) -> IO ()
39−put _ _ = putStrLn "putting"
44+put (CPt p o I8) x = do _ <- prim_poke8 p o x
45+ return ()
46+put (CPt p o I16) x = do _ <- prim_poke16 p o x
47+ return ()
48+put (CPt p o I32) x = do _ <- prim_poke32 p o x
49+ return ()
50+put (CPt p o I64) x = do _ <- prim_poke64 p o x
51+ return ()
52+put (CPt p o PTR) x = do _ <- prim_pokePtr p o x
53+ return ()
54+put (CPt p o FLOAT) x = do _ <- prim_pokeSingle p o x
55+ return ()
56+put (CPt p o DOUBLE) x = do _ <- prim_pokeDouble p o x
57+ return ()
58+put (CPt p o (ARRAY n t)) x = ?putArray
59+put (CPt p o (UNION xs)) x = ?putUnion
60+put (CPt p o (STRUCT xs)) x = ?putStruct
61+put (CPt p o (PACKEDSTRUCT xs)) x = ?putPacked
4062
4163-- update : (p : CPtr) -> ((translate(ctype p)) -> (translate (ctype p)) -> IO ()
4264-- TODO : Fix bounds checking