Browse Source

Share project "org.yakindu.sct.generator.base" into "https://svn.codespot.com/a/eclipselabs.org/yakindu"
Share project "org.yakindu.sct.generator.cpp" into "https://svn.codespot.com/a/eclipselabs.org/yakindu"

Andreas Mülder 14 years ago
parent
commit
8771b960f4
21 changed files with 413 additions and 0 deletions
  1. 7 0
      plugins/org.yakindu.sct.generator.base/.classpath
  2. 28 0
      plugins/org.yakindu.sct.generator.base/.project
  3. 8 0
      plugins/org.yakindu.sct.generator.base/.settings/org.eclipse.jdt.core.prefs
  4. 11 0
      plugins/org.yakindu.sct.generator.base/META-INF/MANIFEST.MF
  5. 4 0
      plugins/org.yakindu.sct.generator.base/build.properties
  6. 50 0
      plugins/org.yakindu.sct.generator.base/src/org/yakindu/sct/generator/base/GeneratorActivator.java
  7. 8 0
      plugins/org.yakindu.sct.generator.cpp/.classpath
  8. 34 0
      plugins/org.yakindu.sct.generator.cpp/.project
  9. 13 0
      plugins/org.yakindu.sct.generator.cpp/.settings/org.eclipse.core.resources.prefs
  10. 2 0
      plugins/org.yakindu.sct.generator.cpp/.settings/org.eclipse.xtend.shared.ui.prefs
  11. 23 0
      plugins/org.yakindu.sct.generator.cpp/META-INF/MANIFEST.MF
  12. 3 0
      plugins/org.yakindu.sct.generator.cpp/build.properties
  13. 15 0
      plugins/org.yakindu.sct.generator.cpp/src/Model.xmi
  14. 9 0
      plugins/org.yakindu.sct.generator.cpp/src/metamodel/Checks.chk
  15. 7 0
      plugins/org.yakindu.sct.generator.cpp/src/metamodel/Extensions.ext
  16. 22 0
      plugins/org.yakindu.sct.generator.cpp/src/metamodel/metamodel.ecore
  17. 10 0
      plugins/org.yakindu.sct.generator.cpp/src/template/GeneratorExtensions.ext
  18. 9 0
      plugins/org.yakindu.sct.generator.cpp/src/template/Template.xpt
  19. 36 0
      plugins/org.yakindu.sct.generator.cpp/src/workflow/generator.mwe
  20. 62 0
      plugins/org.yakindu.sct.generator.cpp/src/workflow/generatorWithBackend.mwe
  21. 52 0
      plugins/org.yakindu.sct.generator.cpp/src/workflow/generatorWithProfiler.mwe

+ 7 - 0
plugins/org.yakindu.sct.generator.base/.classpath

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 28 - 0
plugins/org.yakindu.sct.generator.base/.project

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.yakindu.sct.generator.base</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

+ 8 - 0
plugins/org.yakindu.sct.generator.base/.settings/org.eclipse.jdt.core.prefs

@@ -0,0 +1,8 @@
+#Mon Sep 05 10:20:01 CEST 2011
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5

+ 11 - 0
plugins/org.yakindu.sct.generator.base/META-INF/MANIFEST.MF

@@ -0,0 +1,11 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Base
+Bundle-SymbolicName: org.yakindu.sct.generator.base
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.yakindu.sct.generator.base.GeneratorActivator
+Bundle-Vendor: YAKINDU
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy

+ 4 - 0
plugins/org.yakindu.sct.generator.base/build.properties

@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .

+ 50 - 0
plugins/org.yakindu.sct.generator.base/src/org/yakindu/sct/generator/base/GeneratorActivator.java

@@ -0,0 +1,50 @@
+package org.yakindu.sct.generator.base;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class GeneratorActivator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.yakindu.sct.generator.base"; //$NON-NLS-1$
+
+	// The shared instance
+	private static GeneratorActivator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public GeneratorActivator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static GeneratorActivator getDefault() {
+		return plugin;
+	}
+
+}

+ 8 - 0
plugins/org.yakindu.sct.generator.cpp/.classpath

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

+ 34 - 0
plugins/org.yakindu.sct.generator.cpp/.project

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.yakindu.sct.generator.cpp</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.xtend.shared.ui.xtendBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.xtend.shared.ui.xtendXPandNature</nature>
+	</natures>
+</projectDescription>

+ 13 - 0
plugins/org.yakindu.sct.generator.cpp/.settings/org.eclipse.core.resources.prefs

@@ -0,0 +1,13 @@
+#Mon Sep 05 10:17:47 CEST 2011
+eclipse.preferences.version=1
+encoding//.settings/org.eclipse.xtend.shared.ui.prefs=Cp1252
+encoding//src/Model.xmi=Cp1252
+encoding//src/metamodel/Checks.chk=Cp1252
+encoding//src/metamodel/Extensions.ext=Cp1252
+encoding//src/metamodel/metamodel.ecore=Cp1252
+encoding//src/template/GeneratorExtensions.ext=Cp1252
+encoding//src/template/Template.xpt=Cp1252
+encoding//src/workflow/generator.mwe=Cp1252
+encoding//src/workflow/generatorWithBackend.mwe=Cp1252
+encoding//src/workflow/generatorWithProfiler.mwe=Cp1252
+encoding/<project>=Cp1252

+ 2 - 0
plugins/org.yakindu.sct.generator.cpp/.settings/org.eclipse.xtend.shared.ui.prefs

@@ -0,0 +1,2 @@
+metamodelContributor=org.eclipse.xtend.typesystem.emf.ui.EmfMetamodelContributor
+project.specific.metamodel=true

+ 23 - 0
plugins/org.yakindu.sct.generator.cpp/META-INF/MANIFEST.MF

@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.yakindu.sct.generator.cpp
+Bundle-SymbolicName: org.yakindu.sct.generator.cpp; singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.jdt.core;bundle-version="3.5.0",
+ org.eclipse.xtend.profiler;resolution:=optional,
+ org.apache.commons.logging,
+ org.apache.log4j;resolution:=optional,
+ com.ibm.icu;bundle-version="4.0.1",
+ org.antlr.runtime;bundle-version="3.0.0",
+ org.eclipse.core.runtime;bundle-version="3.5.0",
+ org.eclipse.emf.mwe.utils;bundle-version="0.7.0",
+ org.eclipse.emf.ecore.xmi;bundle-version="2.5.0",
+ org.eclipse.jface.text;bundle-version="3.5.0",
+ org.eclipse.xpand;bundle-version="0.7.0",
+ org.eclipse.xtend;bundle-version="0.7.0",
+ org.eclipse.xtend.typesystem.emf;bundle-version="0.7.0",
+ org.eclipse.xtend.backend;bundle-version="1.0.0";resolution:=optional,
+ org.eclipse.xtend.middleend.xpand;bundle-version="1.0.0";resolution:=optional,
+ org.eclipse.xtend.middleend.xtend;bundle-version="1.0.0";resolution:=optional,
+ org.yakindu.sct.model.sgraph;bundle-version="1.0.0"
+Bundle-RequiredExecutionEnvironment: J2SE-1.5

+ 3 - 0
plugins/org.yakindu.sct.generator.cpp/build.properties

@@ -0,0 +1,3 @@
+source.. = src/,\
+           src-gen
+bin.includes = META-INF/,.

+ 15 - 0
plugins/org.yakindu.sct.generator.cpp/src/Model.xmi

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="ASCII"?>
+<metamodel:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:metamodel="http://www.example.org/metamodel" xsi:schemaLocation="http://www.example.org/metamodel metamodel/metamodel.ecore">
+  <types xsi:type="metamodel:Datatype" name="String"/>
+  <types xsi:type="metamodel:Datatype" name="Integer"/>
+  <types xsi:type="metamodel:Entity" name="Person">
+    <features name="name" type="//@types.0"/>
+    <features name="age" type="//@types.1"/>
+    <features name="address" type="//@types.3"/>
+  </types>
+  <types xsi:type="metamodel:Entity" name="Address">
+    <features name="street" type="//@types.0"/>
+    <features name="zip" type="//@types.0"/>
+    <features name="city" type="//@types.0"/>
+  </types>
+</metamodel:Model>

+ 9 - 0
plugins/org.yakindu.sct.generator.cpp/src/metamodel/Checks.chk

@@ -0,0 +1,9 @@
+import metamodel;
+
+extension metamodel::Extensions;
+
+context Model ERROR "No entities defined" :
+	types.exists(e|Entity.isInstance(e));
+	
+context Entity ERROR "Duplicate entity "+name :
+	model().entities().select(e|e.name==name).size==1;

+ 7 - 0
plugins/org.yakindu.sct.generator.cpp/src/metamodel/Extensions.ext

@@ -0,0 +1,7 @@
+import metamodel;
+
+Model model(Type this) :
+	eContainer;
+	
+List[Entity] entities(Model this) :
+	types.typeSelect(Entity);

+ 22 - 0
plugins/org.yakindu.sct.generator.cpp/src/metamodel/metamodel.ecore

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="metamodel"
+    nsURI="http://www.example.org/metamodel" nsPrefix="metamodel">
+  <eClassifiers xsi:type="ecore:EClass" name="Model">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="types" upperBound="-1"
+        eType="#//Type" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Type" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Datatype" eSuperTypes="#//Type"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Entity" eSuperTypes="#//Type">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="features" upperBound="-1"
+        eType="#//Feature" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Feature">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//Type"/>
+  </eClassifiers>
+</ecore:EPackage>

+ 10 - 0
plugins/org.yakindu.sct.generator.cpp/src/template/GeneratorExtensions.ext

@@ -0,0 +1,10 @@
+import metamodel;
+
+extension metamodel::Extensions reexport;
+
+getter(Feature this) :
+	"get"+name.toFirstUpper();
+	
+setter(Feature this) :
+	"set"+name.toFirstUpper();
+	

+ 9 - 0
plugins/org.yakindu.sct.generator.cpp/src/template/Template.xpt

@@ -0,0 +1,9 @@
+«IMPORT sgraph»
+«EXTENSION template::GeneratorExtensions»
+
+«DEFINE main FOR Statechart»
+	«FILE "Test.cpp"»
+	Hello World!
+	«ENDFILE»
+«ENDDEFINE»
+

+ 36 - 0
plugins/org.yakindu.sct.generator.cpp/src/workflow/generator.mwe

@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<workflow>
+	<!--<property name="model" value="org.yakindu.sct.generator.cpp/src/Model.xmi" />-->
+	<property name="src-gen" value="src-gen" />
+	
+	<!-- set up EMF for standalone execution -->
+	<bean class="org.eclipse.emf.mwe.utils.StandaloneSetup" >
+		<platformUri value=".."/>
+	</bean>
+	
+	<!-- instantiate metamodel -->
+	<bean id="mm_emf" class="org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel"/>
+
+	<!-- load model and store it in slot 'model' -->
+	<component class="org.eclipse.emf.mwe.utils.Reader">
+		<uri value="platform:/resource/${model}" />
+		<modelSlot value="model" />
+	</component>
+
+	<!-- check model -->
+	<component class="org.eclipse.xtend.check.CheckComponent">
+		<metaModel idRef="mm_emf"/>
+		<checkFile value="metamodel::Checks" />
+		<emfAllChildrenSlot value="model" />
+	</component>
+
+	<!--  generate code -->
+	<component class="org.eclipse.xpand2.Generator">
+		<metaModel idRef="mm_emf"/>
+		<expand
+			value="template::Template::main FOR model" />
+		<outlet path="${src-gen}" >
+			<postprocessor class="org.eclipse.xpand2.output.JavaBeautifier" />
+		</outlet>
+	</component>
+</workflow>

+ 62 - 0
plugins/org.yakindu.sct.generator.cpp/src/workflow/generatorWithBackend.mwe

@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+
+<!--
+USE THIS WORKFLOW FOR LARGER MODELS!
+
+This worklow uses a new execution engine for the generator, that is 
+faster on larger models than the traditional Generator. 
+This engine is being called the Xtend Backend. A future version 
+will support compilation into code directly executable by the Xtend Backend.
+-->
+
+<workflow>
+	<property name="model" value="org.yakindu.sct.generator.cpp/src/Model.xmi" />
+	<property name="src-gen" value="src-gen" />
+	
+	<!-- set up EMF for standalone execution -->
+	<bean class="org.eclipse.emf.mwe.utils.StandaloneSetup" >
+		<platformUri value=".."/>
+	</bean>
+	
+	<!-- instantiate metamodel -->
+	<bean id="mm_emf" class="org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel"/>
+
+	<!--
+	Multiple languages for code generation, model validation and transformation can be used. 
+	The languages are translated into Xtend Backend code by so called language contributors 
+	a.k.a middleends. As soon as a middleend for OCL is available, OCL will be usable from Xpand/Xtend. 
+	 
+	Register the language contributors at the generator backend! 
+	-->
+	<component class="org.eclipse.xtend.middleend.LanguageSetup">
+		<!-- Xtend -->
+		<languageContributor value="org.eclipse.xtend.middleend.xtend.plugin.OldXtendRegistryFactory"/>
+		<!-- Check -->
+		<languageContributor value="org.eclipse.xtend.middleend.xtend.plugin.OldCheckRegistryFactory"/>
+		<!-- Xpand -->
+		<languageContributor value="org.eclipse.xtend.middleend.xpand.plugin.OldXpandRegistryFactory"/>
+	</component>
+
+	<!-- load model and store it in slot 'model' -->
+	<component class="org.eclipse.emf.mwe.utils.Reader">
+		<uri value="platform:/resource/${model}" />
+		<modelSlot value="model" />
+	</component>
+
+	<!-- check model -->
+	<component class="org.eclipse.xtend.middleend.xtend.CheckComponent">
+		<metaModel idRef="mm_emf"/>
+		<checkFile value="metamodel::Checks" />
+		<emfAllChildrenSlot value="model" />
+	</component>
+
+	<!--  generate code -->
+	<component class="org.eclipse.xtend.middleend.xpand.XpandComponent">
+		<metaModel idRef="mm_emf"/>
+		<expand
+			value="template::Template::main FOR model" />
+		<outlet path="${src-gen}" >
+			<postprocessor class="org.eclipse.xpand2.output.JavaBeautifier" />
+		</outlet>
+	</component>
+</workflow>

+ 52 - 0
plugins/org.yakindu.sct.generator.cpp/src/workflow/generatorWithProfiler.mwe

@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<workflow>
+	<property name="model" value="org.yakindu.sct.generator.cpp/src/Model.xmi" />
+	<property name="src-gen" value="src-gen" />
+	<property name="profiling-gen" value="profiling" />
+	
+	<!-- set up EMF for standalone execution -->
+	<bean class="org.eclipse.emf.mwe.utils.StandaloneSetup" >
+		<platformUri value=".."/>
+	</bean>
+	
+	<!-- instantiate metamodel -->
+	<bean id="mm_emf" class="org.eclipse.xtend.typesystem.emf.EmfRegistryMetaModel"/>
+
+	<!-- load model and store it in slot 'model' -->
+	<component class="org.eclipse.emf.mwe.utils.Reader">
+		<uri value="platform:/resource/${model}" />
+		<modelSlot value="model" />
+	</component>
+
+	<!-- suround components to be measured with profiler component -->
+	<component id="profiler" class="org.eclipse.xtend.profiler.ProfilerComponent"> 
+		<resultSlot value="profilingResult" /> 
+
+		<!-- check model -->
+		<component class="org.eclipse.xtend.check.CheckComponent">
+			<vetoableCallback idRef="profiler"/>
+			<metaModel idRef="mm_emf"/>
+			<checkFile value="metamodel::Checks" />
+			<emfAllChildrenSlot value="model" />
+		</component>
+	
+		<!--  generate code -->
+		<component class="org.eclipse.xpand2.Generator">
+			<vetoableCallback idRef="profiler"/>
+			<metaModel idRef="mm_emf"/>
+			<expand
+				value="template::Template::main FOR model" />
+			<outlet path="${src-gen}" >
+				<postprocessor class="org.eclipse.xpand2.output.JavaBeautifier" />
+			</outlet>
+		</component>
+	</component>
+	
+	<!-- generate profiling result -->
+	<component class="org.eclipse.xpand2.Generator" fileEncoding="ISO-8859-1">
+		<metaModel idRef="mm_emf"/> 
+		<expand value="org::eclipse::xtend::profiler::templates::Html::Main FOR profilingResult"/> 
+		<outlet overwrite="true" path="${profiling-gen}"/> 
+	</component> 
+	
+</workflow>