From e92ebe4a61a106ff9c0e8f5bbbc3632f1dc60009 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Sat, 26 Jun 2021 21:43:55 +0200 Subject: FIx scoping, extend grammar --- .../solver/language/model/problem/Argument.java | 69 ++++++ .../viatra/solver/language/model/problem/Atom.java | 12 +- .../language/model/problem/ClassDeclaration.java | 23 ++ .../solver/language/model/problem/Problem.java | 4 +- .../language/model/problem/ProblemFactory.java | 18 ++ .../language/model/problem/ProblemPackage.java | 251 ++++++++++++++++++--- .../model/problem/UnboundedMultiplicity.java | 16 ++ .../language/model/problem/impl/ArgumentImpl.java | 247 ++++++++++++++++++++ .../language/model/problem/impl/AtomImpl.java | 65 ++++-- .../model/problem/impl/ClassDeclarationImpl.java | 74 ++++++ .../model/problem/impl/ConjunctionImpl.java | 1 + .../model/problem/impl/NegativeLiteralImpl.java | 1 + .../model/problem/impl/ProblemFactoryImpl.java | 24 ++ .../language/model/problem/impl/ProblemImpl.java | 5 +- .../model/problem/impl/ProblemPackageImpl.java | 97 +++++++- .../problem/impl/UnboundedMultiplicityImpl.java | 37 +++ .../model/problem/util/ProblemAdapterFactory.java | 38 ++++ .../language/model/problem/util/ProblemSwitch.java | 48 ++++ 18 files changed, 956 insertions(+), 74 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/Argument.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/UnboundedMultiplicity.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/ArgumentImpl.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/UnboundedMultiplicityImpl.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 new file mode 100644 index 00000000..5442f8e0 --- /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/Argument.java @@ -0,0 +1,69 @@ +/** + */ +package org.eclipse.viatra.solver.language.model.problem; + +import org.eclipse.emf.ecore.EObject; + +/** + * + * A representation of the model object 'Argument'. + * + * + *

+ * The following features are supported: + *

+ * + * + * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getArgument() + * @model + * @generated + */ +public interface Argument extends EObject { + /** + * Returns the value of the 'Variable' reference. + * + * + * @return the value of the 'Variable' reference. + * @see #setVariable(Variable) + * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getArgument_Variable() + * @model + * @generated + */ + Variable getVariable(); + + /** + * Sets the value of the '{@link org.eclipse.viatra.solver.language.model.problem.Argument#getVariable Variable}' reference. + * + * + * @param value the new value of the 'Variable' reference. + * @see #getVariable() + * @generated + */ + void setVariable(Variable value); + + /** + * Returns the value of the 'Singleton Variable' containment reference. + * + * + * @return the value of the 'Singleton Variable' containment reference. + * @see #setSingletonVariable(ImplicitVariable) + * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getArgument_SingletonVariable() + * @model containment="true" + * @generated + */ + ImplicitVariable getSingletonVariable(); + + /** + * Sets the value of the '{@link org.eclipse.viatra.solver.language.model.problem.Argument#getSingletonVariable Singleton Variable}' containment reference. + * + * + * @param value the new value of the 'Singleton Variable' containment reference. + * @see #getSingletonVariable() + * @generated + */ + void setSingletonVariable(ImplicitVariable value); + +} // Argument 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/Atom.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/Atom.java index bee08d8d..d1b4d3fe 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/Atom.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/Atom.java @@ -14,8 +14,8 @@ import org.eclipse.emf.common.util.EList; *

* * * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getAtom() @@ -46,16 +46,16 @@ public interface Atom extends Literal { void setRelation(Relation value); /** - * Returns the value of the 'Arguments' reference list. - * The list contents are of type {@link org.eclipse.viatra.solver.language.model.problem.Variable}. + * Returns the value of the 'Arguments' containment reference list. + * The list contents are of type {@link org.eclipse.viatra.solver.language.model.problem.Argument}. * * - * @return the value of the 'Arguments' reference list. + * @return the value of the 'Arguments' containment reference list. * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getAtom_Arguments() - * @model + * @model containment="true" * @generated */ - EList getArguments(); + EList getArguments(); /** * Returns the value of the 'Transitive Closure' attribute. 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 7212d006..1387575a 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 @@ -16,6 +16,7 @@ import org.eclipse.emf.common.util.EList; *
  • {@link org.eclipse.viatra.solver.language.model.problem.ClassDeclaration#isAbstract Abstract}
  • *
  • {@link org.eclipse.viatra.solver.language.model.problem.ClassDeclaration#getSuperTypes Super Types}
  • *
  • {@link org.eclipse.viatra.solver.language.model.problem.ClassDeclaration#getReferenceDeclarations Reference Declarations}
  • + *
  • {@link org.eclipse.viatra.solver.language.model.problem.ClassDeclaration#getNewNode New Node}
  • * * * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getClassDeclaration() @@ -69,4 +70,26 @@ public interface ClassDeclaration extends Relation, Statement { */ EList getReferenceDeclarations(); + /** + * Returns the value of the 'New Node' containment reference. + * + * + * @return the value of the 'New Node' containment reference. + * @see #setNewNode(Node) + * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getClassDeclaration_NewNode() + * @model containment="true" + * @generated + */ + Node getNewNode(); + + /** + * Sets the value of the '{@link org.eclipse.viatra.solver.language.model.problem.ClassDeclaration#getNewNode New Node}' containment reference. + * + * + * @param value the new value of the 'New Node' containment reference. + * @see #getNewNode() + * @generated + */ + void setNewNode(Node value); + } // ClassDeclaration 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/Problem.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/Problem.java index 3342767d..7e19bd22 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/Problem.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/Problem.java @@ -4,8 +4,6 @@ package org.eclipse.viatra.solver.language.model.problem; import org.eclipse.emf.common.util.EList; -import org.eclipse.emf.ecore.EObject; - /** * * A representation of the model object 'Problem'. @@ -23,7 +21,7 @@ import org.eclipse.emf.ecore.EObject; * @model * @generated */ -public interface Problem extends EObject { +public interface Problem extends NamedElement { /** * Returns the value of the 'Nodes' containment reference list. * The list contents are of type {@link org.eclipse.viatra.solver.language.model.problem.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/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 301f7cce..bdfc326b 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 @@ -156,6 +156,24 @@ public interface ProblemFactory extends EFactory { */ ExactMultiplicity createExactMultiplicity(); + /** + * Returns a new object of class 'Unbounded Multiplicity'. + * + * + * @return a new object of class 'Unbounded Multiplicity'. + * @generated + */ + UnboundedMultiplicity createUnboundedMultiplicity(); + + /** + * Returns a new object of class 'Argument'. + * + * + * @return a new object of class 'Argument'. + * @generated + */ + Argument createArgument(); + /** * 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 59906b1f..1358eaeb 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 @@ -58,87 +58,96 @@ public interface ProblemPackage extends EPackage { ProblemPackage eINSTANCE = org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl.init(); /** - * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.ProblemImpl Problem}' class. + * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.NamedElementImpl Named Element}' class. * * - * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemImpl - * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getProblem() + * @see org.eclipse.viatra.solver.language.model.problem.impl.NamedElementImpl + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getNamedElement() * @generated */ - int PROBLEM = 0; + int NAMED_ELEMENT = 4; /** - * The feature id for the 'Nodes' containment reference list. + * The feature id for the 'Name' attribute. * * * @generated * @ordered */ - int PROBLEM__NODES = 0; + int NAMED_ELEMENT__NAME = 0; /** - * The feature id for the 'Statements' containment reference list. + * The number of structural features of the 'Named Element' class. * * * @generated * @ordered */ - int PROBLEM__STATEMENTS = 1; + int NAMED_ELEMENT_FEATURE_COUNT = 1; /** - * The number of structural features of the 'Problem' class. + * The number of operations of the 'Named Element' class. * * * @generated * @ordered */ - int PROBLEM_FEATURE_COUNT = 2; + int NAMED_ELEMENT_OPERATION_COUNT = 0; /** - * The number of operations of the 'Problem' class. + * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.ProblemImpl Problem}' class. + * + * + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemImpl + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getProblem() + * @generated + */ + int PROBLEM = 0; + + /** + * The feature id for the 'Name' attribute. * * * @generated * @ordered */ - int PROBLEM_OPERATION_COUNT = 0; + int PROBLEM__NAME = NAMED_ELEMENT__NAME; /** - * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.NamedElementImpl Named Element}' class. + * The feature id for the 'Nodes' containment reference list. * * - * @see org.eclipse.viatra.solver.language.model.problem.impl.NamedElementImpl - * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getNamedElement() * @generated + * @ordered */ - int NAMED_ELEMENT = 4; + int PROBLEM__NODES = NAMED_ELEMENT_FEATURE_COUNT + 0; /** - * The feature id for the 'Name' attribute. + * The feature id for the 'Statements' containment reference list. * * * @generated * @ordered */ - int NAMED_ELEMENT__NAME = 0; + int PROBLEM__STATEMENTS = NAMED_ELEMENT_FEATURE_COUNT + 1; /** - * The number of structural features of the 'Named Element' class. + * The number of structural features of the 'Problem' class. * * * @generated * @ordered */ - int NAMED_ELEMENT_FEATURE_COUNT = 1; + int PROBLEM_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2; /** - * The number of operations of the 'Named Element' class. + * The number of operations of the 'Problem' class. * * * @generated * @ordered */ - int NAMED_ELEMENT_OPERATION_COUNT = 0; + int PROBLEM_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0; /** * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.RelationImpl Relation}' class. @@ -223,6 +232,15 @@ public interface ProblemPackage extends EPackage { */ int CLASS_DECLARATION__REFERENCE_DECLARATIONS = RELATION_FEATURE_COUNT + 2; + /** + * The feature id for the 'New Node' containment reference. + * + * + * @generated + * @ordered + */ + int CLASS_DECLARATION__NEW_NODE = RELATION_FEATURE_COUNT + 3; + /** * The number of structural features of the 'Class Declaration' class. * @@ -230,7 +248,7 @@ public interface ProblemPackage extends EPackage { * @generated * @ordered */ - int CLASS_DECLARATION_FEATURE_COUNT = RELATION_FEATURE_COUNT + 3; + int CLASS_DECLARATION_FEATURE_COUNT = RELATION_FEATURE_COUNT + 4; /** * The number of operations of the 'Class Declaration' class. @@ -592,22 +610,22 @@ public interface ProblemPackage extends EPackage { int ATOM__RELATION = LITERAL_FEATURE_COUNT + 0; /** - * The feature id for the 'Arguments' reference list. + * The feature id for the 'Transitive Closure' attribute. * * * @generated * @ordered */ - int ATOM__ARGUMENTS = LITERAL_FEATURE_COUNT + 1; + int ATOM__TRANSITIVE_CLOSURE = LITERAL_FEATURE_COUNT + 1; /** - * The feature id for the 'Transitive Closure' attribute. + * The feature id for the 'Arguments' containment reference list. * * * @generated * @ordered */ - int ATOM__TRANSITIVE_CLOSURE = LITERAL_FEATURE_COUNT + 2; + int ATOM__ARGUMENTS = LITERAL_FEATURE_COUNT + 2; /** * The number of structural features of the 'Atom' class. @@ -1033,6 +1051,80 @@ public interface ProblemPackage extends EPackage { */ int EXACT_MULTIPLICITY_OPERATION_COUNT = MULTIPLICITY_OPERATION_COUNT + 0; + /** + * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.UnboundedMultiplicityImpl Unbounded Multiplicity}' class. + * + * + * @see org.eclipse.viatra.solver.language.model.problem.impl.UnboundedMultiplicityImpl + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getUnboundedMultiplicity() + * @generated + */ + int UNBOUNDED_MULTIPLICITY = 22; + + /** + * The number of structural features of the 'Unbounded Multiplicity' class. + * + * + * @generated + * @ordered + */ + int UNBOUNDED_MULTIPLICITY_FEATURE_COUNT = MULTIPLICITY_FEATURE_COUNT + 0; + + /** + * The number of operations of the 'Unbounded Multiplicity' class. + * + * + * @generated + * @ordered + */ + int UNBOUNDED_MULTIPLICITY_OPERATION_COUNT = MULTIPLICITY_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.ArgumentImpl Argument}' class. + * + * + * @see org.eclipse.viatra.solver.language.model.problem.impl.ArgumentImpl + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getArgument() + * @generated + */ + int ARGUMENT = 23; + + /** + * The feature id for the 'Variable' reference. + * + * + * @generated + * @ordered + */ + int ARGUMENT__VARIABLE = 0; + + /** + * The feature id for the 'Singleton Variable' containment reference. + * + * + * @generated + * @ordered + */ + int ARGUMENT__SINGLETON_VARIABLE = 1; + + /** + * The number of structural features of the 'Argument' class. + * + * + * @generated + * @ordered + */ + int ARGUMENT_FEATURE_COUNT = 2; + + /** + * The number of operations of the 'Argument' class. + * + * + * @generated + * @ordered + */ + int ARGUMENT_OPERATION_COUNT = 0; + /** * The meta object id for the '{@link org.eclipse.viatra.solver.language.model.problem.LogicValue Logic Value}' enum. * @@ -1041,7 +1133,7 @@ public interface ProblemPackage extends EPackage { * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getLogicValue() * @generated */ - int LOGIC_VALUE = 22; + int LOGIC_VALUE = 24; /** * Returns the meta object for class '{@link org.eclipse.viatra.solver.language.model.problem.Problem Problem}'. @@ -1128,6 +1220,17 @@ public interface ProblemPackage extends EPackage { */ EReference getClassDeclaration_ReferenceDeclarations(); + /** + * Returns the meta object for the containment reference '{@link org.eclipse.viatra.solver.language.model.problem.ClassDeclaration#getNewNode New Node}'. + * + * + * @return the meta object for the containment reference 'New Node'. + * @see org.eclipse.viatra.solver.language.model.problem.ClassDeclaration#getNewNode() + * @see #getClassDeclaration() + * @generated + */ + EReference getClassDeclaration_NewNode(); + /** * Returns the meta object for class '{@link org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration Reference Declaration}'. * @@ -1330,10 +1433,10 @@ public interface ProblemPackage extends EPackage { EReference getAtom_Relation(); /** - * Returns the meta object for the reference list '{@link org.eclipse.viatra.solver.language.model.problem.Atom#getArguments Arguments}'. + * Returns the meta object for the containment reference list '{@link org.eclipse.viatra.solver.language.model.problem.Atom#getArguments Arguments}'. * * - * @return the meta object for the reference list 'Arguments'. + * @return the meta object for the containment reference list 'Arguments'. * @see org.eclipse.viatra.solver.language.model.problem.Atom#getArguments() * @see #getAtom() * @generated @@ -1593,6 +1696,48 @@ public interface ProblemPackage extends EPackage { */ EAttribute getExactMultiplicity_ExactValue(); + /** + * Returns the meta object for class '{@link org.eclipse.viatra.solver.language.model.problem.UnboundedMultiplicity Unbounded Multiplicity}'. + * + * + * @return the meta object for class 'Unbounded Multiplicity'. + * @see org.eclipse.viatra.solver.language.model.problem.UnboundedMultiplicity + * @generated + */ + EClass getUnboundedMultiplicity(); + + /** + * Returns the meta object for class '{@link org.eclipse.viatra.solver.language.model.problem.Argument Argument}'. + * + * + * @return the meta object for class 'Argument'. + * @see org.eclipse.viatra.solver.language.model.problem.Argument + * @generated + */ + EClass getArgument(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.viatra.solver.language.model.problem.Argument#getVariable Variable}'. + * + * + * @return the meta object for the reference 'Variable'. + * @see org.eclipse.viatra.solver.language.model.problem.Argument#getVariable() + * @see #getArgument() + * @generated + */ + EReference getArgument_Variable(); + + /** + * Returns the meta object for the containment reference '{@link org.eclipse.viatra.solver.language.model.problem.Argument#getSingletonVariable Singleton Variable}'. + * + * + * @return the meta object for the containment reference 'Singleton Variable'. + * @see org.eclipse.viatra.solver.language.model.problem.Argument#getSingletonVariable() + * @see #getArgument() + * @generated + */ + EReference getArgument_SingletonVariable(); + /** * Returns the meta object for enum '{@link org.eclipse.viatra.solver.language.model.problem.LogicValue Logic Value}'. * @@ -1696,6 +1841,14 @@ public interface ProblemPackage extends EPackage { */ EReference CLASS_DECLARATION__REFERENCE_DECLARATIONS = eINSTANCE.getClassDeclaration_ReferenceDeclarations(); + /** + * The meta object literal for the 'New Node' containment reference feature. + * + * + * @generated + */ + EReference CLASS_DECLARATION__NEW_NODE = eINSTANCE.getClassDeclaration_NewNode(); + /** * The meta object literal for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.ReferenceDeclarationImpl Reference Declaration}' class. * @@ -1865,7 +2018,7 @@ public interface ProblemPackage extends EPackage { EReference ATOM__RELATION = eINSTANCE.getAtom_Relation(); /** - * The meta object literal for the 'Arguments' reference list feature. + * The meta object literal for the 'Arguments' containment reference list feature. * * * @generated @@ -2086,6 +2239,42 @@ public interface ProblemPackage extends EPackage { */ EAttribute EXACT_MULTIPLICITY__EXACT_VALUE = eINSTANCE.getExactMultiplicity_ExactValue(); + /** + * The meta object literal for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.UnboundedMultiplicityImpl Unbounded Multiplicity}' class. + * + * + * @see org.eclipse.viatra.solver.language.model.problem.impl.UnboundedMultiplicityImpl + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getUnboundedMultiplicity() + * @generated + */ + EClass UNBOUNDED_MULTIPLICITY = eINSTANCE.getUnboundedMultiplicity(); + + /** + * The meta object literal for the '{@link org.eclipse.viatra.solver.language.model.problem.impl.ArgumentImpl Argument}' class. + * + * + * @see org.eclipse.viatra.solver.language.model.problem.impl.ArgumentImpl + * @see org.eclipse.viatra.solver.language.model.problem.impl.ProblemPackageImpl#getArgument() + * @generated + */ + EClass ARGUMENT = eINSTANCE.getArgument(); + + /** + * The meta object literal for the 'Variable' reference feature. + * + * + * @generated + */ + EReference ARGUMENT__VARIABLE = eINSTANCE.getArgument_Variable(); + + /** + * The meta object literal for the 'Singleton Variable' containment reference feature. + * + * + * @generated + */ + EReference ARGUMENT__SINGLETON_VARIABLE = eINSTANCE.getArgument_SingletonVariable(); + /** * 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/UnboundedMultiplicity.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/UnboundedMultiplicity.java new file mode 100644 index 00000000..725311a4 --- /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/UnboundedMultiplicity.java @@ -0,0 +1,16 @@ +/** + */ +package org.eclipse.viatra.solver.language.model.problem; + +/** + * + * A representation of the model object 'Unbounded Multiplicity'. + * + * + * + * @see org.eclipse.viatra.solver.language.model.problem.ProblemPackage#getUnboundedMultiplicity() + * @model + * @generated + */ +public interface UnboundedMultiplicity extends Multiplicity { +} // UnboundedMultiplicity 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 new file mode 100644 index 00000000..9f6bc7ae --- /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/ArgumentImpl.java @@ -0,0 +1,247 @@ +/** + */ +package org.eclipse.viatra.solver.language.model.problem.impl; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +import org.eclipse.emf.ecore.impl.ENotificationImpl; +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; + +/** + * + * An implementation of the model object 'Argument'. + * + *

    + * 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#getSingletonVariable Singleton Variable}
    • + *
    + * + * @generated + */ +public class ArgumentImpl extends MinimalEObjectImpl.Container implements Argument { + /** + * The cached value of the '{@link #getVariable() Variable}' reference. + * + * + * @see #getVariable() + * @generated + * @ordered + */ + protected Variable variable; + + /** + * The cached value of the '{@link #getSingletonVariable() Singleton Variable}' containment reference. + * + * + * @see #getSingletonVariable() + * @generated + * @ordered + */ + protected ImplicitVariable singletonVariable; + + /** + * + * + * @generated + */ + protected ArgumentImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return ProblemPackage.Literals.ARGUMENT; + } + + /** + * + * + * @generated + */ + public Variable getVariable() { + if (variable != null && variable.eIsProxy()) { + InternalEObject oldVariable = (InternalEObject) variable; + variable = (Variable) eResolveProxy(oldVariable); + if (variable != oldVariable) { + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProblemPackage.ARGUMENT__VARIABLE, + oldVariable, variable)); + } + } + return variable; + } + + /** + * + * + * @generated + */ + public Variable basicGetVariable() { + return variable; + } + + /** + * + * + * @generated + */ + public void setVariable(Variable newVariable) { + Variable oldVariable = variable; + variable = newVariable; + if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, ProblemPackage.ARGUMENT__VARIABLE, oldVariable, + variable)); + } + + /** + * + * + * @generated + */ + public ImplicitVariable getSingletonVariable() { + return singletonVariable; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetSingletonVariable(ImplicitVariable newSingletonVariable, NotificationChain msgs) { + ImplicitVariable oldSingletonVariable = singletonVariable; + singletonVariable = newSingletonVariable; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, + ProblemPackage.ARGUMENT__SINGLETON_VARIABLE, oldSingletonVariable, newSingletonVariable); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setSingletonVariable(ImplicitVariable newSingletonVariable) { + if (newSingletonVariable != singletonVariable) { + NotificationChain msgs = null; + if (singletonVariable != null) + msgs = ((InternalEObject) singletonVariable).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - ProblemPackage.ARGUMENT__SINGLETON_VARIABLE, null, msgs); + if (newSingletonVariable != null) + msgs = ((InternalEObject) newSingletonVariable).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - ProblemPackage.ARGUMENT__SINGLETON_VARIABLE, null, msgs); + msgs = basicSetSingletonVariable(newSingletonVariable, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, ProblemPackage.ARGUMENT__SINGLETON_VARIABLE, + newSingletonVariable, newSingletonVariable)); + } + + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case ProblemPackage.ARGUMENT__SINGLETON_VARIABLE: + return basicSetSingletonVariable(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * + * + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) { + switch (featureID) { + case ProblemPackage.ARGUMENT__VARIABLE: + if (resolve) + return getVariable(); + return basicGetVariable(); + case ProblemPackage.ARGUMENT__SINGLETON_VARIABLE: + return getSingletonVariable(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * + * + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) { + switch (featureID) { + case ProblemPackage.ARGUMENT__VARIABLE: + setVariable((Variable) newValue); + return; + case ProblemPackage.ARGUMENT__SINGLETON_VARIABLE: + setSingletonVariable((ImplicitVariable) newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * + * + * @generated + */ + @Override + public void eUnset(int featureID) { + switch (featureID) { + case ProblemPackage.ARGUMENT__VARIABLE: + setVariable((Variable) null); + return; + case ProblemPackage.ARGUMENT__SINGLETON_VARIABLE: + setSingletonVariable((ImplicitVariable) null); + return; + } + super.eUnset(featureID); + } + + /** + * + * + * @generated + */ + @Override + public boolean eIsSet(int featureID) { + switch (featureID) { + case ProblemPackage.ARGUMENT__VARIABLE: + return variable != null; + case ProblemPackage.ARGUMENT__SINGLETON_VARIABLE: + return singletonVariable != null; + } + return super.eIsSet(featureID); + } + +} //ArgumentImpl 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/AtomImpl.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/AtomImpl.java index 4571db14..d70fe90b 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/AtomImpl.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/AtomImpl.java @@ -6,6 +6,7 @@ import java.util.Collection; import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; @@ -13,12 +14,12 @@ import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; -import org.eclipse.emf.ecore.util.EObjectResolvingEList; - +import org.eclipse.emf.ecore.util.EObjectContainmentEList; +import org.eclipse.emf.ecore.util.InternalEList; +import org.eclipse.viatra.solver.language.model.problem.Argument; import org.eclipse.viatra.solver.language.model.problem.Atom; import org.eclipse.viatra.solver.language.model.problem.ProblemPackage; import org.eclipse.viatra.solver.language.model.problem.Relation; -import org.eclipse.viatra.solver.language.model.problem.Variable; /** * @@ -29,8 +30,8 @@ import org.eclipse.viatra.solver.language.model.problem.Variable; *

    *
      *
    • {@link org.eclipse.viatra.solver.language.model.problem.impl.AtomImpl#getRelation Relation}
    • - *
    • {@link org.eclipse.viatra.solver.language.model.problem.impl.AtomImpl#getArguments Arguments}
    • *
    • {@link org.eclipse.viatra.solver.language.model.problem.impl.AtomImpl#isTransitiveClosure Transitive Closure}
    • + *
    • {@link org.eclipse.viatra.solver.language.model.problem.impl.AtomImpl#getArguments Arguments}
    • *
    * * @generated @@ -47,34 +48,34 @@ public class AtomImpl extends LiteralImpl implements Atom { protected Relation relation; /** - * The cached value of the '{@link #getArguments() Arguments}' reference list. + * The default value of the '{@link #isTransitiveClosure() Transitive Closure}' attribute. * * - * @see #getArguments() + * @see #isTransitiveClosure() * @generated * @ordered */ - protected EList arguments; + protected static final boolean TRANSITIVE_CLOSURE_EDEFAULT = false; /** - * The default value of the '{@link #isTransitiveClosure() Transitive Closure}' attribute. + * The cached value of the '{@link #isTransitiveClosure() Transitive Closure}' attribute. * * * @see #isTransitiveClosure() * @generated * @ordered */ - protected static final boolean TRANSITIVE_CLOSURE_EDEFAULT = false; + protected boolean transitiveClosure = TRANSITIVE_CLOSURE_EDEFAULT; /** - * The cached value of the '{@link #isTransitiveClosure() Transitive Closure}' attribute. + * The cached value of the '{@link #getArguments() Arguments}' containment reference list. * * - * @see #isTransitiveClosure() + * @see #getArguments() * @generated * @ordered */ - protected boolean transitiveClosure = TRANSITIVE_CLOSURE_EDEFAULT; + protected EList arguments; /** * @@ -140,9 +141,9 @@ public class AtomImpl extends LiteralImpl implements Atom { * * @generated */ - public EList getArguments() { + public EList getArguments() { if (arguments == null) { - arguments = new EObjectResolvingEList(Variable.class, this, ProblemPackage.ATOM__ARGUMENTS); + arguments = new EObjectContainmentEList(Argument.class, this, ProblemPackage.ATOM__ARGUMENTS); } return arguments; } @@ -169,6 +170,20 @@ public class AtomImpl extends LiteralImpl implements Atom { oldTransitiveClosure, transitiveClosure)); } + /** + * + * + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { + switch (featureID) { + case ProblemPackage.ATOM__ARGUMENTS: + return ((InternalEList) getArguments()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + /** * * @@ -181,10 +196,10 @@ public class AtomImpl extends LiteralImpl implements Atom { if (resolve) return getRelation(); return basicGetRelation(); - case ProblemPackage.ATOM__ARGUMENTS: - return getArguments(); case ProblemPackage.ATOM__TRANSITIVE_CLOSURE: return isTransitiveClosure(); + case ProblemPackage.ATOM__ARGUMENTS: + return getArguments(); } return super.eGet(featureID, resolve, coreType); } @@ -201,13 +216,13 @@ public class AtomImpl extends LiteralImpl implements Atom { case ProblemPackage.ATOM__RELATION: setRelation((Relation) newValue); return; - case ProblemPackage.ATOM__ARGUMENTS: - getArguments().clear(); - getArguments().addAll((Collection) newValue); - return; case ProblemPackage.ATOM__TRANSITIVE_CLOSURE: setTransitiveClosure((Boolean) newValue); return; + case ProblemPackage.ATOM__ARGUMENTS: + getArguments().clear(); + getArguments().addAll((Collection) newValue); + return; } super.eSet(featureID, newValue); } @@ -223,12 +238,12 @@ public class AtomImpl extends LiteralImpl implements Atom { case ProblemPackage.ATOM__RELATION: setRelation((Relation) null); return; - case ProblemPackage.ATOM__ARGUMENTS: - getArguments().clear(); - return; case ProblemPackage.ATOM__TRANSITIVE_CLOSURE: setTransitiveClosure(TRANSITIVE_CLOSURE_EDEFAULT); return; + case ProblemPackage.ATOM__ARGUMENTS: + getArguments().clear(); + return; } super.eUnset(featureID); } @@ -243,10 +258,10 @@ public class AtomImpl extends LiteralImpl implements Atom { switch (featureID) { case ProblemPackage.ATOM__RELATION: return relation != null; - case ProblemPackage.ATOM__ARGUMENTS: - return arguments != null && !arguments.isEmpty(); case ProblemPackage.ATOM__TRANSITIVE_CLOSURE: return transitiveClosure != TRANSITIVE_CLOSURE_EDEFAULT; + case ProblemPackage.ATOM__ARGUMENTS: + return arguments != null && !arguments.isEmpty(); } return super.eIsSet(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/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 e1d07071..89de4d01 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 @@ -19,6 +19,7 @@ import org.eclipse.emf.ecore.util.EObjectResolvingEList; import org.eclipse.emf.ecore.util.InternalEList; 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; @@ -33,6 +34,7 @@ import org.eclipse.viatra.solver.language.model.problem.ReferenceDeclaration; *
  • {@link org.eclipse.viatra.solver.language.model.problem.impl.ClassDeclarationImpl#isAbstract Abstract}
  • *
  • {@link org.eclipse.viatra.solver.language.model.problem.impl.ClassDeclarationImpl#getSuperTypes Super Types}
  • *
  • {@link org.eclipse.viatra.solver.language.model.problem.impl.ClassDeclarationImpl#getReferenceDeclarations Reference Declarations}
  • + *
  • {@link org.eclipse.viatra.solver.language.model.problem.impl.ClassDeclarationImpl#getNewNode New Node}
  • * * * @generated @@ -78,6 +80,16 @@ public class ClassDeclarationImpl extends RelationImpl implements ClassDeclarati */ protected EList referenceDeclarations; + /** + * The cached value of the '{@link #getNewNode() New Node}' containment reference. + * + * + * @see #getNewNode() + * @generated + * @ordered + */ + protected Node newNode; + /** * * @@ -145,6 +157,56 @@ public class ClassDeclarationImpl extends RelationImpl implements ClassDeclarati return referenceDeclarations; } + /** + * + * + * @generated + */ + public Node getNewNode() { + return newNode; + } + + /** + * + * + * @generated + */ + public NotificationChain basicSetNewNode(Node newNewNode, NotificationChain msgs) { + Node oldNewNode = newNode; + newNode = newNewNode; + if (eNotificationRequired()) { + ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, + ProblemPackage.CLASS_DECLARATION__NEW_NODE, oldNewNode, newNewNode); + if (msgs == null) + msgs = notification; + else + msgs.add(notification); + } + return msgs; + } + + /** + * + * + * @generated + */ + public void setNewNode(Node newNewNode) { + if (newNewNode != newNode) { + NotificationChain msgs = null; + if (newNode != null) + msgs = ((InternalEObject) newNode).eInverseRemove(this, + EOPPOSITE_FEATURE_BASE - ProblemPackage.CLASS_DECLARATION__NEW_NODE, null, msgs); + if (newNewNode != null) + msgs = ((InternalEObject) newNewNode).eInverseAdd(this, + EOPPOSITE_FEATURE_BASE - ProblemPackage.CLASS_DECLARATION__NEW_NODE, null, msgs); + msgs = basicSetNewNode(newNewNode, msgs); + if (msgs != null) + msgs.dispatch(); + } else if (eNotificationRequired()) + eNotify(new ENotificationImpl(this, Notification.SET, ProblemPackage.CLASS_DECLARATION__NEW_NODE, + newNewNode, newNewNode)); + } + /** * * @@ -155,6 +217,8 @@ public class ClassDeclarationImpl extends RelationImpl implements ClassDeclarati switch (featureID) { case ProblemPackage.CLASS_DECLARATION__REFERENCE_DECLARATIONS: return ((InternalEList) getReferenceDeclarations()).basicRemove(otherEnd, msgs); + case ProblemPackage.CLASS_DECLARATION__NEW_NODE: + return basicSetNewNode(null, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); } @@ -173,6 +237,8 @@ public class ClassDeclarationImpl extends RelationImpl implements ClassDeclarati return getSuperTypes(); case ProblemPackage.CLASS_DECLARATION__REFERENCE_DECLARATIONS: return getReferenceDeclarations(); + case ProblemPackage.CLASS_DECLARATION__NEW_NODE: + return getNewNode(); } return super.eGet(featureID, resolve, coreType); } @@ -197,6 +263,9 @@ public class ClassDeclarationImpl extends RelationImpl implements ClassDeclarati getReferenceDeclarations().clear(); getReferenceDeclarations().addAll((Collection) newValue); return; + case ProblemPackage.CLASS_DECLARATION__NEW_NODE: + setNewNode((Node) newValue); + return; } super.eSet(featureID, newValue); } @@ -218,6 +287,9 @@ public class ClassDeclarationImpl extends RelationImpl implements ClassDeclarati case ProblemPackage.CLASS_DECLARATION__REFERENCE_DECLARATIONS: getReferenceDeclarations().clear(); return; + case ProblemPackage.CLASS_DECLARATION__NEW_NODE: + setNewNode((Node) null); + return; } super.eUnset(featureID); } @@ -236,6 +308,8 @@ public class ClassDeclarationImpl extends RelationImpl implements ClassDeclarati return superTypes != null && !superTypes.isEmpty(); case ProblemPackage.CLASS_DECLARATION__REFERENCE_DECLARATIONS: return referenceDeclarations != null && !referenceDeclarations.isEmpty(); + case ProblemPackage.CLASS_DECLARATION__NEW_NODE: + return newNode != null; } return super.eIsSet(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/ConjunctionImpl.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/ConjunctionImpl.java index 3bdf887f..72258cc1 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/ConjunctionImpl.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/ConjunctionImpl.java @@ -45,6 +45,7 @@ public class ConjunctionImpl extends MinimalEObjectImpl.Container implements Con * @ordered */ protected EList implicitVariables; + /** * The cached value of the '{@link #getLiterals() Literals}' 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/impl/NegativeLiteralImpl.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/NegativeLiteralImpl.java index 5295406b..857a779d 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/NegativeLiteralImpl.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/NegativeLiteralImpl.java @@ -47,6 +47,7 @@ public class NegativeLiteralImpl extends MinimalEObjectImpl.Container implements * @ordered */ protected EList implicitVariables; + /** * The cached value of the '{@link #getAtom() Atom}' 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/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 563f8b05..3bb50cfe 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 @@ -87,6 +87,10 @@ public class ProblemFactoryImpl extends EFactoryImpl implements ProblemFactory { return createRangeMultiplicity(); case ProblemPackage.EXACT_MULTIPLICITY: return createExactMultiplicity(); + case ProblemPackage.UNBOUNDED_MULTIPLICITY: + return createUnboundedMultiplicity(); + case ProblemPackage.ARGUMENT: + return createArgument(); default: throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); } @@ -272,6 +276,26 @@ public class ProblemFactoryImpl extends EFactoryImpl implements ProblemFactory { return exactMultiplicity; } + /** + * + * + * @generated + */ + public UnboundedMultiplicity createUnboundedMultiplicity() { + UnboundedMultiplicityImpl unboundedMultiplicity = new UnboundedMultiplicityImpl(); + return unboundedMultiplicity; + } + + /** + * + * + * @generated + */ + public Argument createArgument() { + ArgumentImpl argument = new ArgumentImpl(); + return argument; + } + /** * * 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/ProblemImpl.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/ProblemImpl.java index 32bba265..191021c4 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/ProblemImpl.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/ProblemImpl.java @@ -11,8 +11,6 @@ import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.InternalEObject; -import org.eclipse.emf.ecore.impl.MinimalEObjectImpl; - import org.eclipse.emf.ecore.util.EObjectContainmentEList; import org.eclipse.emf.ecore.util.InternalEList; @@ -35,7 +33,7 @@ import org.eclipse.viatra.solver.language.model.problem.Statement; * * @generated */ -public class ProblemImpl extends MinimalEObjectImpl.Container implements Problem { +public class ProblemImpl extends NamedElementImpl implements Problem { /** * The cached value of the '{@link #getNodes() Nodes}' containment reference list. * @@ -45,6 +43,7 @@ public class ProblemImpl extends MinimalEObjectImpl.Container implements Problem * @ordered */ protected EList nodes; + /** * The cached value of the '{@link #getStatements() Statements}' 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/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 de0aa595..f412addc 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 @@ -10,6 +10,7 @@ import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.impl.EPackageImpl; +import org.eclipse.viatra.solver.language.model.problem.Argument; 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; @@ -34,6 +35,7 @@ import org.eclipse.viatra.solver.language.model.problem.Relation; import org.eclipse.viatra.solver.language.model.problem.ScopeDeclaration; 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; /** @@ -197,6 +199,20 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { */ private EClass exactMultiplicityEClass = null; + /** + * + * + * @generated + */ + private EClass unboundedMultiplicityEClass = null; + + /** + * + * + * @generated + */ + private EClass argumentEClass = null; + /** * * @@ -340,6 +356,15 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { return (EReference) classDeclarationEClass.getEStructuralFeatures().get(2); } + /** + * + * + * @generated + */ + public EReference getClassDeclaration_NewNode() { + return (EReference) classDeclarationEClass.getEStructuralFeatures().get(3); + } + /** * * @@ -517,7 +542,7 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { * @generated */ public EReference getAtom_Arguments() { - return (EReference) atomEClass.getEStructuralFeatures().get(1); + return (EReference) atomEClass.getEStructuralFeatures().get(2); } /** @@ -526,7 +551,7 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { * @generated */ public EAttribute getAtom_TransitiveClosure() { - return (EAttribute) atomEClass.getEStructuralFeatures().get(2); + return (EAttribute) atomEClass.getEStructuralFeatures().get(1); } /** @@ -736,6 +761,42 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { return (EAttribute) exactMultiplicityEClass.getEStructuralFeatures().get(0); } + /** + * + * + * @generated + */ + public EClass getUnboundedMultiplicity() { + return unboundedMultiplicityEClass; + } + + /** + * + * + * @generated + */ + public EClass getArgument() { + return argumentEClass; + } + + /** + * + * + * @generated + */ + public EReference getArgument_Variable() { + return (EReference) argumentEClass.getEStructuralFeatures().get(0); + } + + /** + * + * + * @generated + */ + public EReference getArgument_SingletonVariable() { + return (EReference) argumentEClass.getEStructuralFeatures().get(1); + } + /** * * @@ -784,6 +845,7 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { createEAttribute(classDeclarationEClass, CLASS_DECLARATION__ABSTRACT); createEReference(classDeclarationEClass, CLASS_DECLARATION__SUPER_TYPES); createEReference(classDeclarationEClass, CLASS_DECLARATION__REFERENCE_DECLARATIONS); + createEReference(classDeclarationEClass, CLASS_DECLARATION__NEW_NODE); referenceDeclarationEClass = createEClass(REFERENCE_DECLARATION); createEReference(referenceDeclarationEClass, REFERENCE_DECLARATION__REFERENCE_TYPE); @@ -811,8 +873,8 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { atomEClass = createEClass(ATOM); createEReference(atomEClass, ATOM__RELATION); - createEReference(atomEClass, ATOM__ARGUMENTS); createEAttribute(atomEClass, ATOM__TRANSITIVE_CLOSURE); + createEReference(atomEClass, ATOM__ARGUMENTS); implicitVariableEClass = createEClass(IMPLICIT_VARIABLE); @@ -848,6 +910,12 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { exactMultiplicityEClass = createEClass(EXACT_MULTIPLICITY); createEAttribute(exactMultiplicityEClass, EXACT_MULTIPLICITY__EXACT_VALUE); + unboundedMultiplicityEClass = createEClass(UNBOUNDED_MULTIPLICITY); + + argumentEClass = createEClass(ARGUMENT); + createEReference(argumentEClass, ARGUMENT__VARIABLE); + createEReference(argumentEClass, ARGUMENT__SINGLETON_VARIABLE); + // Create enums logicValueEEnum = createEEnum(LOGIC_VALUE); } @@ -881,6 +949,7 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { // Set bounds for type parameters // Add supertypes to classes + problemEClass.getESuperTypes().add(this.getNamedElement()); relationEClass.getESuperTypes().add(this.getNamedElement()); classDeclarationEClass.getESuperTypes().add(this.getRelation()); classDeclarationEClass.getESuperTypes().add(this.getStatement()); @@ -899,6 +968,7 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { scopeDeclarationEClass.getESuperTypes().add(this.getStatement()); rangeMultiplicityEClass.getESuperTypes().add(this.getMultiplicity()); exactMultiplicityEClass.getESuperTypes().add(this.getMultiplicity()); + unboundedMultiplicityEClass.getESuperTypes().add(this.getMultiplicity()); // Initialize classes, features, and operations; add parameters initEClass(problemEClass, Problem.class, "Problem", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); @@ -922,6 +992,9 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { initEReference(getClassDeclaration_ReferenceDeclarations(), this.getReferenceDeclaration(), null, "referenceDeclarations", 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_NewNode(), this.getNode(), null, "newNode", null, 0, 1, + ClassDeclaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, + !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(referenceDeclarationEClass, ReferenceDeclaration.class, "ReferenceDeclaration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); @@ -975,12 +1048,12 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { initEReference(getAtom_Relation(), this.getRelation(), null, "relation", null, 0, 1, Atom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); - initEReference(getAtom_Arguments(), this.getVariable(), null, "arguments", null, 0, -1, Atom.class, - !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, - IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEAttribute(getAtom_TransitiveClosure(), ecorePackage.getEBoolean(), "transitiveClosure", null, 0, 1, Atom.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getAtom_Arguments(), this.getArgument(), null, "arguments", null, 0, -1, Atom.class, + !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, + IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(implicitVariableEClass, ImplicitVariable.class, "ImplicitVariable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); @@ -1048,6 +1121,18 @@ public class ProblemPackageImpl extends EPackageImpl implements ProblemPackage { ExactMultiplicity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEClass(unboundedMultiplicityEClass, UnboundedMultiplicity.class, "UnboundedMultiplicity", !IS_ABSTRACT, + !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + + 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_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); + // 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/UnboundedMultiplicityImpl.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/UnboundedMultiplicityImpl.java new file mode 100644 index 00000000..34283189 --- /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/UnboundedMultiplicityImpl.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.UnboundedMultiplicity; + +/** + * + * An implementation of the model object 'Unbounded Multiplicity'. + * + * + * @generated + */ +public class UnboundedMultiplicityImpl extends MultiplicityImpl implements UnboundedMultiplicity { + /** + * + * + * @generated + */ + protected UnboundedMultiplicityImpl() { + super(); + } + + /** + * + * + * @generated + */ + @Override + protected EClass eStaticClass() { + return ProblemPackage.Literals.UNBOUNDED_MULTIPLICITY; + } + +} //UnboundedMultiplicityImpl 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 f228f54a..c41a4034 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 @@ -176,6 +176,16 @@ public class ProblemAdapterFactory extends AdapterFactoryImpl { return createExactMultiplicityAdapter(); } + @Override + public Adapter caseUnboundedMultiplicity(UnboundedMultiplicity object) { + return createUnboundedMultiplicityAdapter(); + } + + @Override + public Adapter caseArgument(Argument object) { + return createArgumentAdapter(); + } + @Override public Adapter defaultCase(EObject object) { return createEObjectAdapter(); @@ -503,6 +513,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.UnboundedMultiplicity Unbounded Multiplicity}'. + * + * 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.UnboundedMultiplicity + * @generated + */ + public Adapter createUnboundedMultiplicityAdapter() { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.viatra.solver.language.model.problem.Argument Argument}'. + * + * 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.Argument + * @generated + */ + public Adapter createArgumentAdapter() { + 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 a9e1455b..361b663c 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 @@ -69,6 +69,8 @@ public class ProblemSwitch extends Switch { case ProblemPackage.PROBLEM: { Problem problem = (Problem) theEObject; T result = caseProblem(problem); + if (result == null) + result = caseNamedElement(problem); if (result == null) result = defaultCase(theEObject); return result; @@ -266,6 +268,22 @@ public class ProblemSwitch extends Switch { result = defaultCase(theEObject); return result; } + case ProblemPackage.UNBOUNDED_MULTIPLICITY: { + UnboundedMultiplicity unboundedMultiplicity = (UnboundedMultiplicity) theEObject; + T result = caseUnboundedMultiplicity(unboundedMultiplicity); + if (result == null) + result = caseMultiplicity(unboundedMultiplicity); + if (result == null) + result = defaultCase(theEObject); + return result; + } + case ProblemPackage.ARGUMENT: { + Argument argument = (Argument) theEObject; + T result = caseArgument(argument); + if (result == null) + result = defaultCase(theEObject); + return result; + } default: return defaultCase(theEObject); } @@ -601,6 +619,36 @@ public class ProblemSwitch extends Switch { return null; } + /** + * Returns the result of interpreting the object as an instance of 'Unbounded Multiplicity'. + * + * 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 'Unbounded Multiplicity'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseUnboundedMultiplicity(UnboundedMultiplicity object) { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of 'Argument'. + * + * 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 'Argument'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseArgument(Argument object) { + return null; + } + /** * Returns the result of interpreting the object as an instance of 'EObject'. * -- cgit v1.2.3-70-g09d2