8 | %foreign "C:cptr_deref_bits8, cptr-idris"
9 | "scheme,chez:(lambda (x) (foreign-ref 'unsigned-8 x 0))"
10 | prim__deref_bits8 : AnyPtr -> PrimIO Bits8
12 | %foreign "C:cptr_deref_bits16, cptr-idris"
13 | "scheme,chez:(lambda (x) (foreign-ref 'unsigned-16 x 0))"
14 | prim__deref_bits16 : AnyPtr -> PrimIO Bits16
16 | %foreign "C:cptr_deref_bits32, cptr-idris"
17 | "scheme,chez:(lambda (x) (foreign-ref 'unsigned-32 x 0))"
18 | prim__deref_bits32 : AnyPtr -> PrimIO Bits32
20 | %foreign "C:cptr_deref_bits64, cptr-idris"
21 | "scheme,chez:(lambda (x) (foreign-ref 'unsigned-64 x 0))"
22 | prim__deref_bits64 : AnyPtr -> PrimIO Bits64
24 | %foreign "C:cptr_deref_int8, cptr-idris"
25 | "scheme,chez:(lambda (x) (foreign-ref 'integer-8 x 0))"
26 | prim__deref_int8 : AnyPtr -> PrimIO Int8
28 | %foreign "C:cptr_deref_int16, cptr-idris"
29 | "scheme,chez:(lambda (x) (foreign-ref 'integer-16 x 0))"
30 | prim__deref_int16 : AnyPtr -> PrimIO Int16
32 | %foreign "C:cptr_deref_int32, cptr-idris"
33 | "scheme,chez:(lambda (x) (foreign-ref 'integer-32 x 0))"
34 | prim__deref_int32 : AnyPtr -> PrimIO Int32
36 | %foreign "C:cptr_deref_int64, cptr-idris"
37 | "scheme,chez:(lambda (x) (foreign-ref 'integer-64 x 0))"
38 | prim__deref_int64 : AnyPtr -> PrimIO Int64
40 | %foreign "C:cptr_deref_str, cptr-idris"
41 | prim__deref_str : AnyPtr -> PrimIO String
43 | %foreign "C:cptr_deref_anyptr, cptr-idris"
44 | prim__deref_anyptr : AnyPtr -> PrimIO AnyPtr
46 | %foreign "C:cptr_set_bits8, cptr-idris"
47 | "scheme,chez:(lambda (x y) (foreign-set! 'unsigned-8 x 0 y))"
48 | prim__set_bits8 : AnyPtr -> Bits8 -> PrimIO ()
50 | %foreign "C:cptr_set_bits16, cptr-idris"
51 | "scheme,chez:(lambda (x y) (foreign-set! 'unsigned-16 x 0 y))"
52 | prim__set_bits16 : AnyPtr -> Bits16 -> PrimIO ()
54 | %foreign "C:cptr_set_bits32, cptr-idris"
55 | "scheme,chez:(lambda (x y) (foreign-set! 'unsigned-32 x 0 y))"
56 | prim__set_bits32 : AnyPtr -> Bits32 -> PrimIO ()
58 | %foreign "C:cptr_set_bits64, cptr-idris"
59 | "scheme,chez:(lambda (x y) (foreign-set! 'unsigned-64 x 0 y))"
60 | prim__set_bits64 : AnyPtr -> Bits64 -> PrimIO ()
62 | %foreign "C:cptr_set_int8, cptr-idris"
63 | "scheme,chez:(lambda (x y) (foreign-set! 'integer-8 x 0 y))"
64 | prim__set_int8 : AnyPtr -> Int8 -> PrimIO ()
66 | %foreign "C:cptr_set_int16, cptr-idris"
67 | "scheme,chez:(lambda (x y) (foreign-set! 'integer-16 x 0 y))"
68 | prim__set_int16 : AnyPtr -> Int16 -> PrimIO ()
70 | %foreign "C:cptr_set_int32, cptr-idris"
71 | "scheme,chez:(lambda (x y) (foreign-set! 'integer-32 x 0 y))"
72 | prim__set_int32 : AnyPtr -> Int32 -> PrimIO ()
74 | %foreign "C:cptr_set_int64, cptr-idris"
75 | "scheme,chez:(lambda (x y) (foreign-set! 'integer-64 x 0 y))"
76 | prim__set_int64 : AnyPtr -> Int64 -> PrimIO ()
78 | %foreign "C:cptr_set_str, cptr-idris"
79 | prim__set_str : AnyPtr -> String -> PrimIO ()
81 | %foreign "C:cptr_set_anyptr, cptr-idris"
82 | prim__set_anyptr : AnyPtr -> AnyPtr -> PrimIO ()
84 | %foreign "C:cptr_set_null, cptr-idris"
85 | prim__set_null : AnyPtr -> PrimIO ()
87 | %foreign "C:cptr_is_null, cptr-idris"
88 | prim__is_null : AnyPtr -> Bits8
95 | interface Deref a where
96 | deref : AnyPtr -> IO a
99 | Deref Bits8 where deref p = fromPrim $
prim__deref_bits8 p
102 | Deref Bits16 where deref p = fromPrim $
prim__deref_bits16 p
105 | Deref Bits32 where deref p = fromPrim $
prim__deref_bits32 p
108 | Deref Bits64 where deref p = fromPrim $
prim__deref_bits64 p
111 | Deref Int8 where deref p = fromPrim $
prim__deref_int8 p
114 | Deref Int16 where deref p = fromPrim $
prim__deref_int16 p
117 | Deref Int32 where deref p = fromPrim $
prim__deref_int32 p
120 | Deref Int64 where deref p = fromPrim $
prim__deref_int64 p
123 | Deref String where deref p = fromPrim $
prim__deref_str p
126 | Deref (Maybe String) where
128 | case prim__is_null p of
129 | 0 => Just <$> deref p
133 | Deref AnyPtr where deref p = fromPrim $
prim__deref_anyptr p
136 | interface SetPtr a where
137 | setPtr : AnyPtr -> a -> IO ()
140 | SetPtr Bits8 where setPtr p x = fromPrim $
prim__set_bits8 p x
143 | SetPtr Bits16 where setPtr p x = fromPrim $
prim__set_bits16 p x
146 | SetPtr Bits32 where setPtr p x = fromPrim $
prim__set_bits32 p x
149 | SetPtr Bits64 where setPtr p x = fromPrim $
prim__set_bits64 p x
152 | SetPtr Int8 where setPtr p x = fromPrim $
prim__set_int8 p x
155 | SetPtr Int16 where setPtr p x = fromPrim $
prim__set_int16 p x
158 | SetPtr Int32 where setPtr p x = fromPrim $
prim__set_int32 p x
161 | SetPtr Int64 where setPtr p x = fromPrim $
prim__set_int64 p x
164 | SetPtr String where setPtr p x = fromPrim $
prim__set_str p x
167 | SetPtr (Maybe String) where
168 | setPtr p Nothing = fromPrim $
prim__set_null p
169 | setPtr p (Just s) = setPtr p s
172 | SetPtr AnyPtr where setPtr p x = fromPrim $
prim__set_anyptr p x