/**
 * 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 2.0 
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *         Florian Pirchner - Initial implementation
 */
module org.eclipse.osbp.dsl.datatype.xtext.DatatypeGrammar

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 2.0 
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *         Florian Pirchner - Initial implementation
 *
 * generated by Xtext \${version}
 */
"

Workflow {

	component = XtextGenerator {
		configuration = {
			project = StandardProjectConfig {
				baseName = "org.eclipse.osbp.dsl.datatype.xtext"
				rootPath = rootPath
				genericIde = {
					enabled = true
					name = "org.eclipse.osbp.dsl.datatype.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.datatype.xtext.DatatypeGrammar"
			fileExtensions = "datatype"
			
			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
			}

		}
	}
}
