pax_global_header 0000666 0000000 0000000 00000000064 14541313416 0014514 g ustar 00root root 0000000 0000000 52 comment=394bcdf41518c67679ad9749b2a3b55b12397307
ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/ 0000775 0000000 0000000 00000000000 14541313416 0024007 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/ 0000775 0000000 0000000 00000000000 14541313416 0025470 5 ustar 00root root 0000000 0000000 org.etsi.mts.tdl.graphical.labels.data/ 0000775 0000000 0000000 00000000000 14541313416 0034631 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins .classpath 0000664 0000000 0000000 00000000652 14541313416 0036617 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data
.gitignore 0000664 0000000 0000000 00000000053 14541313416 0036617 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data /src-gen
/.antlr-generator-3.2.0-patch.jar
.project 0000664 0000000 0000000 00000001777 14541313416 0036314 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data
org.etsi.mts.tdl.graphical.labels.data
org.eclipse.jdt.core.javabuilder
org.eclipse.pde.ManifestBuilder
org.eclipse.pde.SchemaBuilder
org.eclipse.xtext.ui.shared.xtextBuilder
org.eclipse.m2e.core.maven2Builder
org.eclipse.m2e.core.maven2Nature
org.eclipse.jdt.core.javanature
org.eclipse.pde.PluginNature
org.eclipse.xtext.ui.shared.xtextNature
.settings/ 0000775 0000000 0000000 00000000000 14541313416 0036547 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data org.eclipse.core.resources.prefs 0000664 0000000 0000000 00000000067 14541313416 0044765 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/.settings eclipse.preferences.version=1
encoding/=UTF-8
org.eclipse.jdt.core.prefs 0000664 0000000 0000000 00000001031 14541313416 0043524 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/.settings eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=11
org.eclipse.jdt.core.compiler.compliance=11
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=11
org.eclipse.m2e.core.prefs 0000664 0000000 0000000 00000000126 14541313416 0043432 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/.settings activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1
org.eclipse.xtend.core.Xtend.prefs 0000664 0000000 0000000 00000000623 14541313416 0045154 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/.settings //outlet.DEFAULT_OUTPUT.sourceFolder.src/main/java.directory=xtend-gen
//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
BuilderConfiguration.is_project_specific=true
eclipse.preferences.version=1
outlet.DEFAULT_OUTPUT.hideLocalSyntheticVariables=true
outlet.DEFAULT_OUTPUT.installDslAsPrimarySource=false
outlet.DEFAULT_OUTPUT.userOutputPerSourceFolder=true
META-INF/ 0000775 0000000 0000000 00000000000 14541313416 0035771 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data MANIFEST.MF 0000664 0000000 0000000 00000002205 14541313416 0037422 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/META-INF Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: TDL Graphical Editor Labels
Bundle-Vendor: TDL Graphical Editor
Bundle-Version: 1.0.0.qualifier
Bundle-SymbolicName: org.etsi.mts.tdl.graphical.labels.data; singleton:=true
Bundle-ActivationPolicy: lazy
Require-Bundle: org.eclipse.xtext;visibility:=reexport,
org.eclipse.equinox.common;bundle-version="3.5.0",
org.eclipse.xtext.util,
org.eclipse.xtext.xbase.lib;bundle-version="2.14.0",
org.antlr.runtime;bundle-version="[3.2.0,3.2.1)",
org.eclipse.xtext.common.types,
org.objectweb.asm;resolution:=optional,
org.etsi.mts.tdl.model
Import-Package: org.apache.log4j
Bundle-RequiredExecutionEnvironment: JavaSE-11
Export-Package: org.etsi.mts.tdl.graphical.labels,
org.etsi.mts.tdl.graphical.labels.services,
org.etsi.mts.tdl.graphical.labels.serializer,
org.etsi.mts.tdl.graphical.labels.parser,
org.etsi.mts.tdl.graphical.labels.parser.antlr,
org.etsi.mts.tdl.graphical.labels.parser.antlr.internal,
org.etsi.mts.tdl.graphical.labels.validation,
org.etsi.mts.tdl.graphical.labels.scoping,
org.etsi.mts.tdl.graphical.labels.generator,
org.etsi.mts.tdl.graphical.labels.formatting2
build.properties 0000664 0000000 0000000 00000000733 14541313416 0040051 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data source.. = src/,\
src-gen/
bin.includes = META-INF/,\
.
additional.bundles = org.eclipse.xtext.xbase,\
org.eclipse.xtext.generator,\
org.apache.commons.logging,\
org.eclipse.emf.codegen.ecore,\
org.eclipse.emf.mwe.utils,\
org.eclipse.emf.mwe2.launch,\
org.eclipse.xtext.common.types,\
org.objectweb.asm pom.xml 0000664 0000000 0000000 00000010667 14541313416 0036160 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data
4.0.0
org.etsi.mts.tdl
org.etsi.mts.tdl.parent
1.0.0-SNAPSHOT
../../org.etsi.mts.tdl.parent
org.etsi.mts.tdl.graphical.labels.data
eclipse-plugin
TDL GR Data Labels Textual Syntax
org.codehaus.mojo
exec-maven-plugin
3.0.0
mwe2Launcher
generate-sources
java
org.eclipse.emf.mwe2.launch.runtime.Mwe2Launcher
/${project.basedir}/src/org/etsi/mts/tdl/graphical/labels/GenerateData.mwe2
-p
rootPath=/${project.basedir}/..
compile
true
false
org.eclipse.xtext
xtext-antlr-generator
2.1.1
org.eclipse.xtend
xtend-maven-plugin
org.apache.maven.plugins
maven-clean-plugin
${basedir}/../org.etsi.mts.tdl.graphical.labels.data/src-gen/
**/*
.gitignore
${basedir}/../org.etsi.mts.tdl.graphical.labels.data/xtend-gen/
**/*
.gitignore
${basedir}/../org.etsi.mts.tdl.graphical.labels.data.ui/src-gen/
**/*
.gitignore
${basedir}/../org.etsi.mts.tdl.graphical.labels.data.ui/xtend-gen/
**/*
.gitignore
org.eclipse.m2e
lifecycle-mapping
1.0.0
org.codehaus.mojo
exec-maven-plugin
[1.2.1,)
java
src-gen/ 0000775 0000000 0000000 00000000000 14541313416 0036167 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data .gitignore 0000664 0000000 0000000 00000000017 14541313416 0040155 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src-gen /*
!.gitignore
src/ 0000775 0000000 0000000 00000000000 14541313416 0035420 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data org/ 0000775 0000000 0000000 00000000000 14541313416 0036207 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src etsi/ 0000775 0000000 0000000 00000000000 14541313416 0037153 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org mts/ 0000775 0000000 0000000 00000000000 14541313416 0037756 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi tdl/ 0000775 0000000 0000000 00000000000 14541313416 0040541 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts graphical/ 0000775 0000000 0000000 00000000000 14541313416 0042473 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl labels/ 0000775 0000000 0000000 00000000000 14541313416 0043735 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical .gitignore 0000664 0000000 0000000 00000000032 14541313416 0045720 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels /DataStandaloneSetup.java
Data.xtext 0000664 0000000 0000000 00000015276 14541313416 0045717 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels // automatically generated by Xtext
grammar org.etsi.mts.tdl.graphical.labels.Data with org.eclipse.xtext.common.Terminals
//import "http://www.eclipse.org/uml2/4.0.0/Types"
import "http://www.etsi.org/spec/TDL/1.4.1"
//import "http://www.eclipse.org/uml2/5.0.0/Types" as types
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
//#####################################################################################
DataUse returns DataUse:
//TODO: make sure that DataElementUse works -> may be clashing with others (requires deeper alignment and cleanup)
DynamicDataUse | StaticDataUse | DataElementUse;
StaticDataUse returns StaticDataUse:
SpecialValueUse | DataInstanceUse | LiteralValueUse;
DynamicDataUse returns DynamicDataUse:
VariableUse | FunctionCall | PredefinedFunctionCall | FormalParameterUse | TimeLabelUse;
//Copied and adjusted from TDLtx
DataElementUse returns DataElementUse:
//'unified' //this gets embedded in the first alternative somehow!? -> shouldn't be needed anyway
//express also through table
// - (binding) [index] [items]
//anonymous x x
//type x x
//instance x x x
(
// //anonymous - split in case of problems
//// (ParameterBindingFragment | CollectionItemFragment)
//// ) | (
//instance
dataElement=[NamedElement|Identifier]
UnassignedFragmentNamedElement?
ParameterBindingFragment?
ReductionFragment
) | (
//type / anonymous (simplified, avoid duplication, otherwise remove "?")
//DONE: empty parameters / collections? -> added
//DONE: support simple data types as well? -> use any value instead
//DONE: decide on prefix -> extract to comment? -> capture as name
//(('new' | 'a') dataElement=[tdl::DataType|Identifier])?
(
//DONE: do we really need different ways? -> not for now!
//name=('new' | 'a' | 'an' | 'the')
'new' dataElement=[DataType|Identifier]
)?
UnassignedFragmentNamedElement?
(ParameterBindingFragment | CollectionItemFragment)
)
;
fragment UnassignedFragmentNamedElement returns DataElementUse:
'<' unassignedMember=UnassignedMemberTreatment '>'
;
fragment CollectionItemFragment returns DataElementUse:
'[' (item+=DataUse (',' item+=DataUse)*)? ']'
;
fragment ReductionFragment returns DataUse:
(->reduction+=CollectionReference)?
('.' reduction+=MemberReference)*
;
CollectionReference returns MemberReference:
'[' collectionIndex=DataUse ']'
;
SpecialValueUse returns StaticDataUse:
NoneValue | AnyValue | AnyNoneValue;
EString returns ecore::EString:
ID;
Identifier:
ID
;
DataInstanceUse returns DataInstanceUse:
{DataInstanceUse}
((dataInstance=[DataInstance|NumberAsIdentifier] |
dataInstance=[DataInstance|EString])
((unassignedMember=UnassignedMemberTreatment)?
('(' argument+=ParameterBinding ("," argument+=ParameterBinding)* ')')?
('.' reduction+=MemberReference)*)?)
|
(dataType=[StructuredDataType|EString]
(unassignedMember=UnassignedMemberTreatment)?
('(' argument+=ParameterBinding ("," argument+=ParameterBinding)* ')'))
|
((unassignedMember=UnassignedMemberTreatment)?
('(' argument+=ParameterBinding ("," argument+=ParameterBinding)* ')'))
|
{DataInstanceUse}
((dataType=[CollectionDataType|EString])?
(unassignedMember=UnassignedMemberTreatment)?
'{'
(item+=DataUse ("," item+=DataUse)*)?
'}') // TODO: if for some reason the data instance use does have a name
// it will cause problems... same applies for other scenarios
// TODO: create a more elegant way to handle that gracefully)
// (name=EString)?
;
NumberAsIdentifier returns ecore::EString:
'-'? INT ('.' INT)?;
enum UnassignedMemberTreatment returns UnassignedMemberTreatment:
AnyValue='?' | AnyValueOrOmit='*' | undefined=' ';
LiteralValueUse returns LiteralValueUse:
{LiteralValueUse}
(value=String0 | intValue=BigInt | boolValue=Boolean)
(':' dataType=[DataType|EString]
(ParameterBindingFragment | ReductionFragment)
)?
;
BigInt returns ecore::EBigInteger:
INT;
Boolean returns ecore::EBoolean:
'true' | 'false';
MemberReference returns MemberReference:
member=[Member|EString];
FormalParameterUse returns FormalParameterUse:
parameter=[FormalParameter|EString]
('(' argument+=ParameterBinding ("," argument+=ParameterBinding)* ')')?
("." reduction+=MemberReference)*;
FunctionCall returns FunctionCall:
function=[Function|EString]
'('
(argument+=ParameterBinding ("," argument+=ParameterBinding)*)?
')'
('.' reduction+=MemberReference)*;
VariableUse returns VariableUse:
componentInstance=[ComponentInstance|EString]
'->'
variable=[Variable|EString]
('(' argument+=ParameterBinding ("," argument+=ParameterBinding)* ')')?
("." reduction+=MemberReference)*;
TimeLabelUse returns TimeLabelUse:
// XXX need to add predefined function -> for what
timeLabel=[TimeLabel|EString]
('.' kind=TimeLabelUseKind)?
;
enum TimeLabelUseKind returns TimeLabelUseKind:
Last = 'last' | Previous = 'previous' | First = 'first'
;
fragment ParameterBindingFragment returns DataUse:
LParen (argument+=ParameterBinding ( ',' argument+=ParameterBinding)*)? RParen
;
ParameterBinding returns ParameterBinding:
parameter=[Parameter|EString]
':='
dataUse=DataUse;
NoneValue returns OmitValue:
{OmitValue}
'omit';
AnyValue returns AnyValue:
'?'
(':' dataType=[DataType|EString]);
AnyNoneValue returns AnyValueOrOmit:
{AnyValueOrOmit}
'*';
String0 returns ecore::EString:
STRING;
ComponentInstanceBinding returns ComponentInstanceBinding:
formalComponent=[ComponentInstance|Identifier]
'->' actualComponent=[ComponentInstance|Identifier]
;
PredefinedFunctionCall returns PredefinedFunctionCall:
// XXX add all predefined functions -> done?
PredefinedFunctionCallSize | PredefinedFunctionCallNot | PredefinedFunctionCallBinary;
PredefinedFunctionCallSize returns PredefinedFunctionCall:
function=[PredefinedFunction|PredefinedIdentifierSize]
'('
actualParameters+=DataUse
')'
// XXX check reduction -> no reduction?
;
PredefinedFunctionCallNot returns PredefinedFunctionCall:
function=[PredefinedFunction|PredefinedIdentifierNot]
'('
actualParameters+=DataUse
')';
PredefinedFunctionCallBinary returns PredefinedFunctionCall:
'('
actualParameters+=DataUse
function=[PredefinedFunction|PredefinedIdentifierBinary]
actualParameters+=DataUse
')';
PredefinedIdentifierBinary returns ecore::EString:
'+' | '-' | '*' | '/' | 'mod'
| '>' | '<' | '>=' | '<=' | '>='
| '==' | '!=' | 'and' | 'or' | 'xor';
PredefinedIdentifierNot returns ecore::EString:
'not';
PredefinedIdentifierSize returns ecore::EString:
'size';
LParen:
'('
;
RParen:
')'
;
DataContextFinder.java 0000664 0000000 0000000 00000003531 14541313416 0050150 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels package org.etsi.mts.tdl.graphical.labels;
import java.util.Collections;
import java.util.Set;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.IGrammarAccess;
import org.eclipse.xtext.ParserRule;
import org.eclipse.xtext.serializer.ISerializationContext;
import org.eclipse.xtext.serializer.analysis.SerializationContext;
import org.eclipse.xtext.serializer.sequencer.IContextFinder;
import org.etsi.mts.tdl.ComponentInstanceBinding;
import org.etsi.mts.tdl.DataUse;
import org.etsi.mts.tdl.graphical.labels.services.DataGrammarAccess;
import com.google.inject.Inject;
public class DataContextFinder implements IContextFinder {
@Inject
private IGrammarAccess grammarAccess;
@Override
public Set findByContents(EObject semanticObject,
Iterable contextCandidates) {
return findByContentsAndContainer(semanticObject, contextCandidates);
}
@Override
public Set findByContentsAndContainer(EObject semanticObject,
Iterable contextCandidates) {
ParserRule rule = null;
if (semanticObject instanceof DataUse)
rule = ((DataGrammarAccess)grammarAccess).getDataUseRule();
if (semanticObject instanceof ComponentInstanceBinding)
rule = ((DataGrammarAccess)grammarAccess).getComponentInstanceBindingRule();
if (rule != null) {
ISerializationContext context = SerializationContext.fromEObject(rule, semanticObject);
return Collections.singleton(context);
}
return Collections.emptySet();
}
@Override
public Iterable findContextsByContents(EObject semanticObject, Iterable contextCandidates) {
// This is deprecated
return null;
}
@Override
public Iterable findContextsByContentsAndContainer(EObject semanticObject,
Iterable contextCandidates) {
// This is deprecated
return null;
}
}
DataRuntimeModule.java 0000664 0000000 0000000 00000003512 14541313416 0050164 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels /*
* generated by Xtext 2.10.0
*/
package org.etsi.mts.tdl.graphical.labels;
import org.eclipse.xtext.linking.ILinkingService;
import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.parser.IParser;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.scoping.IGlobalScopeProvider;
import org.eclipse.xtext.serializer.sequencer.IContextFinder;
import org.eclipse.xtext.serializer.tokens.ICrossReferenceSerializer;
import org.etsi.mts.tdl.graphical.labels.linking.ContextAwareLinkingService;
import org.etsi.mts.tdl.graphical.labels.naming.QNameProvider;
import org.etsi.mts.tdl.graphical.labels.parser.RuleBasedDataParser;
import org.etsi.mts.tdl.graphical.labels.resource.AdaptiveLinkingResource;
import org.etsi.mts.tdl.graphical.labels.scoping.ConfigurableScopeProvider;
import org.etsi.mts.tdl.graphical.labels.serializer.DataCrossReferenceSerializer;
/**
* Use this class to register components to be used at runtime / without the Equinox extension registry.
*/
public class DataRuntimeModule extends AbstractDataRuntimeModule {
public Class extends ICrossReferenceSerializer> bindICrossReferenceSerializer() {
return DataCrossReferenceSerializer.class;
}
public Class extends IContextFinder> bindIContextFinder() {
return DataContextFinder.class;
}
public Class extends IParser> bindIParser() {
return RuleBasedDataParser.class;
}
public Class extends XtextResource> bindXtextResource() {
return AdaptiveLinkingResource.class;
}
public Class extends ILinkingService> bindILinkingService() {
return ContextAwareLinkingService.class;
}
public Class extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
return QNameProvider.class;
}
public Class extends IGlobalScopeProvider> bindIGlobalScopeProvider() {
return ConfigurableScopeProvider.class;
}
}
GenerateData.mwe2 0000664 0000000 0000000 00000013745 14541313416 0047067 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels module org.etsi.mts.tdl.graphical.labels.Data
import org.eclipse.xtext.xtext.generator.*
import org.eclipse.xtext.xtext.generator.model.project.*
var rootPath = ".."
//var projectName = "org.etsi.mts.tdl.graphical.labels.data"
//var runtimeProject = "../${projectName}"
Workflow {
// bean = StandaloneSetup {
// scanClassPath = true
// platformUri = "${runtimeProject}/.."
//
// registerGeneratedEPackage = "org.etsi.mts.tdl.tdlPackage"
// registerGenModelFile = "platform:/resource/org.etsi.mts.tdl.model/model/tdl.genmodel"
// }
//
// component = DirectoryCleaner {
// directory = "${runtimeProject}/src-gen"
// }
//
// component = DirectoryCleaner {
// directory = "${runtimeProject}.ui/src-gen"
// }
component = XtextGenerator {
configuration = {
project = StandardProjectConfig {
baseName = "org.etsi.mts.tdl.graphical.labels.data"
rootPath = rootPath
eclipsePlugin = {
enabled = true
}
genericIde = {
name = "org.etsi.mts.tdl.graphical.labels.data.ui"
}
createEclipseMetaData = true
}
code = {
encoding = "utf-8"
fileHeader = "/*\n * generated by Xtext \${version}\n */"
preferXtendStubs = false
}
}
language = StandardLanguage {
name = "org.etsi.mts.tdl.graphical.labels.Data"
fileExtensions = "tdldata"
referencedResource = "platform:/resource/org.etsi.mts.tdl.model/model/tdl.genmodel"
formatter = {
generateStub = true
}
serializer = {
generateStub = false
}
validator = {
generateStub = false
}
parserGenerator = {
options = {
classSplitting = true
backtrack = true
memoize = true
// kAsString = "8"
}
}
}
// bean = StandaloneSetup {
// scanClassPath = true
// platformUri = "${runtimeProject}/.."
// registerGeneratedEPackage = "org.etsi.mts.tdl.tdlPackage"
// registerGenModelFile = "platform:/resource/org.etsi.mts.tdl.model/model/tdl.genmodel"
// }
//
// component = DirectoryCleaner {
// directory = "${runtimeProject}/src-gen"
// }
//
// component = DirectoryCleaner {
// directory = "${runtimeProject}.ui/src-gen"
// }
//
// component = Generator {
// pathRtProject = runtimeProject
// pathUiProject = "${runtimeProject}.ui"
// pathTestProject = "${runtimeProject}.tests"
// projectNameRt = projectName
// projectNameUi = "${projectName}.ui"
// language = auto-inject {
// uri = grammarURI
//
// // Java API to access grammar elements (required by several other fragments)
// fragment = grammarAccess.GrammarAccessFragment auto-inject {}
//
// // generates Java API for the generated EPackages
// // fragment = ecore.EcoreGeneratorFragment auto-inject {}
//
// // the Ecore2Xtext specific terminal converter
// fragment = ecore2xtext.Ecore2XtextValueConverterServiceFragment auto-inject {}
//
// // serializer 2.0
// fragment = serializer.SerializerFragment auto-inject {
// //generateStub = false
// }
//
// // the old serialization component
// // fragment = parseTreeConstructor.ParseTreeConstructorFragment auto-inject {}
//
// // a custom ResourceFactory for use with EMF
// fragment = resourceFactory.ResourceFactoryFragment auto-inject {}
//
// // the Antlr parser
// fragment = parser.antlr.XtextAntlrGeneratorFragment auto-inject {
// options = {
// classSplitting = true
// backtrack = true
// memoize = true
// kAsString = "8"
// }
// }
//
// // Xtend-based API for validation
// fragment = validation.ValidatorFragment auto-inject {
// // composedCheck = "org.eclipse.xtext.validation.ImportUriValidator"
// // composedCheck = "org.eclipse.xtext.validation.NamesAreUniqueValidator"
// }
//
// // old scoping and exporting API
// // fragment = scoping.ImportNamespacesScopingFragment auto-inject {}
// // fragment = exporting.QualifiedNamesFragment auto-inject {}
//
// // scoping and exporting API
// fragment = scoping.ImportURIScopingFragment auto-inject {}
// fragment = exporting.SimpleNamesFragment auto-inject {}
// fragment = builder.BuilderIntegrationFragment auto-inject {}
//
// // generator API
// fragment = generator.GeneratorFragment auto-inject {}
//
// // formatter API
// // fragment = formatting.FormatterFragment auto-inject {}
// fragment = ecore2xtext.FormatterFragment auto-inject {}
//
// // labeling API
// fragment = labeling.LabelProviderFragment auto-inject {}
//
// // outline API
// fragment = outline.OutlineTreeProviderFragment auto-inject {}
// fragment = outline.QuickOutlineFragment auto-inject {}
//
// // quickfix API
// fragment = quickfix.QuickfixProviderFragment auto-inject {}
//
// //content assist API
// fragment = contentAssist.ContentAssistFragment auto-inject {}
//
// // antlr parser generator tailored for content assist
// fragment = parser.antlr.XtextAntlrUiGeneratorFragment auto-inject {
// options = {
// classSplitting = true
// backtrack = true
// memoize = true
// kAsString = "8"
// }
// }
//
// // generates junit test support classes into Generator#pathTestProject
// fragment = junit.Junit4Fragment auto-inject {}
//
// // project wizard (optional)
// // fragment = projectWizard.SimpleProjectWizardFragment auto-inject {
// // generatorProjectName = "${projectName}.generator"
// // }
//
// // rename refactoring
// fragment = refactoring.RefactorElementNameFragment auto-inject {}
//
// // provides the necessary bindings for java types integration
// fragment = types.TypesGeneratorFragment auto-inject {}
//
// // generates the required bindings only if the grammar inherits from Xbase
// fragment = xbase.XbaseGeneratorFragment auto-inject {}
//
// // generates the required bindings only if the grammar inherits from Xtype
// fragment = xbase.XtypeGeneratorFragment auto-inject {}
//
// // provides a preference page for template proposals
// fragment = templates.CodetemplatesGeneratorFragment auto-inject {}
//
// // provides a compare view
// fragment = compare.CompareFragment auto-inject {}
// }
}
}
formatting2/ 0000775 0000000 0000000 00000000000 14541313416 0046171 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels DataFormatter.java 0000664 0000000 0000000 00000003416 14541313416 0051575 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/formatting2 package org.etsi.mts.tdl.graphical.labels.formatting2;
import org.eclipse.xtext.Keyword;
import org.eclipse.xtext.formatting.impl.FormattingConfig;
import org.eclipse.xtext.formatting2.AbstractFormatter2;
import org.eclipse.xtext.formatting2.IFormattableDocument;
import org.eclipse.xtext.util.Pair;
import org.etsi.mts.tdl.graphical.labels.services.DataGrammarAccess;
import com.google.inject.Inject;
public class DataFormatter extends AbstractFormatter2 {
@Inject
private DataGrammarAccess extensions;
@Override
public void format(Object obj, IFormattableDocument document) {
// TODO Auto-generated method stub
}
protected void configureFormatting(FormattingConfig c) {
//TODO this code should be converted to support new API
for (Pair pair : extensions.findKeywordPairs("{", "}")) {
c.setIndentation(pair.getFirst(), pair.getSecond());
c.setLinewrap(1).after(pair.getFirst());
c.setLinewrap(1).before(pair.getSecond());
c.setLinewrap(1).after(pair.getSecond());
}
System.out.println("formatting?");
for (Pair pair : extensions.findKeywordPairs("(", ")")) {
c.setIndentation(pair.getFirst(), pair.getSecond());
c.setLinewrap(1).after(pair.getFirst());
c.setLinewrap(1).before(pair.getSecond());
c.setLinewrap(1).after(pair.getSecond());
}
for (Keyword comma : extensions.findKeywords(",")) {
// c.setNoLinewrap().before(comma);
// c.setNoSpace().before(comma);
// c.setNoLinewrap().after(comma);
c.setNoLinewrap().before(comma);
c.setNoSpace().before(comma);
c.setLinewrap(1).after(comma);
}
c.setLinewrap(0, 1, 2).before(extensions.getSL_COMMENTRule());
c.setLinewrap(0, 1, 2).before(extensions.getML_COMMENTRule());
c.setLinewrap(0, 1, 1).after(extensions.getML_COMMENTRule());
}
}
generator/ 0000775 0000000 0000000 00000000000 14541313416 0045723 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels .gitignore 0000664 0000000 0000000 00000000024 14541313416 0047707 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/generator /DataGenerator.java
linking/ 0000775 0000000 0000000 00000000000 14541313416 0045370 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels ContextAwareLinkingService.java 0000664 0000000 0000000 00000011675 14541313416 0053506 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/linking package org.etsi.mts.tdl.graphical.labels.linking;
import java.util.Collections;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.xtext.linking.impl.DefaultLinkingService;
import org.eclipse.xtext.linking.impl.IllegalNodeException;
import org.eclipse.xtext.naming.IQualifiedNameConverter;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.scoping.IScope;
import org.etsi.mts.tdl.DataUse;
import org.etsi.mts.tdl.tdlPackage;
import com.google.inject.Inject;
public class ContextAwareLinkingService extends DefaultLinkingService {
private Map alternativeContexts;
@Inject
private IQualifiedNameConverter qualifiedNameConverter;
@Override
public List getLinkedObjects(EObject context, EReference ref, INode node) throws IllegalNodeException {
final EClass requiredType = ref.getEReferenceType();
if (requiredType == null)
return Collections. emptyList();
final String crossRefString = getCrossRefNodeAsString(node);
if (crossRefString != null && !crossRefString.equals("")) {
QualifiedName qualifiedLinkName = qualifiedNameConverter.toQualifiedName(crossRefString);
IScope scope = getScope(context, ref);
Iterable eObjectDescriptions = scope.getElements(qualifiedLinkName);
if (context instanceof DataUse && !eObjectDescriptions.iterator().hasNext()) {
AlternativeContext alternative = getAlternativeContext(context);
if (alternative != null) {
//Keeps track of current object in the resource
EObject current = context;
for (int i = 0; i < alternative.classes.length; i++) {
EObject alternativeContext = EcoreUtil.create(alternative.classes[i]);
//Add new object to resource
EcoreUtil.replace(current, alternativeContext);
current = alternativeContext;
IScope alternativeScope = getScope(alternativeContext, alternative.references[i]);
Iterable altEObjectDescriptions = alternativeScope.getElements(qualifiedLinkName);
if (altEObjectDescriptions.iterator().hasNext()) {
alternative.copy(context, alternativeContext);
context = alternativeContext;
ref = alternative.references[i];
scope = alternativeScope;
eObjectDescriptions = altEObjectDescriptions;
break;
}
}
if (context != current)
//No alternative match, restore original
EcoreUtil.replace(current, context);
}
}
Iterator iter = eObjectDescriptions.iterator();
if (iter.hasNext()) {
IEObjectDescription eObjectDescription = iter.next();
EObject linkedObject = eObjectDescription.getEObjectOrProxy();
if (!iter.hasNext() || !ref.isMany()) {
// If we replaced the context object above then we need to
// set this association here or it will be lost
context.eSet(ref, linkedObject);
return Collections.singletonList(linkedObject);
}
}
}
return Collections.emptyList();
}
public AlternativeContext getAlternativeContext(EObject contextObject) {
if (alternativeContexts == null) {
alternativeContexts = new Hashtable();
AlternativeContext dataUseContexts = new AlternativeContext() {
@Override
void copy(EObject from, EObject to) {
((DataUse)to).getReduction().addAll(((DataUse)from).getReduction());
((DataUse)to).getArgument().addAll(((DataUse)from).getArgument());
}
};
dataUseContexts.classes = new EClass[]{
tdlPackage.eINSTANCE.getDataInstanceUse(),
tdlPackage.eINSTANCE.getFunctionCall(),
tdlPackage.eINSTANCE.getPredefinedFunctionCall(),
tdlPackage.eINSTANCE.getVariableUse(),
tdlPackage.eINSTANCE.getFormalParameterUse(),
tdlPackage.eINSTANCE.getTimeLabelUse()
};
dataUseContexts.references = new EReference[]{
//TODO: extend with remaining kinds
tdlPackage.eINSTANCE.getDataInstanceUse_DataInstance(),
tdlPackage.eINSTANCE.getFunctionCall_Function(),
tdlPackage.eINSTANCE.getPredefinedFunctionCall_Function(),
tdlPackage.eINSTANCE.getVariableUse_Variable(),
tdlPackage.eINSTANCE.getFormalParameterUse_Parameter(),
tdlPackage.eINSTANCE.getTimeLabelUse_TimeLabel()
};
alternativeContexts.put(tdlPackage.eINSTANCE.getDataUse(), dataUseContexts);
}
for (EClass alternativeClass: alternativeContexts.keySet())
if (alternativeClass.isInstance(contextObject))
return alternativeContexts.get(alternativeClass);
System.out.println(contextObject);
return null;
}
}
abstract class AlternativeContext {
EClass[] classes;
EReference[] references;
abstract void copy(EObject from, EObject to);
} naming/ 0000775 0000000 0000000 00000000000 14541313416 0045206 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels QNameProvider.java 0000664 0000000 0000000 00000001203 14541313416 0050561 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/naming package org.etsi.mts.tdl.graphical.labels.naming;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider;
import org.eclipse.xtext.naming.QualifiedName;
import org.etsi.mts.tdl.Element;
import org.etsi.mts.tdl.NamedElement;
public class QNameProvider extends DefaultDeclarativeQualifiedNameProvider {
@Override
public QualifiedName getFullyQualifiedName(EObject obj) {
if (obj instanceof NamedElement) {
String name = ((Element) obj).getName();
if (name != null)
return QualifiedName.create(((Element) obj).getName());
}
return super.getFullyQualifiedName(obj);
}
}
parser/ 0000775 0000000 0000000 00000000000 14541313416 0045231 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels RuleBasedDataParser.java 0000664 0000000 0000000 00000000651 14541313416 0051713 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/parser package org.etsi.mts.tdl.graphical.labels.parser;
import org.etsi.mts.tdl.graphical.labels.parser.antlr.DataParser;
public class RuleBasedDataParser extends DataParser {
private String defaultRuleName = super.getDefaultRuleName();
public void setDefaultRuleName(String defaultRuleName) {
this.defaultRuleName = defaultRuleName;
}
@Override
protected String getDefaultRuleName() {
return defaultRuleName;
}
}
resource/ 0000775 0000000 0000000 00000000000 14541313416 0045564 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels AdaptiveLinkingResource.java 0000664 0000000 0000000 00000001554 14541313416 0053215 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/resource package org.etsi.mts.tdl.graphical.labels.resource;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.xtext.linking.lazy.LazyLinkingResource;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.util.Triple;
public class AdaptiveLinkingResource extends LazyLinkingResource {
@Override
protected EObject getEObject(String uriFragment, Triple triple) throws AssertionError {
List linkedObjects = getLinkingService().getLinkedObjects(
triple.getFirst(),
triple.getSecond(),
triple.getThird());
if (!linkedObjects.isEmpty()) {
EObject newObject = linkedObjects.get(0);
if (!triple.getSecond().getEType().isInstance(newObject)) {
//Was replaced
return null;
}
}
return super.getEObject(uriFragment, triple);
}
}
scoping/ 0000775 0000000 0000000 00000000000 14541313416 0045377 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels ConfigurableScopeProvider.java 0000664 0000000 0000000 00000005124 14541313416 0053351 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/scoping package org.etsi.mts.tdl.graphical.labels.scoping;
import java.util.Hashtable;
import java.util.LinkedHashSet;
import java.util.Map;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.resource.IResourceDescription;
import org.eclipse.xtext.resource.IResourceDescriptions;
import org.eclipse.xtext.resource.IResourceServiceProvider;
import org.eclipse.xtext.scoping.IScope;
import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider;
import org.eclipse.xtext.scoping.impl.SelectableBasedScope;
import org.etsi.mts.tdl.ElementImport;
import org.etsi.mts.tdl.Package;
import org.etsi.mts.tdl.tdlPackage;
import com.google.common.base.Predicate;
import com.google.inject.Inject;
public class ConfigurableScopeProvider extends ImportUriGlobalScopeProvider {
@Inject
private IResourceServiceProvider resourceServiceProvider;
private Map> importedUris = new Hashtable>();
@Override
protected LinkedHashSet getImportedUris(Resource resource) {
URI uri = resource.getURI();
ResourceSet rs = new ResourceSetImpl();
Resource realResource = rs.getResource(uri, true);
LinkedHashSet imports = new LinkedHashSet();
importedUris.put(uri, imports);
imports.add(uri);
//Add resource URIs of imported packages
for (EObject e: realResource.getContents()) {
if (tdlPackage.eINSTANCE.getPackage().isInstance(e)) {
Package p = (Package) e;
addImports(p, imports);
}
}
return imports;
}
private void addImports(Package p, LinkedHashSet imports) {
for (ElementImport pi: p.getImport()) {
Package ip = pi.getImportedPackage();
URI iUri = EcoreUtil.getURI(ip).trimFragment();
imports.add(iUri);
addImports(ip, imports);
}
}
@Override
protected IScope createLazyResourceScope(IScope parent, URI uri,
IResourceDescriptions descriptions, EClass type,
Predicate filter, boolean ignoreCase) {
ResourceSet rs = new ResourceSetImpl();
Resource resource = rs.getResource(uri, true);
IResourceDescription description = resourceServiceProvider.getResourceDescriptionManager().getResourceDescription(resource);
IScope scope = SelectableBasedScope.createScope(parent, description, filter, type, ignoreCase);
return scope;
}
}
DataScopeProvider.java 0000664 0000000 0000000 00000010203 14541313416 0051614 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/scoping /*
* generated by Xtext 2.10.0
*/
package org.etsi.mts.tdl.graphical.labels.scoping;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.resource.EObjectDescription;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.eclipse.xtext.scoping.IScope;
import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
import org.eclipse.xtext.scoping.impl.SimpleScope;
import org.etsi.mts.tdl.DataInstanceUse;
import org.etsi.mts.tdl.DataType;
import org.etsi.mts.tdl.DataUse;
import org.etsi.mts.tdl.FormalParameterUse;
import org.etsi.mts.tdl.FunctionCall;
import org.etsi.mts.tdl.Member;
import org.etsi.mts.tdl.MemberReference;
import org.etsi.mts.tdl.ParameterBinding;
import org.etsi.mts.tdl.PredefinedFunctionCall;
import org.etsi.mts.tdl.SpecialValueUse;
import org.etsi.mts.tdl.StructuredDataType;
import org.etsi.mts.tdl.VariableUse;
import com.google.inject.Inject;
/**
* This class contains custom scoping description.
*
* See https://www.eclipse.org/Xtext/documentation/303_runtime_concepts.html#scoping
* on how and when to use it.
*/
public class DataScopeProvider extends AbstractDeclarativeScopeProvider {
@Inject
private IQualifiedNameProvider qualifiedNameProvider;
public IScope scope_ParameterBinding_parameter(ParameterBinding parameterBinding, EReference ref) {
DataUse dataUse = (DataUse) parameterBinding.eContainer();
return getDataUseMembers(dataUse);
}
public IScope scope_MemberReference_member(MemberReference memberRef, EReference ref) {
DataUse dataUse = (DataUse) memberRef.eContainer();
return getDataUseMembers(dataUse);
}
private IScope getDataUseMembers(DataUse dataUse) {
List descriptions;
DataType type = getDataUseType(dataUse);
if (type instanceof StructuredDataType) {
descriptions = new ArrayList();
gatherMembers((StructuredDataType) type, descriptions);
} else
descriptions = Collections.EMPTY_LIST;
SimpleScope scope = new QNameShadowingScope(descriptions);
return scope;
}
private DataType getDataUseType(DataUse dataUse) {
if (dataUse instanceof DataInstanceUse)
return ((DataInstanceUse) dataUse).getDataInstance().getDataType();
else if (dataUse instanceof VariableUse)
return ((VariableUse) dataUse).getVariable().getDataType();
else if (dataUse instanceof SpecialValueUse)
//TODO didn't this have a type?
return null;
else if (dataUse instanceof FormalParameterUse)
((FormalParameterUse) dataUse).getParameter().getDataType();
else if (dataUse instanceof FunctionCall)
((FunctionCall) dataUse).getFunction().getReturnType();
else if (dataUse instanceof PredefinedFunctionCall)
((PredefinedFunctionCall) dataUse).getFunction().getReturnType();
return null;
}
private void gatherMembers(StructuredDataType type, List descriptions) {
attributes: for (Member m : type.getMember()) {
DifferringQNameEObjectDescription desc = new DifferringQNameEObjectDescription(qualifiedNameProvider.getFullyQualifiedName(m), m);
QualifiedName qName = desc.getQualifiedName();
for (IEObjectDescription d : descriptions)
if (((DifferringQNameEObjectDescription)d).getQualifiedName().equals(qName))
continue attributes;
descriptions.add(desc);
}
}
class DifferringQNameEObjectDescription extends EObjectDescription {
private QualifiedName name;
public DifferringQNameEObjectDescription(QualifiedName qualifiedName, EObject element) {
super(qualifiedName, element, Collections.emptyMap());
name = QualifiedName.create(qualifiedName.getLastSegment());
}
@Override
public QualifiedName getName() {
return name;
}
}
class QNameShadowingScope extends SimpleScope {
public QNameShadowingScope(Iterable descriptions) {
super(descriptions);
}
@Override
protected Object getShadowingKey(IEObjectDescription description) {
return description.getQualifiedName();
}
}
} serializer/ 0000775 0000000 0000000 00000000000 14541313416 0046106 5 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels DataCrossReferenceSerializer.java 0000664 0000000 0000000 00000001503 14541313416 0054504 0 ustar 00root root 0000000 0000000 ide-master-plugins-org.etsi.mts.tdl.graphical.labels.data/plugins/org.etsi.mts.tdl.graphical.labels.data/src/org/etsi/mts/tdl/graphical/labels/serializer package org.etsi.mts.tdl.graphical.labels.serializer;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.CrossReference;
import org.eclipse.xtext.nodemodel.INode;
import org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic.Acceptor;
import org.etsi.mts.tdl.NamedElement;
public class DataCrossReferenceSerializer implements org.eclipse.xtext.serializer.tokens.ICrossReferenceSerializer {
@Override
public boolean isValid(EObject context, CrossReference crossref, EObject target, INode node,
Acceptor errorAcceptor) {
return true;
}
@Override
public String serializeCrossRef(EObject context, CrossReference crossref, EObject target, INode node,
Acceptor errorAcceptor) {
if (target instanceof NamedElement)
return ((NamedElement) target).getName();
return "";
}
}