require daslib/interfaces [interface] class ITick def abstract beforeTick : bool def abstract tick ( dt:float ) : void def abstract afterTick : void [interface] class ILogger def abstract log ( message : string ) : void [implements(ITick),implements(ILogger)] class Foo def Foo pass def ITick`tick ( dt:float ) print("tick {dt}\n") def ITick`beforeTick print("beforeTick\n") return true def ITick`afterTick print("afterTick\n") def ILogger`log ( message : string ) print("log {message}\n") [export] def main var f = new Foo() f->get`ITick()->beforeTick() f->get`ITick()->tick(1.0) f->get`ITick()->afterTick() f->get`ILogger()->log("hello") unsafe delete f options log