/**
 * *******************************************************************************
 * Copyright (c) 2009 Mia-Software and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v20.html
 * 
 * Contributors:
 * 
 *     Fabien Giquel (Mia-Software) - initial API and implementation
 * *******************************************************************************
 *
 */

Ecore file used to be generated from km3 with km3 tools
After the generation of the ecore file from the KM3, there are still manual modifications:

1) 
In the java.ecore file : 
Replace all instances of 
	eType="/1/String"
with
	eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
	
Same with 
eType="/1/Integer" -> eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
and
eType="/1/Boolean" -> eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"

then remove the "PrimitiveTypes" package in the java.ecore file

2) If the release of km3toEcore transformation does not support @literalValue annotation
In the EEnums : 
	- AssignmentKind
	- InfixExpressionKind
	- PostfixExpressionKind
	- PrefixExpressionKind
	
You must replace the literal of each value by the corresponding as defined below.
This data has been copied from the Javadoc of these classes : 
	- org.eclipse.jdt.core.dom.Assignment
	- org.eclipse.jdt.core.dom.InfixExpression
	- org.eclipse.jdt.core.dom.PostfixExpression
	- org.eclipse.jdt.core.dom.PrefixExpression
	

 	 * Assignment operators
	     = 		ASSIGN
	     += 	PLUS_ASSIGN
	     -= 	MINUS_ASSIGN
	     *= 	TIMES_ASSIGN
	     /= 	DIVIDE_ASSIGN
	     &= 	BIT_AND_ASSIGN
	     |= 	BIT_OR_ASSIGN
	     ^= 	BIT_XOR_ASSIGN
	     %= 	REMAINDER_ASSIGN
	     <<= 	LEFT_SHIFT_ASSIGN
	     >>= 	RIGHT_SHIFT_SIGNED_ASSIGN
	     >>>= 	RIGHT_SHIFT_UNSIGNED_ASSIGN
	
 	 * Infix operators
	     *		TIMES
	     /  	DIVIDE
	     %  	REMAINDER
	     +  	PLUS
	     -  	MINUS
	     <<  	LEFT_SHIFT
	     >>  	RIGHT_SHIFT_SIGNED
	     >>>  	RIGHT_SHIFT_UNSIGNED
	     <  	LESS
	     &  	GREATER
	     <=  	LESS_EQUALS
	     >=  	GREATER_EQUALS
	     ==  	EQUALS
	     !=  	NOT_EQUALS
	     ^  	XOR
	     &  	AND
	     |  	OR
	     &&  	CONDITIONAL_AND
	     ||  	CONDITIONAL_OR
	
 	 * Postfix operators
	     ++  	INCREMENT
	     --  	DECREMENT

	 * Prefix operators
	     ++  	INCREMENT
	     --  	DECREMENT
	     +  	PLUS
	     -  	MINUS
	     ~  	COMPLEMENT
	     !  	NOT


