Skip to content
Snippets Groups Projects
Commit e8b85e29 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ automated/implicit type assignment for enum data instances #66

parent ae043d51
No related branches found
No related tags found
No related merge requests found
package org.etsi.mts.tdl;
import java.util.List;
import org.eclipse.xtext.EcoreUtil2;
import org.eclipse.xtext.resource.DerivedStateAwareResource;
import org.eclipse.xtext.resource.IDerivedStateComputer;
//TODO: move upstream
class TDLtxDerivedStateComputer implements IDerivedStateComputer {
@Override
public void installDerivedState(DerivedStateAwareResource resource, boolean preLinkingPhase) {
List<EnumDataType> enums = EcoreUtil2.getAllContentsOfType(resource.getContents().get(0), EnumDataType.class);
enums.forEach(e-> {
e.getValue().forEach(v -> v.setDataType(e));
});
// //TODO: also for gate references (instead of in scope?)
// List<GateReference> grs = EcoreUtil2.getAllContentsOfType(resource.getContents().get(0), GateReference.class);
// grs.forEach(e-> e.setName(e.getName()==null ?
// null //e.getComponent().getName()+"_"+e.getGate().getName()
// : e.getName()));
// grs.forEach(e-> System.out.println(e.getName()));
}
@Override
public void discardDerivedState(DerivedStateAwareResource resource) {
List<EnumDataType> enums = EcoreUtil2.getAllContentsOfType(resource.getContents().get(0), EnumDataType.class);
enums.forEach(e-> {
e.getValue().forEach(v -> v.setDataType(null));
});
// //TODO: also for gate references (instead of in scope?)
// List<GateReference> grs = EcoreUtil2.getAllContentsOfType(resource.getContents().get(0), GateReference.class);
// grs.forEach(e-> e.setName(null));
}
}
\ No newline at end of file
...@@ -6,7 +6,15 @@ package org.etsi.mts.tdl; ...@@ -6,7 +6,15 @@ package org.etsi.mts.tdl;
import org.eclipse.xtext.conversion.IValueConverterService; import org.eclipse.xtext.conversion.IValueConverterService;
import org.eclipse.xtext.naming.IQualifiedNameConverter; import org.eclipse.xtext.naming.IQualifiedNameConverter;
import org.eclipse.xtext.naming.IQualifiedNameProvider; import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.resource.DerivedStateAwareResource;
import org.eclipse.xtext.resource.DerivedStateAwareResourceDescriptionManager;
import org.eclipse.xtext.resource.IDefaultResourceDescriptionStrategy;
import org.eclipse.xtext.resource.IDerivedStateComputer;
import org.eclipse.xtext.resource.IResourceDescription;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.scoping.IGlobalScopeProvider;
import org.etsi.mts.tdl.scoping.TDLQualifiedNameConverter; import org.etsi.mts.tdl.scoping.TDLQualifiedNameConverter;
import org.etsi.mts.tdl.scoping.TDLtxGlobalScopeProvider;
import org.etsi.mts.tdl.scoping.TdlQualifiedNameProvider; import org.etsi.mts.tdl.scoping.TdlQualifiedNameProvider;
/** /**
...@@ -24,4 +32,29 @@ public class TDLtxRuntimeModule extends AbstractTDLtxRuntimeModule { ...@@ -24,4 +32,29 @@ public class TDLtxRuntimeModule extends AbstractTDLtxRuntimeModule {
public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() { public Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
return TdlQualifiedNameProvider.class; return TdlQualifiedNameProvider.class;
} }
public Class<? extends IDerivedStateComputer> bindIDerivedStateComputer() {
return TDLtxDerivedStateComputer.class;
}
// Not needed for Xbase-projects
@Override
public Class<? extends XtextResource> bindXtextResource() {
return DerivedStateAwareResource.class;
}
// Not needed for Xbase-projects
public Class<? extends IResourceDescription.Manager> bindIResourceDescriptionManager() {
return DerivedStateAwareResourceDescriptionManager.class;
}
// public Class<? extends IDefaultResourceDescriptionStrategy> bindIDefaultResourceDescriptionStrategy() {
// return RDS.class;
// }
// @Override
// public Class<? extends IGlobalScopeProvider> bindIGlobalScopeProvider() {
// return TDLtxGlobalScopeProvider.class;
// }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment