/**
 * *******************************************************************************
 * Copyright (c) 2020-2021 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.linux.transformers

import com.google.inject.Inject
import com.google.inject.Singleton
import java.util.Properties
import org.eclipse.app4mc.amalthea.model.Runnable
import org.eclipse.app4mc.slg.linux.generators.LinuxRunnableTranslationUnit
import org.eclipse.app4mc.slg.linux.transformers.sw.LinuxActivityGraphItemTransformer
import org.eclipse.app4mc.transformation.util.OutputBuffer

@Singleton
class LinuxRunnableTransformer extends LinuxBaseTransformer {

		@Inject LinuxActivityGraphItemTransformer linuxCallGraphItemTransformer
		@Inject OutputBuffer outputBuffer;
		@Inject Properties properties
		
		def create new LinuxRunnableTranslationUnit(outputBuffer, linuxCallGraphItemTransformer, runnable, properties) transform(
			Runnable runnable) {
		}
	}
