| 1 33 package net.sf.jga.fn.adaptor; 34 35 import net.sf.jga.fn.Generator; 36 37 42 43 public class CompoundGenerator<R> extends Generator<R> { 44 45 static final long serialVersionUID = -2654287117664423223L; 46 47 private Generator<?> _gen1; 49 50 private Generator<R> _gen2; 52 53 public CompoundGenerator (Generator<?> gen1, Generator<R> gen2) { 54 if (gen1 == null || gen2 == null) 55 throw new IllegalArgumentException ("Two generators are required"); 56 57 _gen1 = gen1; 58 _gen2 = gen2; 59 } 60 61 62 65 public Generator<?> getFirstFunctor() { return _gen1; } 66 67 68 71 public Generator<R> getSecondFunctor() { return _gen2; } 72 73 74 77 public R gen() { 78 _gen1.gen(); 79 return _gen2.gen(); 80 } 81 82 83 87 public void accept(net.sf.jga.fn.Visitor v) { 88 if (v instanceof CompoundGenerator.Visitor) 89 ((CompoundGenerator.Visitor)v).visit(this); 90 else 91 v.visit(this); 92 } 93 94 96 public String toString() { 97 return _gen1 +"," +_gen2; 98 } 99 100 102 105 public interface Visitor extends net.sf.jga.fn.Visitor { 106 public void visit(CompoundGenerator host); 107 } 108 } 109 | Popular Tags |