/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
 * 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:
 *         Florian Pirchner - Initial implementation
 */
module org.eclipse.osbp.dsl.common.xtext.GenerateCommonGrammar

import org.eclipse.emf.mwe.utils.*
import org.eclipse.xtext.xtext.generator.*
import org.eclipse.xtext.xtext.generator.model.project.*

var rootPath = ".."
var fileHeaderText = "/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
 * 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:
 *         Florian Pirchner - Initial implementation
 *
 * generated by Xtext \${version}\n
 */
"
Workflow {

	component = XtextGenerator {
		configuration = {
			project = StandardProjectConfig {
				baseName = "org.eclipse.osbp.dsl.common.xtext"
				rootPath = rootPath
				genericIde = {
					enabled = true
					name = "org.eclipse.osbp.dsl.common.xtext.ide"
				}
				runtimeTest = {
					enabled = true
				}
				eclipsePlugin = {
					enabled = true
				}
				eclipsePluginTest = {
					enabled = false
				}
				createEclipseMetaData = true
			}
			code = {
				encoding = "UTF-8"
				lineDelimiter = "\n"
				fileHeader = fileHeaderText
			}
		}

		language = StandardLanguage {
			name = "org.eclipse.osbp.dsl.common.xtext.CommonGrammar"
			fileExtensions = "type"
			
			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.oxtype/model/OXtype.ecore"
			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.oxtype/model/OXtype.genmodel"

			referencedResource = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"

			
			generateXtendStubs = false
			
			serializer = {
				generateStub = false
			}
			validator = {
			// composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
				inheritImplementation = true
				generateXtendStub = false
			}

			generator = {
				generateStub = false
				generateJavaMain = false
				generateXtendStub = false
			}
			
			scopeProvider = {
				generateStub = true
				generateXtendStub = false
				inheritImplementation=true
			}

			contentAssist = {
				generateXtendStub=false
			}

		}
	}
}
