| /********************************************************************** |
| * Copyright (c) 2006 IBM Corporation. |
| * 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ptp.pldt.openmp.analysis.ompcfg; |
| |
| import java.util.Iterator; |
| import java.util.LinkedList; |
| |
| import org.eclipse.cdt.core.dom.ast.IASTExpression; |
| import org.eclipse.cdt.core.dom.ast.IASTExpressionList; |
| |
| /** |
| * Holds a consolidated (coarse) basic block for concurrency analysis |
| * |
| * @author pazel |
| * |
| */ |
| public class OMPExpressionBlock extends OMPCFGNode |
| { |
| /** Use this while building */ |
| protected LinkedList expressions_ = new LinkedList(); // of IASTExpressions (for now) |
| |
| public OMPExpressionBlock() |
| { |
| super(); |
| } |
| |
| /** |
| * addExpression - add a statement to the basic block |
| * |
| * @param expression |
| * - IASTExpression |
| */ |
| public void addExpression(IASTExpression expression) |
| { |
| expressions_.add(expression); |
| } |
| |
| /** |
| * addExpression - but for an expression list |
| * |
| * @param expression |
| * - IASTExpressionList |
| */ |
| public void addExpression(IASTExpressionList expression) |
| { |
| IASTExpression[] list = expression.getExpressions(); |
| for (int i = 0; i < list.length; i++) { |
| if (list[i] instanceof IASTExpressionList) |
| addExpression((IASTExpressionList) list[i]); |
| else |
| addExpression(list[i]); |
| } |
| } |
| |
| /** |
| * getExpressions - accessor to array of statements |
| * |
| * @return IASTExpression [] |
| */ |
| public IASTExpression[] getExpressions() |
| { |
| IASTExpression[] list = new IASTExpression[expressions_.size()]; |
| int count = 0; |
| for (Iterator i = expressions_.iterator(); i.hasNext();) |
| list[count++] = (IASTExpression) i.next(); |
| return list; |
| } |
| |
| } |