001package gudusoft.gsqlparser.ir.common; 002 003import gudusoft.gsqlparser.ir.bound.BoundColumnRef; 004import gudusoft.gsqlparser.ir.bound.BoundObjectRef; 005import gudusoft.gsqlparser.ir.bound.BoundRoutineRef; 006import gudusoft.gsqlparser.ir.bound.BoundTypeRef; 007 008/** 009 * Abstract base implementation of {@link IRVisitor} that returns null for all visit methods. 010 * Concrete visitors should extend this class and override only the methods they need. 011 * 012 * @param <R> return type 013 * @param <C> context type 014 */ 015public abstract class AbstractIRVisitor<R, C> implements IRVisitor<R, C> { 016 017 @Override 018 public R visitBoundObjectRef(BoundObjectRef node, C ctx) { 019 return visitDefault(node, ctx); 020 } 021 022 @Override 023 public R visitBoundColumnRef(BoundColumnRef node, C ctx) { 024 return visitDefault(node, ctx); 025 } 026 027 @Override 028 public R visitBoundRoutineRef(BoundRoutineRef node, C ctx) { 029 return visitDefault(node, ctx); 030 } 031 032 @Override 033 public R visitBoundTypeRef(BoundTypeRef node, C ctx) { 034 return visitDefault(node, ctx); 035 } 036 037 @Override 038 public R visitDefault(IRNode node, C ctx) { 039 return null; 040 } 041}