/* Startable.java */ package sample; public interface Startable { void start() throws CannotStartException; }
/* CannotStartException.java */ package sample; public class CannotStartException extends Exception { public CannotStartException(String msg) { super(msg); } }
/* ExitReportHandler.java */ package sample; public interface ExitReportHandler { public void aborted(int exitCode, String msg, Throwable cause); public void finished(int exitCode); }
package sample; public interface Result<T> { /** なんらかの作業結果を返す */ public T result(); /** result()を呼んで意味のある値を得られるかどうか */ public boolean isAvailable(); }
明白にポート型を意識したインターフェース達。
/* VSTToken.java */ package sample; /* トークン・データ */ public class VSTToken { public enum Kind {L_BRACE, R_BRACE, TEXT, EOF} public final Kind kind; public final String value; public VSTToken(Kind kind, String value) { this.kind = kind; this.value = value; } }
/* VSTLexerPI.java */ package sample; import java.io.IOException; /* レクサーのインターフェース */ public interface VSTLexerPI { public VSTToken nextToken() throws IOException; }
/* VSTParserPI.java */ package sample; import java.io.IOException; public interface VSTParserPI { void parse() throws IOException, VSTParseException; }
/* VSTParseException.java */ package sample; /* パージング時の例外 */ class VSTParseException extends Exception { public VSTParseException(String msg) { super(msg); } }
/* VSTHandler.java */ package sample; /* ハンドラのインターフェース */ public interface VSTHandler { public void startTemplate(); public void endTemplate(); public void placeholder(String content); public void text(String text); public void error(String message); }
/* Evaluator.java */ package sample; public interface Evaluator { public String eval(String arg); }
/* VSTProcesssorPI.java */ package sample; public interface VSTProcessorPI { void process(); }