// alias+vtable dispatcher, collision-free control for r784. package sa; export type reader = fn(x: s, v: i32) i32; export type vtable = struct { reader: (*reader | void), }; export type s = *vtable; export fn read(x: s, v: i32) i32 = { match (x.reader) { case void => return -1; case let f: *reader => return (*f)(x, v); }; }; export fn mkvt(f: *reader) vtable = { return vtable { reader = f }; };