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.