/**
 * *******************************************************************************
 * Copyright (c) 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.slg.commons.m2t.transformers.sw

import com.google.inject.Inject
import com.google.inject.Singleton
import org.eclipse.app4mc.amalthea.model.Runnable
import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGBaseTransformer
import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableTranslationUnit
import org.eclipse.app4mc.transformation.util.OutputBuffer
import org.eclipse.app4mc.slg.commons.m2t.generators.RunnableGenerator

@Singleton
class RunnableTransformer extends SLGBaseTransformer {

	@Inject OutputBuffer outputBuffer
	@Inject ActivityGraphItemTransformer psCallGraphItemTransformer

	def create new RunnableTranslationUnit(outputBuffer, psCallGraphItemTransformer, runnable)
		transform(Runnable runnable) {
	}

	override getCache() { return this._createCache_transform }

	def createCMake() {
		outputBuffer.appendTo("OTHER", RunnableTranslationUnit.makeFilePathStatic, RunnableGenerator.toCMake(getSrcFiles))
	}

}
