// Yay funny naming time! ("shipping") /* transient event interface onRecordAdded as OnRecordAdded shipping RecordAdded; => stuff */ svoid tok_eventInterfaces(LS tok) { int i; while ((i = jfind(tok, "transient event interface as shipping ;")) >= 0) { int iStart = i; i += 2; int iSemicolon = indexOf(tok, iStart, ";"); S listenerType = get(tok, i+4); S method = get(tok, i+8); S eventType = get(tok, i+12); replaceTokens_reTok(tok, iStart, iSemicolon+1, tok_formatDollarVars([[ interface $intf { void $method($eventType event); } transient L<$Listener> $listeners; synchronized selfType $add($Listener l) { $listeners = addOrCreate($listeners, l); this; } synchronized Cl<$Listener> $listeners() { ret cloneList($listeners); } void $method($Event event) { for (l : $listeners()) pcall { l?.$method(event); } } ]], +method, intf := listenerType, +eventType, Event := eventType, add := method, Listener := listenerType, listeners := method + "_listeners")); } }