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}