| /** |
| * ******************************************************************************* |
| * Copyright (c) 2019-2020 Robert Bosch GmbH. |
| * |
| * This program and the accompanying materials are made |
| * available under the terms of the Eclipse Public License 2.0 |
| * which is available at https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Robert Bosch GmbH - initial API and implementation |
| * ******************************************************************************* |
| */ |
| |
| package org.eclipse.app4mc.amlt2systemc.m2t.transformers.sw |
| |
| import com.google.inject.Inject |
| import org.eclipse.app4mc.amlt2systemc.m2t.transformers.sw.IActivityGraphItemContainerTransformer.ActivityGraphBuffer |
| import org.eclipse.app4mc.amlt2systemc.m2t.transformers.common.ModeConditionTransformer |
| import org.eclipse.app4mc.amalthea.model.WhileLoop |
| |
| class WhileLoopTransformer extends IActivityGraphItemContainerTransformer { |
| |
| @Inject ModeConditionTransformer modeConditionTransformer |
| |
| static int cnt =0; |
| |
| static def getName(){ |
| return "whileLoop_" + cnt; |
| } |
| |
| def void transform(WhileLoop whileLoop, ActivityGraphBuffer parentContent) { |
| val name = getName() |
| cnt++; |
| parentContent.addBody("WhileLoop " + name + ";") |
| |
| val content = new ActivityGraphBuffer(name, parentContent.module, false) |
| |
| val conditionContent = modeConditionTransformer.transformCondition(whileLoop.condition, name, false) |
| val activityGraphContents = transformItems(whileLoop, name, content.module, content.parentIsPointer) |
| activityGraphContents.addAll(conditionContent) |
| |
| parentContent.getIncludes().addAll(activityGraphContents.getIncludes()) |
| parentContent.getSource().addAll(activityGraphContents.getSource()) |
| parentContent.addAsActivityGraphItem("<WhileLoop>(" + name + ")") |
| } |
| |
| } |
| |
| |