Files
@ 2d2a4eb3c08e
Branch filter:
Location: CSY/reowolf/testdata/parser/positive/14.pdl - annotation
2d2a4eb3c08e
743 B
text/plain
Initial version of API put/get
1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 1b7b852c3395 fbd1526bae2c | #version 100
composite main(out c) {
channel ao -> ai;
channel bo -> bi;
new sync(ai, bo);
new binary_replicator(bi, ao, c);
}
primitive sync(in a, out b) {
while (true) {
synchronous {
if (fires(a) && fires(b)) {
msg x = get(a);
put(b, x);
} else {
assert !fires(a) && !fires(b);
}
}
}
}
primitive binary_replicator(in b, out a, out c) {
while (true) {
synchronous {
if (fires(b) && fires(a) && fires(c)) {
msg x = get(b);
put(a, x);
put(c, x);
} else {
assert !fires(a) && !fires(b) && !fires(c);
}
}
}
}
|