/** * <copyright> * </copyright> * * $Id$ */ package net.sf.orcc.backends.ir.util; import net.sf.orcc.backends.ir.BlockFor; import net.sf.orcc.backends.ir.ExprNull; import net.sf.orcc.backends.ir.InstAssignIndex; import net.sf.orcc.backends.ir.InstCast; import net.sf.orcc.backends.ir.InstTernary; import net.sf.orcc.backends.ir.IrSpecificPackage; import net.sf.orcc.ir.Block; import net.sf.orcc.ir.Expression; import net.sf.orcc.ir.Instruction; import net.sf.orcc.util.Attributable; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.util.Switch; /** * <!-- begin-user-doc --> The <b>Switch</b> for the model's inheritance * hierarchy. It supports the call {@link #doSwitch(EObject) doSwitch(object)} * to invoke the <code>caseXXX</code> method for each class of the model, * starting with the actual class of the object and proceeding up the * inheritance hierarchy until a non-null result is returned, which is the * result of the switch. <!-- end-user-doc --> * * @see net.sf.orcc.backends.ir.IrSpecificPackage * @generated */ public class IrSpecificSwitch<T> extends Switch<T> { /** * The cached model package <!-- begin-user-doc --> <!-- end-user-doc --> * * @generated */ protected static IrSpecificPackage modelPackage; /** * Creates an instance of the switch. <!-- begin-user-doc --> <!-- * end-user-doc --> * * @generated */ public IrSpecificSwitch() { if (modelPackage == null) { modelPackage = IrSpecificPackage.eINSTANCE; } } /** * Checks whether this is a switch for the given package. <!-- * begin-user-doc --> <!-- end-user-doc --> * * @parameter ePackage the package in question. * @return whether this is a switch for the given package. * @generated */ @Override protected boolean isSwitchFor(EPackage ePackage) { return ePackage == modelPackage; } /** * Calls <code>caseXXX</code> for each class of the model until one returns * a non null result; it yields that result. <!-- begin-user-doc --> <!-- * end-user-doc --> * * @return the first non-null result returned by a <code>caseXXX</code> * call. * @generated */ @Override protected T doSwitch(int classifierID, EObject theEObject) { switch (classifierID) { case IrSpecificPackage.INST_ASSIGN_INDEX: { InstAssignIndex instAssignIndex = (InstAssignIndex) theEObject; T result = caseInstAssignIndex(instAssignIndex); if (result == null) { result = caseInstruction(instAssignIndex); } if (result == null) { result = caseAttributable(instAssignIndex); } if (result == null) { result = defaultCase(theEObject); } return result; } case IrSpecificPackage.INST_CAST: { InstCast instCast = (InstCast) theEObject; T result = caseInstCast(instCast); if (result == null) { result = caseInstruction(instCast); } if (result == null) { result = caseAttributable(instCast); } if (result == null) { result = defaultCase(theEObject); } return result; } case IrSpecificPackage.INST_TERNARY: { InstTernary instTernary = (InstTernary) theEObject; T result = caseInstTernary(instTernary); if (result == null) { result = caseInstruction(instTernary); } if (result == null) { result = caseAttributable(instTernary); } if (result == null) { result = defaultCase(theEObject); } return result; } case IrSpecificPackage.BLOCK_FOR: { BlockFor blockFor = (BlockFor) theEObject; T result = caseBlockFor(blockFor); if (result == null) { result = caseBlock(blockFor); } if (result == null) { result = caseAttributable(blockFor); } if (result == null) { result = defaultCase(theEObject); } return result; } case IrSpecificPackage.EXPR_NULL: { ExprNull exprNull = (ExprNull) theEObject; T result = caseExprNull(exprNull); if (result == null) { result = caseExpression(exprNull); } if (result == null) { result = caseAttributable(exprNull); } if (result == null) { result = defaultCase(theEObject); } return result; } default: return defaultCase(theEObject); } } /** * Returns the result of interpreting the object as an instance of ' * <em>Inst Assign Index</em>'. <!-- begin-user-doc --> This implementation * returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object * the target of the switch. * @return the result of interpreting the object as an instance of ' * <em>Inst Assign Index</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseInstAssignIndex(InstAssignIndex object) { return null; } /** * Returns the result of interpreting the object as an instance of ' * <em>Inst Cast</em>'. <!-- begin-user-doc --> This implementation returns * null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object * the target of the switch. * @return the result of interpreting the object as an instance of ' * <em>Inst Cast</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseInstCast(InstCast object) { return null; } /** * Returns the result of interpreting the object as an instance of ' * <em>Inst Ternary</em>'. <!-- begin-user-doc --> This implementation * returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object * the target of the switch. * @return the result of interpreting the object as an instance of ' * <em>Inst Ternary</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseInstTernary(InstTernary object) { return null; } /** * Returns the result of interpreting the object as an instance of ' * <em>Block For</em>'. <!-- begin-user-doc --> This implementation returns * null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object * the target of the switch. * @return the result of interpreting the object as an instance of ' * <em>Block For</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseBlockFor(BlockFor object) { return null; } /** * Returns the result of interpreting the object as an instance of ' * <em>Expr Null</em>'. <!-- begin-user-doc --> This implementation returns * null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object * the target of the switch. * @return the result of interpreting the object as an instance of ' * <em>Expr Null</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseExprNull(ExprNull object) { return null; } /** * Returns the result of interpreting the object as an instance of ' * <em>Instruction</em>'. <!-- begin-user-doc --> This implementation * returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object * the target of the switch. * @return the result of interpreting the object as an instance of ' * <em>Instruction</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseInstruction(Instruction object) { return null; } /** * Returns the result of interpreting the object as an instance of ' * <em>Block</em>'. <!-- begin-user-doc --> This implementation returns * null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object * the target of the switch. * @return the result of interpreting the object as an instance of ' * <em>Block</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseBlock(Block object) { return null; } /** * Returns the result of interpreting the object as an instance of ' * <em>Expression</em>'. <!-- begin-user-doc --> This implementation returns * null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object * the target of the switch. * @return the result of interpreting the object as an instance of ' * <em>Expression</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseExpression(Expression object) { return null; } /** * Returns the result of interpreting the object as an instance of ' * <em>Attributable</em>'. <!-- begin-user-doc --> This implementation * returns null; returning a non-null result will terminate the switch. <!-- * end-user-doc --> * * @param object * the target of the switch. * @return the result of interpreting the object as an instance of ' * <em>Attributable</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) * @generated */ public T caseAttributable(Attributable object) { return null; } /** * Returns the result of interpreting the object as an instance of ' * <em>EObject</em>'. <!-- begin-user-doc --> This implementation returns * null; returning a non-null result will terminate the switch, but this is * the last case anyway. <!-- end-user-doc --> * * @param object * the target of the switch. * @return the result of interpreting the object as an instance of ' * <em>EObject</em>'. * @see #doSwitch(org.eclipse.emf.ecore.EObject) * @generated */ @Override public T defaultCase(EObject object) { return null; } } // IrSpecificSwitch