
001package org.hl7.fhir.r5.elementmodel; 002 003 004public class ElementVisitor { 005 006 public enum ElementVisitorInstruction { 007 VISIT_CHILDREN, NO_VISIT_CHILDREN; 008 } 009 010 public interface IElementVisitor { 011 public ElementVisitorInstruction visit(Object context, Element element); 012 } 013 014 private IElementVisitor visitor; 015 016 public ElementVisitor(IElementVisitor visitor) { 017 this.visitor = visitor; 018 } 019 020 private void visitElement(Object context, Element e) { 021 for (Element c : e.getChildren()) { 022 visit(context, c); 023 } 024 } 025 026 public void visit(Object context, Element e) { 027 ElementVisitorInstruction c = visitor.visit(context, e); 028 if (c == ElementVisitorInstruction.VISIT_CHILDREN) { 029 visitElement(context, e); 030 } 031 } 032 033}