1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/visitor/21-clientprovider/src-api1.0/org/apidesign/visitor/Language.java Sat Jun 14 09:59:16 2008 +0200
1.3 @@ -0,0 +1,49 @@
1.4 +package org.apidesign.visitor;
1.5 +
1.6 +public final class Language {
1.7 + private Language() { }
1.8 +
1.9 + // BEGIN: visitor.clientprovider.v1
1.10 + public interface Expression {
1.11 + public abstract void visit(Visitor v);
1.12 + }
1.13 + public interface Plus extends Expression {
1.14 + public Expression getFirst();
1.15 + public Expression getSecond();
1.16 + }
1.17 + public interface Number extends Expression {
1.18 + public int getValue();
1.19 + }
1.20 +
1.21 + public static abstract class Visitor {
1.22 + Visitor() {}
1.23 +
1.24 + public Visitor create(Version1_0 v) {
1.25 + return create1_0(v);
1.26 + }
1.27 +
1.28 + public interface Version1_0 {
1.29 + public boolean visitUnknown(Expression e);
1.30 + public void visitPlus(Plus s);
1.31 + public void visitNumber(Number n);
1.32 + }
1.33 +
1.34 + public abstract void dispatchPlus(Plus p);
1.35 + public abstract void dispatchNumber(Number n);
1.36 + }
1.37 + // END: visitor.clientprovider.v1
1.38 +
1.39 + static Visitor create1_0(final Visitor.Version1_0 v) {
1.40 + return new Visitor() {
1.41 + @Override
1.42 + public void dispatchPlus(Plus p) {
1.43 + v.visitPlus(p);
1.44 + }
1.45 +
1.46 + @Override
1.47 + public void dispatchNumber(Number n) {
1.48 + v.visitNumber(n);
1.49 + }
1.50 + };
1.51 + }
1.52 +}