43 lines
719 B
Plaintext
43 lines
719 B
Plaintext
text
|
|
thing(void)
|
|
{
|
|
return "delegate implementation";
|
|
}
|
|
|
|
text
|
|
operation(record delegator)
|
|
{
|
|
text s;
|
|
|
|
if (r_key(delegator, "delegate")) {
|
|
if (r_key(delegator["delegate"], "thing")) {
|
|
s = call(r_query(delegator["delegate"], "thing"));
|
|
} else {
|
|
s = "default implementation";
|
|
}
|
|
} else {
|
|
s = "default implementation";
|
|
}
|
|
|
|
return s;
|
|
}
|
|
|
|
integer
|
|
main(void)
|
|
{
|
|
record delegate, delegator;
|
|
|
|
o_text(operation(delegator));
|
|
o_byte('\n');
|
|
|
|
r_link(delegator, "delegate", delegate);
|
|
o_text(operation(delegator));
|
|
o_byte('\n');
|
|
|
|
r_put(delegate, "thing", thing);
|
|
o_text(operation(delegator));
|
|
o_byte('\n');
|
|
|
|
return 0;
|
|
}
|