28 lines
781 B
Plaintext
28 lines
781 B
Plaintext
contract Interface =
|
|
function do_abort : (int, string) => ()
|
|
function get_value : () => int
|
|
function put_value : (int) => ()
|
|
function get_values : () => list(int)
|
|
function put_values : (int) => ()
|
|
|
|
contract AbortTestInt =
|
|
|
|
record state = {r : Interface, value : int}
|
|
|
|
public function init(r : Interface, value : int) =
|
|
{r = r, value = value}
|
|
|
|
// Aborting
|
|
public function do_abort(v : int, s : string) =
|
|
put_value(v)
|
|
state.r.do_abort(v + 100, s)
|
|
|
|
// Accessing the value
|
|
public function put_value(v : int) = put(state{value = v})
|
|
public function get_value() = state.value
|
|
public function get_values() : list(int) =
|
|
state.value :: state.r.get_values()
|
|
public function put_values(v : int) =
|
|
put_value(v)
|
|
state.r.put_values(v + 1000)
|