From b88c842ba625753ea185e6166cd967e694160798 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sun, 27 Jun 2021 01:43:59 +0200 Subject: Add enum support --- .../solver/language/model/problem/Argument.java | 20 +-- .../language/model/problem/ClassDeclaration.java | 4 +- .../language/model/problem/EnumDeclaration.java | 36 +++++ .../viatra/solver/language/model/problem/Node.java | 2 +- .../solver/language/model/problem/Parameter.java | 6 +- .../language/model/problem/ProblemFactory.java | 9 ++ .../language/model/problem/ProblemPackage.java | 172 +++++++++++++++++++-- .../model/problem/ReferenceDeclaration.java | 6 +- .../solver/language/model/problem/Variable.java | 2 +- .../language/model/problem/VariableOrNode.java | 16 ++ .../language/model/problem/impl/ArgumentImpl.java | 58 +++---- .../model/problem/impl/ClassDeclarationImpl.java | 9 +- .../model/problem/impl/EnumDeclarationImpl.java | 150 ++++++++++++++++++ .../language/model/problem/impl/NodeImpl.java | 2 +- .../language/model/problem/impl/ParameterImpl.java | 19 ++- .../model/problem/impl/ProblemFactoryImpl.java | 12 ++ .../model/problem/impl/ProblemPackageImpl.java | 82 ++++++++-- .../problem/impl/ReferenceDeclarationImpl.java | 19 ++- .../language/model/problem/impl/VariableImpl.java | 2 +- .../model/problem/impl/VariableOrNodeImpl.java | 37 +++++ .../model/problem/util/ProblemAdapterFactory.java | 38 +++++ .../language/model/problem/util/ProblemSwitch.java | 60 +++++++ 22 files changed, 660 insertions(+), 101 deletions(-) create mode 100644 org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/EnumDeclaration.java create mode 100644 org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/VariableOrNode.java create mode 100644 org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/EnumDeclarationImpl.java create mode 100644 org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/VariableOrNodeImpl.java (limited to 'org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem') diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Argument.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Argument.java index 5442f8e0..4857b38a 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Argument.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Argument.java @@ -13,7 +13,7 @@ import org.eclipse.emf.ecore.EObject; * The following features are supported: *

* * @@ -23,26 +23,26 @@ import org.eclipse.emf.ecore.EObject; */ public interface Argument extends EObject { /** - * Returns the value of the 'Variable' reference. + * Returns the value of the 'Variable Or Node' reference. * * - * @return the value of the 'Variable' reference. - * @see #setVariable(Variable) - * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getArgument_Variable() + * @return the value of the 'Variable Or Node' reference. + * @see #setVariableOrNode(VariableOrNode) + * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getArgument_VariableOrNode() * @model * @generated */ - Variable getVariable(); + VariableOrNode getVariableOrNode(); /** - * Sets the value of the '{@link org.eclipse.viatra.solver.language.model.problem.Argument#getVariable Variable}' reference. + * Sets the value of the '{@link org.eclipse.viatra.solver.language.model.problem.Argument#getVariableOrNode Variable Or Node}' reference. * * - * @param value the new value of the 'Variable' reference. - * @see #getVariable() + * @param value the new value of the 'Variable Or Node' reference. + * @see #getVariableOrNode() * @generated */ - void setVariable(Variable value); + void setVariableOrNode(VariableOrNode value); /** * Returns the value of the 'Singleton Variable' containment reference. diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ClassDeclaration.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ClassDeclaration.java index 1387575a..d0f471be 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ClassDeclaration.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ClassDeclaration.java @@ -48,7 +48,7 @@ public interface ClassDeclaration extends Relation, Statement { /** * Returns the value of the 'Super Types' reference list. - * The list contents are of type {@link org.eclipse.viatra.solver.language.model.problem.ClassDeclaration}. + * The list contents are of type {@link org.eclipse.viatra.solver.language.model.problem.Relation}. * * * @return the value of the 'Super Types' reference list. @@ -56,7 +56,7 @@ public interface ClassDeclaration extends Relation, Statement { * @model * @generated */ - EList getSuperTypes(); + EList getSuperTypes(); /** * Returns the value of the 'Reference Declarations' containment reference list. diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/EnumDeclaration.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/EnumDeclaration.java new file mode 100644 index 00000000..81f2967d --- /dev/null +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/EnumDeclaration.java @@ -0,0 +1,36 @@ +/** + */ +package org.eclipse.viatra.solver.language.model.problem; + +import org.eclipse.emf.common.util.EList; + +/** + * + * A representation of the model object 'Enum Declaration'. + * + * + *

+ * The following features are supported: + *

+ *
    + *
  • {@link org.eclipse.viatra.solver.language.model.problem.EnumDeclaration#getLiterals Literals}
  • + *
+ * + * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getEnumDeclaration() + * @model + * @generated + */ +public interface EnumDeclaration extends Relation, Statement { + /** + * Returns the value of the 'Literals' containment reference list. + * The list contents are of type {@link org.eclipse.viatra.solver.language.model.problem.Node}. + * + * + * @return the value of the 'Literals' containment reference list. + * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getEnumDeclaration_Literals() + * @model containment="true" + * @generated + */ + EList getLiterals(); + +} // EnumDeclaration diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Node.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Node.java index e6547083..3da08af3 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Node.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Node.java @@ -12,5 +12,5 @@ package org.eclipse.viatra.solver.language.model.problem; * @model * @generated */ -public interface Node extends NamedElement { +public interface Node extends VariableOrNode { } // Node diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Parameter.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Parameter.java index 5ed8ac3c..7bedca1b 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Parameter.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Parameter.java @@ -24,12 +24,12 @@ public interface Parameter extends Variable { * * * @return the value of the 'Parameter Type' reference. - * @see #setParameterType(ClassDeclaration) + * @see #setParameterType(Relation) * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getParameter_ParameterType() * @model * @generated */ - ClassDeclaration getParameterType(); + Relation getParameterType(); /** * Sets the value of the '{@link org.eclipse.viatra.solver.language.model.problem.Parameter#getParameterType Parameter Type}' reference. @@ -39,6 +39,6 @@ public interface Parameter extends Variable { * @see #getParameterType() * @generated */ - void setParameterType(ClassDeclaration value); + void setParameterType(Relation value); } // Parameter diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ProblemFactory.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ProblemFactory.java index bdfc326b..e4332d19 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ProblemFactory.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ProblemFactory.java @@ -174,6 +174,15 @@ public interface ProblemFactory extends EFactory { */ Argument createArgument(); + /** + * Returns a new object of class 'Enum Declaration'. + * + * + * @return a new object of class 'Enum Declaration'. + * @generated + */ + EnumDeclaration createEnumDeclaration(); + /** * Returns the package supported by this factory. * diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ProblemPackage.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ProblemPackage.java index 1358eaeb..ec96501d 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ProblemPackage.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ProblemPackage.java @@ -396,6 +396,43 @@ public interface ProblemPackage extends EPackage { */ int PREDICATE_DEFINITION_OPERATION_COUNT = RELATION_OPERATION_COUNT + 0; + /** + * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.VariableOrNodeImpl Variable Or Node}' class. + * + * + * @see org.eclipse.viatra.solver.language.model.problem.impl.VariableOrNodeImpl + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getVariableOrNode() + * @generated + */ + int VARIABLE_OR_NODE = 25; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int VARIABLE_OR_NODE__NAME = NAMED_ELEMENT__NAME; + + /** + * The number of structural features of the 'Variable Or Node' class. + * + * + * @generated + * @ordered + */ + int VARIABLE_OR_NODE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Variable Or Node' class. + * + * + * @generated + * @ordered + */ + int VARIABLE_OR_NODE_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0; + /** * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.VariableImpl Variable}' class. * @@ -413,7 +450,7 @@ public interface ProblemPackage extends EPackage { * @generated * @ordered */ - int VARIABLE__NAME = NAMED_ELEMENT__NAME; + int VARIABLE__NAME = VARIABLE_OR_NODE__NAME; /** * The number of structural features of the 'Variable' class. @@ -422,7 +459,7 @@ public interface ProblemPackage extends EPackage { * @generated * @ordered */ - int VARIABLE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 0; + int VARIABLE_FEATURE_COUNT = VARIABLE_OR_NODE_FEATURE_COUNT + 0; /** * The number of operations of the 'Variable' class. @@ -431,7 +468,7 @@ public interface ProblemPackage extends EPackage { * @generated * @ordered */ - int VARIABLE_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0; + int VARIABLE_OPERATION_COUNT = VARIABLE_OR_NODE_OPERATION_COUNT + 0; /** * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.ParameterImpl Parameter}' class. @@ -828,7 +865,7 @@ public interface ProblemPackage extends EPackage { * @generated * @ordered */ - int NODE__NAME = NAMED_ELEMENT__NAME; + int NODE__NAME = VARIABLE_OR_NODE__NAME; /** * The number of structural features of the 'Node' class. @@ -837,7 +874,7 @@ public interface ProblemPackage extends EPackage { * @generated * @ordered */ - int NODE_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 0; + int NODE_FEATURE_COUNT = VARIABLE_OR_NODE_FEATURE_COUNT + 0; /** * The number of operations of the 'Node' class. @@ -846,7 +883,7 @@ public interface ProblemPackage extends EPackage { * @generated * @ordered */ - int NODE_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0; + int NODE_OPERATION_COUNT = VARIABLE_OR_NODE_OPERATION_COUNT + 0; /** * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.ScopeDeclarationImpl Scope Declaration}' class. @@ -1090,13 +1127,13 @@ public interface ProblemPackage extends EPackage { int ARGUMENT = 23; /** - * The feature id for the 'Variable' reference. + * The feature id for the 'Variable Or Node' reference. * * * @generated * @ordered */ - int ARGUMENT__VARIABLE = 0; + int ARGUMENT__VARIABLE_OR_NODE = 0; /** * The feature id for the 'Singleton Variable' containment reference. @@ -1125,6 +1162,52 @@ public interface ProblemPackage extends EPackage { */ int ARGUMENT_OPERATION_COUNT = 0; + /** + * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.EnumDeclarationImpl Enum Declaration}' class. + * + * + * @see org.eclipse.viatra.solver.language.model.problem.impl.EnumDeclarationImpl + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getEnumDeclaration() + * @generated + */ + int ENUM_DECLARATION = 24; + + /** + * The feature id for the 'Name' attribute. + * + * + * @generated + * @ordered + */ + int ENUM_DECLARATION__NAME = RELATION__NAME; + + /** + * The feature id for the 'Literals' containment reference list. + * + * + * @generated + * @ordered + */ + int ENUM_DECLARATION__LITERALS = RELATION_FEATURE_COUNT + 0; + + /** + * The number of structural features of the 'Enum Declaration' class. + * + * + * @generated + * @ordered + */ + int ENUM_DECLARATION_FEATURE_COUNT = RELATION_FEATURE_COUNT + 1; + + /** + * The number of operations of the 'Enum Declaration' class. + * + * + * @generated + * @ordered + */ + int ENUM_DECLARATION_OPERATION_COUNT = RELATION_OPERATION_COUNT + 0; + /** * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.LogicValue Logic Value}' enum. * @@ -1133,7 +1216,7 @@ public interface ProblemPackage extends EPackage { * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getLogicValue() * @generated */ - int LOGIC_VALUE = 24; + int LOGIC_VALUE = 26; /** * Returns the meta object for class '{@link org.eclipse.viatra.solver.language.model.problem.Problem Problem}'. @@ -1717,15 +1800,15 @@ public interface ProblemPackage extends EPackage { EClass getArgument(); /** - * Returns the meta object for the reference '{@link org.eclipse.viatra.solver.language.model.problem.Argument#getVariable Variable}'. + * Returns the meta object for the reference '{@link org.eclipse.viatra.solver.language.model.problem.Argument#getVariableOrNode Variable Or Node}'. * * - * @return the meta object for the reference 'Variable'. - * @see org.eclipse.viatra.solver.language.model.problem.Argument#getVariable() + * @return the meta object for the reference 'Variable Or Node'. + * @see org.eclipse.viatra.solver.language.model.problem.Argument#getVariableOrNode() * @see #getArgument() * @generated */ - EReference getArgument_Variable(); + EReference getArgument_VariableOrNode(); /** * Returns the meta object for the containment reference '{@link org.eclipse.viatra.solver.language.model.problem.Argument#getSingletonVariable Singleton Variable}'. @@ -1738,6 +1821,37 @@ public interface ProblemPackage extends EPackage { */ EReference getArgument_SingletonVariable(); + /** + * Returns the meta object for class '{@link org.eclipse.viatra.solver.language.model.problem.EnumDeclaration Enum Declaration}'. + * + * + * @return the meta object for class 'Enum Declaration'. + * @see org.eclipse.viatra.solver.language.model.problem.EnumDeclaration + * @generated + */ + EClass getEnumDeclaration(); + + /** + * Returns the meta object for the containment reference list '{@link org.eclipse.viatra.solver.language.model.problem.EnumDeclaration#getLiterals Literals}'. + * + * + * @return the meta object for the containment reference list 'Literals'. + * @see org.eclipse.viatra.solver.language.model.problem.EnumDeclaration#getLiterals() + * @see #getEnumDeclaration() + * @generated + */ + EReference getEnumDeclaration_Literals(); + + /** + * Returns the meta object for class '{@link org.eclipse.viatra.solver.language.model.problem.VariableOrNode Variable Or Node}'. + * + * + * @return the meta object for class 'Variable Or Node'. + * @see org.eclipse.viatra.solver.language.model.problem.VariableOrNode + * @generated + */ + EClass getVariableOrNode(); + /** * Returns the meta object for enum '{@link org.eclipse.viatra.solver.language.model.problem.LogicValue Logic Value}'. * @@ -2260,12 +2374,12 @@ public interface ProblemPackage extends EPackage { EClass ARGUMENT = eINSTANCE.getArgument(); /** - * The meta object literal for the 'Variable' reference feature. + * The meta object literal for the 'Variable Or Node' reference feature. * * * @generated */ - EReference ARGUMENT__VARIABLE = eINSTANCE.getArgument_Variable(); + EReference ARGUMENT__VARIABLE_OR_NODE = eINSTANCE.getArgument_VariableOrNode(); /** * The meta object literal for the 'Singleton Variable' containment reference feature. @@ -2275,6 +2389,34 @@ public interface ProblemPackage extends EPackage { */ EReference ARGUMENT__SINGLETON_VARIABLE = eINSTANCE.getArgument_SingletonVariable(); + /** + * The meta object literal for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.EnumDeclarationImpl Enum Declaration}' class. + * + * + * @see org.eclipse.viatra.solver.language.model.problem.impl.EnumDeclarationImpl + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getEnumDeclaration() + * @generated + */ + EClass ENUM_DECLARATION = eINSTANCE.getEnumDeclaration(); + + /** + * The meta object literal for the 'Literals' containment reference list feature. + * + * + * @generated + */ + EReference ENUM_DECLARATION__LITERALS = eINSTANCE.getEnumDeclaration_Literals(); + + /** + * The meta object literal for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.VariableOrNodeImpl Variable Or Node}' class. + * + * + * @see org.eclipse.viatra.solver.language.model.problem.impl.VariableOrNodeImpl + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getVariableOrNode() + * @generated + */ + EClass VARIABLE_OR_NODE = eINSTANCE.getVariableOrNode(); + /** * The meta object literal for the '{@link org.eclipse.viatra.solver.language.model.problem.LogicValue Logic Value}' enum. * diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ReferenceDeclaration.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ReferenceDeclaration.java index f07ee7d1..38650d66 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ReferenceDeclaration.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/ReferenceDeclaration.java @@ -27,12 +27,12 @@ public interface ReferenceDeclaration extends Relation { * * * @return the value of the 'Reference Type' reference. - * @see #setReferenceType(ClassDeclaration) + * @see #setReferenceType(Relation) * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getReferenceDeclaration_ReferenceType() * @model * @generated */ - ClassDeclaration getReferenceType(); + Relation getReferenceType(); /** * Sets the value of the '{@link org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration#getReferenceType Reference Type}' reference. @@ -42,7 +42,7 @@ public interface ReferenceDeclaration extends Relation { * @see #getReferenceType() * @generated */ - void setReferenceType(ClassDeclaration value); + void setReferenceType(Relation value); /** * Returns the value of the 'Opposite' reference. diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Variable.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Variable.java index 26637a35..cba5740c 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Variable.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/Variable.java @@ -12,5 +12,5 @@ package org.eclipse.viatra.solver.language.model.problem; * @model abstract="true" * @generated */ -public interface Variable extends NamedElement { +public interface Variable extends VariableOrNode { } // Variable diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/VariableOrNode.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/VariableOrNode.java new file mode 100644 index 00000000..65c315e2 --- /dev/null +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/VariableOrNode.java @@ -0,0 +1,16 @@ +/** + */ +package org.eclipse.viatra.solver.language.model.problem; + +/** + * + * A representation of the model object 'Variable Or Node'. + * + * + * + * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getVariableOrNode() + * @model abstract="true" + * @generated + */ +public interface VariableOrNode extends NamedElement { +} // VariableOrNode diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ArgumentImpl.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ArgumentImpl.java index 9f6bc7ae..f7d045ca 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ArgumentImpl.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ArgumentImpl.java @@ -14,7 +14,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; import org.eclipse.viatra.solver.language.model.problem.Argument; import org.eclipse.viatra.solver.language.model.problem.ImplicitVariable; import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; -import org.eclipse.viatra.solver.language.model.problem.Variable; +import org.eclipse.viatra.solver.language.model.problem.VariableOrNode; /** * @@ -24,7 +24,7 @@ import org.eclipse.viatra.solver.language.model.problem.Variable; * The following features are implemented: *

*
    - *
  • {@link org.eclipse.viatra.solver.language.model.problem.impl.ArgumentImpl#getVariable Variable}
  • + *
  • {@link org.eclipse.viatra.solver.language.model.problem.impl.ArgumentImpl#getVariableOrNode Variable Or Node}
  • *
  • {@link org.eclipse.viatra.solver.language.model.problem.impl.ArgumentImpl#getSingletonVariable Singleton Variable}
  • *
* @@ -32,14 +32,14 @@ import org.eclipse.viatra.solver.language.model.problem.Variable; */ public class ArgumentImpl extends MinimalEObjectImpl.Container implements Argument { /** - * The cached value of the '{@link #getVariable() Variable}' reference. + * The cached value of the '{@link #getVariableOrNode() Variable Or Node}' reference. * * - * @see #getVariable() + * @see #getVariableOrNode() * @generated * @ordered */ - protected Variable variable; + protected VariableOrNode variableOrNode; /** * The cached value of the '{@link #getSingletonVariable() Singleton Variable}' containment reference. @@ -75,17 +75,17 @@ public class ArgumentImpl extends MinimalEObjectImpl.Container implements Argume * * @generated */ - public Variable getVariable() { - if (variable != null && variable.eIsProxy()) { - InternalEObject oldVariable = (InternalEObject) variable; - variable = (Variable) eResolveProxy(oldVariable); - if (variable != oldVariable) { + public VariableOrNode getVariableOrNode() { + if (variableOrNode != null && variableOrNode.eIsProxy()) { + InternalEObject oldVariableOrNode = (InternalEObject) variableOrNode; + variableOrNode = (VariableOrNode) eResolveProxy(oldVariableOrNode); + if (variableOrNode != oldVariableOrNode) { if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProblemPackage.ARGUMENT__VARIABLE, - oldVariable, variable)); + eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProblemPackage.ARGUMENT__VARIABLE_OR_NODE, + oldVariableOrNode, variableOrNode)); } } - return variable; + return variableOrNode; } /** @@ -93,8 +93,8 @@ public class ArgumentImpl extends MinimalEObjectImpl.Container implements Argume * * @generated */ - public Variable basicGetVariable() { - return variable; + public VariableOrNode basicGetVariableOrNode() { + return variableOrNode; } /** @@ -102,12 +102,12 @@ public class ArgumentImpl extends MinimalEObjectImpl.Container implements Argume * * @generated */ - public void setVariable(Variable newVariable) { - Variable oldVariable = variable; - variable = newVariable; + public void setVariableOrNode(VariableOrNode newVariableOrNode) { + VariableOrNode oldVariableOrNode = variableOrNode; + variableOrNode = newVariableOrNode; if (eNotificationRequired()) - eNotify(new ENotificationImpl(this, Notification.SET, ProblemPackage.ARGUMENT__VARIABLE, oldVariable, - variable)); + eNotify(new ENotificationImpl(this, Notification.SET, ProblemPackage.ARGUMENT__VARIABLE_OR_NODE, + oldVariableOrNode, variableOrNode)); } /** @@ -182,10 +182,10 @@ public class ArgumentImpl extends MinimalEObjectImpl.Container implements Argume @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { - case ProblemPackage.ARGUMENT__VARIABLE: + case ProblemPackage.ARGUMENT__VARIABLE_OR_NODE: if (resolve) - return getVariable(); - return basicGetVariable(); + return getVariableOrNode(); + return basicGetVariableOrNode(); case ProblemPackage.ARGUMENT__SINGLETON_VARIABLE: return getSingletonVariable(); } @@ -200,8 +200,8 @@ public class ArgumentImpl extends MinimalEObjectImpl.Container implements Argume @Override public void eSet(int featureID, Object newValue) { switch (featureID) { - case ProblemPackage.ARGUMENT__VARIABLE: - setVariable((Variable) newValue); + case ProblemPackage.ARGUMENT__VARIABLE_OR_NODE: + setVariableOrNode((VariableOrNode) newValue); return; case ProblemPackage.ARGUMENT__SINGLETON_VARIABLE: setSingletonVariable((ImplicitVariable) newValue); @@ -218,8 +218,8 @@ public class ArgumentImpl extends MinimalEObjectImpl.Container implements Argume @Override public void eUnset(int featureID) { switch (featureID) { - case ProblemPackage.ARGUMENT__VARIABLE: - setVariable((Variable) null); + case ProblemPackage.ARGUMENT__VARIABLE_OR_NODE: + setVariableOrNode((VariableOrNode) null); return; case ProblemPackage.ARGUMENT__SINGLETON_VARIABLE: setSingletonVariable((ImplicitVariable) null); @@ -236,8 +236,8 @@ public class ArgumentImpl extends MinimalEObjectImpl.Container implements Argume @Override public boolean eIsSet(int featureID) { switch (featureID) { - case ProblemPackage.ARGUMENT__VARIABLE: - return variable != null; + case ProblemPackage.ARGUMENT__VARIABLE_OR_NODE: + return variableOrNode != null; case ProblemPackage.ARGUMENT__SINGLETON_VARIABLE: return singletonVariable != null; } diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ClassDeclarationImpl.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ClassDeclarationImpl.java index 89de4d01..774a6e33 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ClassDeclarationImpl.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ClassDeclarationImpl.java @@ -22,6 +22,7 @@ import org.eclipse.viatra.solver.language.model.problem.ClassDeclaration; import org.eclipse.viatra.solver.language.model.problem.Node; import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; import org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration; +import org.eclipse.viatra.solver.language.model.problem.Relation; /** * @@ -68,7 +69,7 @@ public class ClassDeclarationImpl extends RelationImpl implements ClassDeclarati * @generated * @ordered */ - protected EList superTypes; + protected EList superTypes; /** * The cached value of the '{@link #getReferenceDeclarations() Reference Declarations}' containment reference list. @@ -136,9 +137,9 @@ public class ClassDeclarationImpl extends RelationImpl implements ClassDeclarati * * @generated */ - public EList getSuperTypes() { + public EList getSuperTypes() { if (superTypes == null) { - superTypes = new EObjectResolvingEList(ClassDeclaration.class, this, + superTypes = new EObjectResolvingEList(Relation.class, this, ProblemPackage.CLASS_DECLARATION__SUPER_TYPES); } return superTypes; @@ -257,7 +258,7 @@ public class ClassDeclarationImpl extends RelationImpl implements ClassDeclarati return; case ProblemPackage.CLASS_DECLARATION__SUPER_TYPES: getSuperTypes().clear(); - getSuperTypes().addAll((Collection) newValue); + getSuperTypes().addAll((Collection) newValue); return; case ProblemPackage.CLASS_DECLARATION__REFERENCE_DECLARATIONS: getReferenceDeclarations().clear(); diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/EnumDeclarationImpl.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/EnumDeclarationImpl.java new file mode 100644 index 00000000..aac00423 --- /dev/null +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/EnumDeclarationImpl.java @@ -0,0 +1,150 @@ +/** + */ +package org.eclipse.viatra.solver.language.model.problem.impl; + +import java.util.Collection; + +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.common.util.EList; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; + +import org.eclipse.viatra.solver.language.model.problem.EnumDeclaration; +import org.eclipse.viatra.solver.language.model.problem.Node; +import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; + +/** + * + * An implementation of the model object 'Enum Declaration'. + * + *

+ * The following features are implemented: + *

+ *
    + *
  • {@link org.eclipse.viatra.solver.language.model.problem.impl.EnumDeclarationImpl#getLiterals Literals}
  • + *
+ * + * @generated + */ +public class EnumDeclarationImpl extends RelationImpl implements EnumDeclaration { + /** + * The cached value of the '{@link #getLiterals() Literals}' containment reference list. + * + * + * @see #getLiterals() + * @generated + * @ordered + */ + protected EList literals; + + /** + * + * + * @generated + */ + protected EnumDeclarationImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return ProblemPackage.Literals.ENUM_DECLARATION; + } + + /** + * + * + * @generated + */ + public EList getLiterals() { + if (literals == null) { + literals = new EObjectContainmentEList(Node.class, this, ProblemPackage.ENUM_DECLARATION__LITERALS); + } + return literals; + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case ProblemPackage.ENUM_DECLARATION__LITERALS: + return ((InternalEList) getLiterals()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case ProblemPackage.ENUM_DECLARATION__LITERALS: + return getLiterals(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case ProblemPackage.ENUM_DECLARATION__LITERALS: + getLiterals().clear(); + getLiterals().addAll((Collection) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case ProblemPackage.ENUM_DECLARATION__LITERALS: + getLiterals().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case ProblemPackage.ENUM_DECLARATION__LITERALS: + return literals != null && !literals.isEmpty(); + } + return super.eIsSet(featureID); + } + +} //EnumDeclarationImpl diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/NodeImpl.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/NodeImpl.java index 23b85a9c..0c08bb1b 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/NodeImpl.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/NodeImpl.java @@ -14,7 +14,7 @@ import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; * * @generated */ -public class NodeImpl extends NamedElementImpl implements Node { +public class NodeImpl extends VariableOrNodeImpl implements Node { /** * * diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ParameterImpl.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ParameterImpl.java index cfbf25b0..06eea3f3 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ParameterImpl.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ParameterImpl.java @@ -8,10 +8,9 @@ import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; - -import org.eclipse.viatra.solver.language.model.problem.ClassDeclaration; import org.eclipse.viatra.solver.language.model.problem.Parameter; import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; +import org.eclipse.viatra.solver.language.model.problem.Relation; /** * @@ -35,7 +34,7 @@ public class ParameterImpl extends VariableImpl implements Parameter { * @generated * @ordered */ - protected ClassDeclaration parameterType; + protected Relation parameterType; /** * @@ -61,10 +60,10 @@ public class ParameterImpl extends VariableImpl implements Parameter { * * @generated */ - public ClassDeclaration getParameterType() { + public Relation getParameterType() { if (parameterType != null && parameterType.eIsProxy()) { InternalEObject oldParameterType = (InternalEObject) parameterType; - parameterType = (ClassDeclaration) eResolveProxy(oldParameterType); + parameterType = (Relation) eResolveProxy(oldParameterType); if (parameterType != oldParameterType) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProblemPackage.PARAMETER__PARAMETER_TYPE, @@ -79,7 +78,7 @@ public class ParameterImpl extends VariableImpl implements Parameter { * * @generated */ - public ClassDeclaration basicGetParameterType() { + public Relation basicGetParameterType() { return parameterType; } @@ -88,8 +87,8 @@ public class ParameterImpl extends VariableImpl implements Parameter { * * @generated */ - public void setParameterType(ClassDeclaration newParameterType) { - ClassDeclaration oldParameterType = parameterType; + public void setParameterType(Relation newParameterType) { + Relation oldParameterType = parameterType; parameterType = newParameterType; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, ProblemPackage.PARAMETER__PARAMETER_TYPE, @@ -121,7 +120,7 @@ public class ParameterImpl extends VariableImpl implements Parameter { public void eSet(int featureID, Object newValue) { switch (featureID) { case ProblemPackage.PARAMETER__PARAMETER_TYPE: - setParameterType((ClassDeclaration) newValue); + setParameterType((Relation) newValue); return; } super.eSet(featureID, newValue); @@ -136,7 +135,7 @@ public class ParameterImpl extends VariableImpl implements Parameter { public void eUnset(int featureID) { switch (featureID) { case ProblemPackage.PARAMETER__PARAMETER_TYPE: - setParameterType((ClassDeclaration) null); + setParameterType((Relation) null); return; } super.eUnset(featureID); diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ProblemFactoryImpl.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ProblemFactoryImpl.java index 3bb50cfe..2f4144b9 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ProblemFactoryImpl.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ProblemFactoryImpl.java @@ -91,6 +91,8 @@ public class ProblemFactoryImpl extends EFactoryImpl implements ProblemFactory { return createUnboundedMultiplicity(); case ProblemPackage.ARGUMENT: return createArgument(); + case ProblemPackage.ENUM_DECLARATION: + return createEnumDeclaration(); default: throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); } @@ -296,6 +298,16 @@ public class ProblemFactoryImpl extends EFactoryImpl implements ProblemFactory { return argument; } + /** + * + * + * @generated + */ + public EnumDeclaration createEnumDeclaration() { + EnumDeclarationImpl enumDeclaration = new EnumDeclarationImpl(); + return enumDeclaration; + } + /** * * diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ProblemPackageImpl.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ProblemPackageImpl.java index f412addc..d10ff2f0 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ProblemPackageImpl.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ProblemPackageImpl.java @@ -15,6 +15,7 @@ import org.eclipse.viatra.solver.language.model.problem.Assertion; import org.eclipse.viatra.solver.language.model.problem.Atom; import org.eclipse.viatra.solver.language.model.problem.ClassDeclaration; import org.eclipse.viatra.solver.language.model.problem.Conjunction; +import org.eclipse.viatra.solver.language.model.problem.EnumDeclaration; import org.eclipse.viatra.solver.language.model.problem.ExactMultiplicity; import org.eclipse.viatra.solver.language.model.problem.ExistentialQuantifier; import org.eclipse.viatra.solver.language.model.problem.ImplicitVariable; @@ -37,6 +38,7 @@ import org.eclipse.viatra.solver.language.model.problem.Statement; import org.eclipse.viatra.solver.language.model.problem.TypeScope; import org.eclipse.viatra.solver.language.model.problem.UnboundedMultiplicity; import org.eclipse.viatra.solver.language.model.problem.Variable; +import org.eclipse.viatra.solver.language.model.problem.VariableOrNode; /** * @@ -213,6 +215,20 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { */ private EClass argumentEClass = null; + /** + * + * + * @generated + */ + private EClass enumDeclarationEClass = null; + + /** + * + * + * @generated + */ + private EClass variableOrNodeEClass = null; + /** * * @@ -784,7 +800,7 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { * * @generated */ - public EReference getArgument_Variable() { + public EReference getArgument_VariableOrNode() { return (EReference) argumentEClass.getEStructuralFeatures().get(0); } @@ -797,6 +813,33 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { return (EReference) argumentEClass.getEStructuralFeatures().get(1); } + /** + * + * + * @generated + */ + public EClass getEnumDeclaration() { + return enumDeclarationEClass; + } + + /** + * + * + * @generated + */ + public EReference getEnumDeclaration_Literals() { + return (EReference) enumDeclarationEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EClass getVariableOrNode() { + return variableOrNodeEClass; + } + /** * * @@ -913,9 +956,14 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { unboundedMultiplicityEClass = createEClass(UNBOUNDED_MULTIPLICITY); argumentEClass = createEClass(ARGUMENT); - createEReference(argumentEClass, ARGUMENT__VARIABLE); + createEReference(argumentEClass, ARGUMENT__VARIABLE_OR_NODE); createEReference(argumentEClass, ARGUMENT__SINGLETON_VARIABLE); + enumDeclarationEClass = createEClass(ENUM_DECLARATION); + createEReference(enumDeclarationEClass, ENUM_DECLARATION__LITERALS); + + variableOrNodeEClass = createEClass(VARIABLE_OR_NODE); + // Create enums logicValueEEnum = createEEnum(LOGIC_VALUE); } @@ -957,18 +1005,21 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { predicateDefinitionEClass.getESuperTypes().add(this.getRelation()); predicateDefinitionEClass.getESuperTypes().add(this.getStatement()); parameterEClass.getESuperTypes().add(this.getVariable()); - variableEClass.getESuperTypes().add(this.getNamedElement()); + variableEClass.getESuperTypes().add(this.getVariableOrNode()); conjunctionEClass.getESuperTypes().add(this.getExistentialQuantifier()); atomEClass.getESuperTypes().add(this.getLiteral()); implicitVariableEClass.getESuperTypes().add(this.getVariable()); negativeLiteralEClass.getESuperTypes().add(this.getExistentialQuantifier()); negativeLiteralEClass.getESuperTypes().add(this.getLiteral()); assertionEClass.getESuperTypes().add(this.getStatement()); - nodeEClass.getESuperTypes().add(this.getNamedElement()); + nodeEClass.getESuperTypes().add(this.getVariableOrNode()); scopeDeclarationEClass.getESuperTypes().add(this.getStatement()); rangeMultiplicityEClass.getESuperTypes().add(this.getMultiplicity()); exactMultiplicityEClass.getESuperTypes().add(this.getMultiplicity()); unboundedMultiplicityEClass.getESuperTypes().add(this.getMultiplicity()); + enumDeclarationEClass.getESuperTypes().add(this.getRelation()); + enumDeclarationEClass.getESuperTypes().add(this.getStatement()); + variableOrNodeEClass.getESuperTypes().add(this.getNamedElement()); // Initialize classes, features, and operations; add parameters initEClass(problemEClass, Problem.class, "Problem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); @@ -986,7 +1037,7 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { initEAttribute(getClassDeclaration_Abstract(), ecorePackage.getEBoolean(), "abstract", null, 0, 1, ClassDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEReference(getClassDeclaration_SuperTypes(), this.getClassDeclaration(), null, "superTypes", null, 0, -1, + initEReference(getClassDeclaration_SuperTypes(), this.getRelation(), null, "superTypes", null, 0, -1, ClassDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getClassDeclaration_ReferenceDeclarations(), this.getReferenceDeclaration(), null, @@ -998,8 +1049,8 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { initEClass(referenceDeclarationEClass, ReferenceDeclaration.class, "ReferenceDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEReference(getReferenceDeclaration_ReferenceType(), this.getClassDeclaration(), null, "referenceType", null, - 0, 1, ReferenceDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, + initEReference(getReferenceDeclaration_ReferenceType(), this.getRelation(), null, "referenceType", null, 0, 1, + ReferenceDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getReferenceDeclaration_Opposite(), this.getReferenceDeclaration(), null, "opposite", null, 0, 1, ReferenceDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, @@ -1030,7 +1081,7 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { initEClass(parameterEClass, Parameter.class, "Parameter", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEReference(getParameter_ParameterType(), this.getClassDeclaration(), null, "parameterType", null, 0, 1, + initEReference(getParameter_ParameterType(), this.getRelation(), null, "parameterType", null, 0, 1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); @@ -1126,13 +1177,22 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { initEClass(argumentEClass, Argument.class, "Argument", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEReference(getArgument_Variable(), this.getVariable(), null, "variable", null, 0, 1, Argument.class, - !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, - IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getArgument_VariableOrNode(), this.getVariableOrNode(), null, "variableOrNode", null, 0, 1, + Argument.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEReference(getArgument_SingletonVariable(), this.getImplicitVariable(), null, "singletonVariable", null, 0, 1, Argument.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEClass(enumDeclarationEClass, EnumDeclaration.class, "EnumDeclaration", !IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + initEReference(getEnumDeclaration_Literals(), this.getNode(), null, "literals", null, 0, -1, + EnumDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(variableOrNodeEClass, VariableOrNode.class, "VariableOrNode", IS_ABSTRACT, !IS_INTERFACE, + IS_GENERATED_INSTANCE_CLASS); + // Initialize enums and add enum literals initEEnum(logicValueEEnum, LogicValue.class, "LogicValue"); addEEnumLiteral(logicValueEEnum, LogicValue.TRUE); diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ReferenceDeclarationImpl.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ReferenceDeclarationImpl.java index 424db23d..8df2715f 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ReferenceDeclarationImpl.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/ReferenceDeclarationImpl.java @@ -9,11 +9,10 @@ import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; - -import org.eclipse.viatra.solver.language.model.problem.ClassDeclaration; import org.eclipse.viatra.solver.language.model.problem.Multiplicity; import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; import org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration; +import org.eclipse.viatra.solver.language.model.problem.Relation; /** * @@ -40,7 +39,7 @@ public class ReferenceDeclarationImpl extends RelationImpl implements ReferenceD * @generated * @ordered */ - protected ClassDeclaration referenceType; + protected Relation referenceType; /** * The cached value of the '{@link #getOpposite() Opposite}' reference. @@ -106,10 +105,10 @@ public class ReferenceDeclarationImpl extends RelationImpl implements ReferenceD * * @generated */ - public ClassDeclaration getReferenceType() { + public Relation getReferenceType() { if (referenceType != null && referenceType.eIsProxy()) { InternalEObject oldReferenceType = (InternalEObject) referenceType; - referenceType = (ClassDeclaration) eResolveProxy(oldReferenceType); + referenceType = (Relation) eResolveProxy(oldReferenceType); if (referenceType != oldReferenceType) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, @@ -124,7 +123,7 @@ public class ReferenceDeclarationImpl extends RelationImpl implements ReferenceD * * @generated */ - public ClassDeclaration basicGetReferenceType() { + public Relation basicGetReferenceType() { return referenceType; } @@ -133,8 +132,8 @@ public class ReferenceDeclarationImpl extends RelationImpl implements ReferenceD * * @generated */ - public void setReferenceType(ClassDeclaration newReferenceType) { - ClassDeclaration oldReferenceType = referenceType; + public void setReferenceType(Relation newReferenceType) { + Relation oldReferenceType = referenceType; referenceType = newReferenceType; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, ProblemPackage.REFERENCE_DECLARATION__REFERENCE_TYPE, @@ -300,7 +299,7 @@ public class ReferenceDeclarationImpl extends RelationImpl implements ReferenceD public void eSet(int featureID, Object newValue) { switch (featureID) { case ProblemPackage.REFERENCE_DECLARATION__REFERENCE_TYPE: - setReferenceType((ClassDeclaration) newValue); + setReferenceType((Relation) newValue); return; case ProblemPackage.REFERENCE_DECLARATION__OPPOSITE: setOpposite((ReferenceDeclaration) newValue); @@ -324,7 +323,7 @@ public class ReferenceDeclarationImpl extends RelationImpl implements ReferenceD public void eUnset(int featureID) { switch (featureID) { case ProblemPackage.REFERENCE_DECLARATION__REFERENCE_TYPE: - setReferenceType((ClassDeclaration) null); + setReferenceType((Relation) null); return; case ProblemPackage.REFERENCE_DECLARATION__OPPOSITE: setOpposite((ReferenceDeclaration) null); diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/VariableImpl.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/VariableImpl.java index 0a8cde48..645ac39c 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/VariableImpl.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/VariableImpl.java @@ -14,7 +14,7 @@ import org.eclipse.viatra.solver.language.model.problem.Variable; * * @generated */ -public abstract class VariableImpl extends NamedElementImpl implements Variable { +public abstract class VariableImpl extends VariableOrNodeImpl implements Variable { /** * * diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/VariableOrNodeImpl.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/VariableOrNodeImpl.java new file mode 100644 index 00000000..4964a019 --- /dev/null +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/impl/VariableOrNodeImpl.java @@ -0,0 +1,37 @@ +/** + */ +package org.eclipse.viatra.solver.language.model.problem.impl; + +import org.eclipse.emf.ecore.EClass; + +import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; +import org.eclipse.viatra.solver.language.model.problem.VariableOrNode; + +/** + * + * An implementation of the model object 'Variable Or Node'. + * + * + * @generated + */ +public abstract class VariableOrNodeImpl extends NamedElementImpl implements VariableOrNode { + /** + * + * + * @generated + */ + protected VariableOrNodeImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return ProblemPackage.Literals.VARIABLE_OR_NODE; + } + +} //VariableOrNodeImpl diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/util/ProblemAdapterFactory.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/util/ProblemAdapterFactory.java index c41a4034..3fc3ca75 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/util/ProblemAdapterFactory.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/util/ProblemAdapterFactory.java @@ -186,6 +186,16 @@ public class ProblemAdapterFactory extends AdapterFactoryImpl { return createArgumentAdapter(); } + @Override + public Adapter caseEnumDeclaration(EnumDeclaration object) { + return createEnumDeclarationAdapter(); + } + + @Override + public Adapter caseVariableOrNode(VariableOrNode object) { + return createVariableOrNodeAdapter(); + } + @Override public Adapter defaultCase(EObject object) { return createEObjectAdapter(); @@ -541,6 +551,34 @@ public class ProblemAdapterFactory extends AdapterFactoryImpl { return null; } + /** + * Creates a new adapter for an object of class '{@link org.eclipse.viatra.solver.language.model.problem.EnumDeclaration Enum Declaration}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see org.eclipse.viatra.solver.language.model.problem.EnumDeclaration + * @generated + */ + public Adapter createEnumDeclarationAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.viatra.solver.language.model.problem.VariableOrNode Variable Or Node}'. + * + * This default implementation returns null so that we can easily ignore cases; + * it's useful to ignore a case when inheritance will catch all the cases anyway. + * + * @return the new adapter. + * @see org.eclipse.viatra.solver.language.model.problem.VariableOrNode + * @generated + */ + public Adapter createVariableOrNodeAdapter() { + return null; + } + /** * Creates a new adapter for the default case. * diff --git a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/util/ProblemSwitch.java b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/util/ProblemSwitch.java index 361b663c..b74718b5 100644 --- a/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/util/ProblemSwitch.java +++ b/org.eclipse.viatra.solver.language.parent/org.eclipse.viatra.solver.language.model/src/main/emf-gen/org/eclipse/viatra/solver/language/model/problem/util/ProblemSwitch.java @@ -133,6 +133,8 @@ public class ProblemSwitch extends Switch { T result = caseParameter(parameter); if (result == null) result = caseVariable(parameter); + if (result == null) + result = caseVariableOrNode(parameter); if (result == null) result = caseNamedElement(parameter); if (result == null) @@ -142,6 +144,8 @@ public class ProblemSwitch extends Switch { case ProblemPackage.VARIABLE: { Variable variable = (Variable) theEObject; T result = caseVariable(variable); + if (result == null) + result = caseVariableOrNode(variable); if (result == null) result = caseNamedElement(variable); if (result == null) @@ -178,6 +182,8 @@ public class ProblemSwitch extends Switch { T result = caseImplicitVariable(implicitVariable); if (result == null) result = caseVariable(implicitVariable); + if (result == null) + result = caseVariableOrNode(implicitVariable); if (result == null) result = caseNamedElement(implicitVariable); if (result == null) @@ -214,6 +220,8 @@ public class ProblemSwitch extends Switch { case ProblemPackage.NODE: { Node node = (Node) theEObject; T result = caseNode(node); + if (result == null) + result = caseVariableOrNode(node); if (result == null) result = caseNamedElement(node); if (result == null) @@ -284,6 +292,28 @@ public class ProblemSwitch extends Switch { result = defaultCase(theEObject); return result; } + case ProblemPackage.ENUM_DECLARATION: { + EnumDeclaration enumDeclaration = (EnumDeclaration) theEObject; + T result = caseEnumDeclaration(enumDeclaration); + if (result == null) + result = caseRelation(enumDeclaration); + if (result == null) + result = caseStatement(enumDeclaration); + if (result == null) + result = caseNamedElement(enumDeclaration); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case ProblemPackage.VARIABLE_OR_NODE: { + VariableOrNode variableOrNode = (VariableOrNode) theEObject; + T result = caseVariableOrNode(variableOrNode); + if (result == null) + result = caseNamedElement(variableOrNode); + if (result == null) + result = defaultCase(theEObject); + return result; + } default: return defaultCase(theEObject); } @@ -649,6 +679,36 @@ public class ProblemSwitch extends Switch { return null; } + /** + * Returns the result of interpreting the object as an instance of 'Enum Declaration'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Enum Declaration'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseEnumDeclaration(EnumDeclaration object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Variable Or Node'. + * + * This implementation returns null; + * returning a non-null result will terminate the switch. + * + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of 'Variable Or Node'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseVariableOrNode(VariableOrNode object) { + return null; + } + /** * Returns the result of interpreting the object as an instance of 'EObject'. * -- cgit v1.2.3-70-g09d2