28 lines
852 B
Text
28 lines
852 B
Text
lib objectclass;
|
|
|
|
define :class foo;
|
|
enddefine;
|
|
|
|
define define_named_method(method, class);
|
|
lvars method_str = method >< '';
|
|
lvars class_str = class >< '';
|
|
lvars method_hash_str = 'hash_' >< length(class_str) >< '_'
|
|
>< class_str >< '_' >< length(method_str)
|
|
>< '_' >< method_str;
|
|
lvars method_hash = consword(method_hash_str);
|
|
pop11_compile([
|
|
lvars ^method_hash = newassoc([]);
|
|
define :method ^method(self : ^class);
|
|
^method_hash(self);
|
|
enddefine;
|
|
define :method updaterof ^method(val, self : ^class);
|
|
val -> ^method_hash(self);
|
|
enddefine;
|
|
]);
|
|
enddefine;
|
|
|
|
define_named_method("met1", "foo");
|
|
lvars bar = consfoo();
|
|
met1(bar) => ;;; default value -- false
|
|
"baz" -> met1(bar);
|
|
met1(bar) => ;;; new value
|