package nars.io; import nars.util.EventEmitter; import nars.util.Events.Answer; import nars.storage.Memory; import nars.NAR; import nars.util.AbstractObserver; /** * Output Channel: Implements this and NAR.addOutput(..) to receive output signals on various channels */ public abstract class Output extends AbstractObserver { /** implicitly repeated input (a repetition of all input) */ public static interface IN { } /** conversational (judgments, questions, etc...) output */ public static interface OUT { } /** warnings, errors & exceptions */ public static interface ERR { } /** explicitly repeated input (repetition of the content of input ECHO commands) */ public static interface ECHO { } /** operation execution */ public static interface EXE { } public static class ANTICIPATE {} public static class CONFIRM {} public static class DISAPPOINT {} public static final Class[] DefaultOutputEvents = new Class[] { IN.class, EXE.class, OUT.class, ERR.class, ECHO.class, Answer.class, ANTICIPATE.class, CONFIRM.class, DISAPPOINT.class }; public Output(EventEmitter source, boolean active) { super(source, active, DefaultOutputEvents ); } public Output(Memory m, boolean active) { this(m.event, active); } public Output(NAR n, boolean active) { this(n.memory.event, active); } public Output(NAR n) { this(n, true); } }