13 return w.app(w.annex<
Buf>(), {r, s, T});
18 auto& w =
mem->world();
19 return w.app(w.app(w.annex<
alloc>(), {r, s, T}),
mem);
24 auto& w =
mem->world();
25 return w.app(w.app(w.annex<
read>(), {r, s, T}), {mem, buf, idx});
31 auto& w =
mem->world();
32 return w.app(w.app(w.annex<
write>(), {r, s, T}), {mem, buf, idx, val});
37 auto& w =
mem->world();
38 return w.app(w.app(w.annex<
copy>(), {r, s, T}), {mem, dst, src});
61 auto& w =
mem->world();
62 return w.app(w.app(w.annex<
free>(), {r, s, T}), {mem, buf});
67 auto& w =
mem->world();
68 return w.app(w.app(w.annex<
init>(), {r, s, T}), {mem, val});
73 auto& w =
mem->world();
74 return w.app(w.app(w.annex<
lit>(), {r, s, T}), {mem, val});
static auto isa(const Def *def)
const Def * type() const noexcept
Yields the "raw" type of this Def (maybe nullptr).
const Def * type_buf(const Def *r, const Def *s, const Def *T)
The buffer type buffer.Buf (r, s, T).
const Def * op_free(const Def *r, const Def *s, const Def *T, const Def *mem, const Def *buf)
buffer.free (r, s, T) (mem, buf) ↦ mem.M 0.
const Def * op_write(const Def *r, const Def *s, const Def *T, const Def *mem, const Def *buf, const Def *idx, const Def *val)
buffer.write (r, s, T) (mem, buf, idx, val) ↦ [mem.M 0, buffer.Buf (r, s, T)].
const Def * op_lit(const Def *r, const Def *s, const Def *T, const Def *mem, const Def *val)
buffer.lit (r, s, T) (mem, val) ↦ [mem.M 0, buffer.Buf (r, s, T)] (every element initialised to val).
const Def * op_read(const Def *r, const Def *s, const Def *T, const Def *mem, const Def *buf, const Def *idx)
buffer.read (r, s, T) (mem, buf, idx) ↦ [mem.M 0, T].
const Def * op_init(const Def *r, const Def *s, const Def *T, const Def *mem, const Def *val)
buffer.init (r, s, T) (mem, val) ↦ [mem.M 0, buffer.Buf (r, s, T)] (initialised with the array value ...
const Def * op_alloc(const Def *r, const Def *s, const Def *T, const Def *mem)
buffer.alloc (r, s, T) mem ↦ [mem.M 0, buffer.Buf (r, s, T)].
const Def * op_copy(const Def *r, const Def *s, const Def *T, const Def *mem, const Def *dst, const Def *src)
buffer.copy (r, s, T) (mem, dst, src) ↦ mem.M 0 (copies the whole buffer src into dst).