/******************************************************************************* * Copyright (c) 2005, 2007 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * *******************************************************************************/ package org.eclipse.dltk.ruby.core.model.internal; import org.eclipse.dltk.ast.references.VariableKind; import org.eclipse.dltk.ruby.core.model.IElement; import org.eclipse.dltk.ruby.core.model.IElementKind; import org.eclipse.dltk.ruby.core.model.IMethod; import org.eclipse.dltk.ruby.core.model.IModel; import org.eclipse.dltk.ruby.core.model.IType; import org.eclipse.dltk.ruby.core.model.ITypeFragment; import org.eclipse.dltk.ruby.core.model.IVariable; public abstract class ModelElementKindSwitch { public void visit(IElement element) { int id = element.getElementKind().getId(); switch(id) { case IElementKind.Model.ID: visitModel((IModel) element); break; case IElementKind.Class.ID: visitClass((IType) element); break; case IElementKind.Mixin.ID: visitMixin((IType) element); break; case IElementKind.ClassFragment.ID: visitClassFragment((ITypeFragment) element); break; case IElementKind.MixinFragment.ID: visitMixinFragment((ITypeFragment) element); break; case IElementKind.Method.ID: visitMethod((IMethod) element); break; default: if (id >= VariableKind.FIRST_VARIABLE_ID && id <= VariableKind.LAST_VARIABLE_ID) visitVariable((IVariable) element); else visitUnknown(element); } } protected void visitGeneral(IElement element) { } protected void visitUnknown(IElement element) { visitGeneral(element); } protected void visitVariable(IVariable element) { visitGeneral(element); } protected void visitMethod(IMethod element) { visitGeneral(element); } protected void visitMixinFragment(ITypeFragment element) { visitGeneral(element); } protected void visitClassFragment(ITypeFragment element) { visitGeneral(element); } protected void visitMixin(IType element) { visitGeneral(element); } protected void visitClass(IType element) { visitGeneral(element); } protected void visitModel(IModel element) { visitGeneral(element); } }