/******************************************************************************* * Copyright (c) 2008 Institute for Software, HSR Hochschule fuer Technik * Rapperswil, University of applied sciences 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 * * Contributors: * Institute for Software - initial API and implementation ******************************************************************************/ package org.eclipse.cdt.internal.ui.refactoring.extractfunction; import org.eclipse.cdt.core.dom.ast.ASTVisitor; import org.eclipse.cdt.core.dom.ast.IASTBreakStatement; import org.eclipse.cdt.core.dom.ast.IASTContinueStatement; import org.eclipse.cdt.core.dom.ast.IASTDoStatement; import org.eclipse.cdt.core.dom.ast.IASTForStatement; import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.dom.ast.IASTSwitchStatement; import org.eclipse.cdt.core.dom.ast.IASTWhileStatement; /** * @author Emanuel Graf IFS * */ class NonExtractableStmtFinder extends ASTVisitor{ private boolean containsContinueStmt = false; private boolean containsBreakStmt = false; { shouldVisitStatements = true; } @Override public int visit(IASTStatement statement) { if (statement instanceof IASTContinueStatement) { containsContinueStmt = true; return ASTVisitor.PROCESS_SKIP; }else if (statement instanceof IASTBreakStatement) { containsBreakStmt = true; return ASTVisitor.PROCESS_SKIP; }else if(statement instanceof IASTForStatement|| //Extracting hole loop statements is ok statement instanceof IASTWhileStatement|| statement instanceof IASTSwitchStatement|| statement instanceof IASTDoStatement) { return ASTVisitor.PROCESS_SKIP; } return ASTVisitor.PROCESS_CONTINUE; } public boolean containsContinue() { return containsContinueStmt; } public boolean containsBreak() { return containsBreakStmt; } }