t foo[<`r1::K,...,`rn::K>]
(t1 x1, ..., t_n x_n
[; effect] [:region_order])
[@ieffect( {....} , ... , {...} )]
[@oeffect( {...} , ... , {...} )]
[@throws(...) @throwsany @nothrow]
[@re_entrant]
extern void xdec(region_t<`r>;{})
@ieffect({`r,`bar1,`nat0})
@nothrow;
extern void xinc(region_t<`r>;{})
@ieffect({`r,`bar1,`nat0})
@oeffect({`r,`bar2,`nat0})
@nothrow;
extern void xldec(region_t<`r>;{})
@ieffect({`r,`bar1,`nat1})
@oeffect({`r,`bar1,`nat0})
@nothrow;
extern void xlinc(region_t<`r>;{})
@ieffect({`r,`bar1,`nat0})
@oeffect({`r,`bar1,`nat1})
@nothrow;
It should be noted that the type system also allows non-binary region and lock capabilities to be passed to the above functions.
Short examples can be found at 0.8.3/tests/ioeffect/pass.
This document was translated from LATEX by HEVEA.