/*
 * generated by Xtext 2.9.0
 */
package mgpl.generator

import org.eclipse.emf.ecore.resource.Resource
import org.eclipse.xtext.generator.AbstractGenerator
import org.eclipse.xtext.generator.IFileSystemAccess2
import org.eclipse.xtext.generator.IGeneratorContext
import org.eclipse.emf.ecore.resource.Resource
import org.eclipse.xtext.generator.IGenerator
import org.eclipse.xtext.generator.IFileSystemAccess
import mgpl.mGPL.Prog
import static extension mgpl.Common.* // erlaubt "name.capitalize" (d. h. Verwendung als Erweiterungsmethode); ohne "extension" wäre nur "capitalize(name)" möglich
// import static -.* importiert statische Datenelemente und Methoden aus der angegebenen Klasse
import static mgpl.mGPL.MGPLPackage.Literals.*
import mgpl.mGPL.ObjDecl
import mgpl.mGPL.AnimBlock
import mgpl.mGPL.EventBlock
import mgpl.mGPL.ArrayDecl
import mgpl.mGPL.VarDecl
import mgpl.mGPL.AttrAss
import mgpl.mGPL.StmtBlock
import mgpl.mGPL.IfStmt
import mgpl.mGPL.ForStmt
import mgpl.mGPL.AssStmt
import mgpl.mGPL.ElementSelect
import mgpl.mGPL.MemberSelect
import mgpl.mGPL.Var
import mgpl.mGPL.Decl
import mgpl.mGPL.ParamDecl
import mgpl.mGPL.Or
import mgpl.mGPL.And
import mgpl.mGPL.Equals
import mgpl.mGPL.Less
import mgpl.mGPL.LessOrEquals
import mgpl.mGPL.Plus
import mgpl.mGPL.Minus
import mgpl.mGPL.Divide
import mgpl.mGPL.Times
import mgpl.mGPL.Negation
import mgpl.mGPL.Complement
import mgpl.mGPL.Touches
import mgpl.mGPL.NumberLiteral

/**
 * Generates code from your model files on save.
 * 
 * See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#code-generation
 */
class MGPLGenerator extends AbstractGenerator {
	
/* 
 * ##### Alle EObjekte des AST werden durch-iteriert und für jedes gefilterte eine Compilefunktion aufgerufen,
 * ##### die von MGPL in den entsprechenden Javacodeabschnitt übersetzt.
 * ##### Das Java-Programm ist zum Großenteil als Template vorgegeben.
 * ##### TODOs für offene compile-Funktionen befinden sich hier weiter unten!
 * ##### Suchen Sie am Besten nach TODO mit Strg+F um keines zu vergessen.
 * ##### Orientieren Sie sich beim Implementieren an dem Vorgehen der vorgegebenen compile-Funktionen.
 * ##### Verwenden Sie ggf. auch die statischen Funktionen der Datei Common.xtend
 */

	// wird von dem Runtime-Eclipse aufgerufen, wenn eine MGPL-Datei gespeichert wird
	override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
//		fsa.generateFile('greetings.txt', 'People to greet: ' + 
//			resource.allContents
//				.filter(typeof(Greeting))
//				.map[name]
//				.join(', '))
	}
}
