main
1namespace jive
2{
3 public class FilteredVisitor<T> : Visitor<T>
4 {
5 readonly Specification<T> condition;
6 readonly Visitor<T> visitor;
7
8 public FilteredVisitor(Specification<T> condition, Visitor<T> visitor)
9 {
10 this.condition = condition;
11 this.visitor = visitor;
12 }
13
14 public void visit(T item_to_visit)
15 {
16 if (condition.is_satisfied_by(item_to_visit)) visitor.visit(item_to_visit);
17 }
18 }
19}