Explorar o código

Changed C++ generator template to execution model

Andreas Mülder %!s(int64=14) %!d(string=hai) anos
pai
achega
6df1830ec1

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

@@ -1,7 +1,6 @@
 <?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"/>

+ 1 - 10
plugins/org.yakindu.sct.generator.cpp/.settings/org.eclipse.core.resources.prefs

@@ -1,13 +1,4 @@
-#Mon Sep 05 10:17:47 CEST 2011
+#Thu Sep 08 14:46:18 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

+ 3 - 6
plugins/org.yakindu.sct.generator.cpp/META-INF/MANIFEST.MF

@@ -3,7 +3,8 @@ 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",
+Require-Bundle: org.yakindu.sct.model.sexec;bundle-version="1.0.0",
+ org.eclipse.jdt.core;bundle-version="3.5.0",
  org.eclipse.xtend.profiler;resolution:=optional,
  org.apache.commons.logging,
  org.apache.log4j;resolution:=optional,
@@ -15,9 +16,5 @@ Require-Bundle: org.eclipse.jdt.core;bundle-version="3.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"
+ org.eclipse.xtend.typesystem.emf;bundle-version="0.7.0"
 Bundle-RequiredExecutionEnvironment: J2SE-1.5

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

@@ -1,15 +0,0 @@
-<?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>

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

@@ -1,9 +0,0 @@
-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;

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

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

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

@@ -1,22 +0,0 @@
-<?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>

+ 7 - 0
plugins/org.yakindu.sct.generator.cpp/src/org/yakindu/sct/generator/cpp/templates/Main.xpt

@@ -0,0 +1,7 @@
+«IMPORT sexec»
+
+«DEFINE Main FOR ExecutionFlow»
+«FILE 'Main.cpp'»
+	Hello C++
+«ENDFILE»
+«ENDDEFINE»

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

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

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

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

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

@@ -1,36 +0,0 @@
-<?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>

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

@@ -1,62 +0,0 @@
-<?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>

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

@@ -1,52 +0,0 @@
-<?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>

+ 8 - 7
plugins/org.yakindu.sct.model.sexec/.classpath

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

+ 1 - 1
plugins/org.yakindu.sct.model.sexec/META-INF/MANIFEST.MF

@@ -6,7 +6,7 @@ Bundle-Version: 1.0.0.qualifier
 Bundle-ClassPath: .
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Export-Package: org.yakindu.sct.model.sexec,
  org.yakindu.sct.model.sexec.impl,
  org.yakindu.sct.model.sexec.util

+ 20 - 20
plugins/org.yakindu.sct.model.sexec/plugin.xml

@@ -1,20 +1,20 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-
-<!--
- <copyright>
- </copyright>
-
- $Id$
--->
-
-<plugin>
-
-   <extension point="org.eclipse.emf.ecore.generated_package">
-      <package
-            uri="http://www.yakindu.org/sct/sexec/1.0.0"
-            class="org.yakindu.sct.model.sexec.SexecPackage"
-            genModel="model/sexec.genmodel"/>
-   </extension>
-
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ <copyright>
+ </copyright>
+
+ $Id$
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <package
+            uri="http://www.yakindu.org/sct/sexec/1.0.0"
+            class="org.yakindu.sct.model.sexec.SexecPackage"
+            genModel="model/sexec.genmodel"/>
+   </extension>
+
+</plugin>