/*******************************************************************************
 * Copyright (c) 2015 CEA LIST.
 * 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:
 *     CEA LIST - initial API and implementation
 *******************************************************************************/

package org.eclipse.papyrus.designer.languages.c.codegen.lib

import org.eclipse.uml2.uml.InstanceValue
import org.eclipse.uml2.uml.ValueSpecification
import org.eclipse.uml2.uml.EnumerationLiteral
import org.eclipse.uml2.uml.Expression

class valueSpecificationScript {
	def public static ValueSpecificationTemplate(ValueSpecification valueSpecification) '''
		«valueSpecification.stringValue()»
	'''


	def public static ValueSpecificationTemplate(InstanceValue instanceValue) '''
		«IF (instanceValue.instance instanceof EnumerationLiteral)»
			«FOR slot : instanceValue.instance.slots»
				«FOR value : slot.values» «value.ValueSpecificationTemplate»
				«ENDFOR»
			«ENDFOR»{
			«FOR slot : instanceValue.instance.slots»
				«slot.definingFeature.name.toUpperCase()» = «FOR value : slot.values» «value.ValueSpecificationTemplate» «ENDFOR»;
			«ENDFOR»
			}
		«ELSE»
			«instanceValue.instance.name»
		«ENDIF»
	'''


	def public static ValueSpecificationTemplate(Expression expression) '''
		
	'''
}
