@@ -34,18 +34,24 @@ namespace SysML2.NET.Core.POCO
3434 /// A Connector is a usage of Associations, with links restricted according to instances of the Type in
3535 /// which they are used (domain of the Connector). The associations of the Connector restrict what kinds
3636 /// of things might be linked. The Connector further restricts these links to be between values of
37- /// Features on instances of its domain.not isAbstract implies relatedFeature->size() >=
38- /// 2connectorEnds->size() = 2 andassociation->exists(oclIsKindOf(AssociationStructure)) implies
39- /// specializesFromLibrary('Objects::binaryLinkObjects')sourceFeature = if relatedFeature->isEmpty()
40- /// then null else relatedFeature->first() endifconnectorEnds->size() > 2 implies not
41- /// specializesFromLibrary('Links::BinaryLink')relatedFeature->forAll(f | if
42- /// featuringType->isEmpty() then f.isFeaturedWithin(null) else featuringType->forAll(t |
43- /// f.isFeaturedWithin(t)) endif)relatedFeature = connectorEnd.ownedReferenceSubsetting-> select(s
44- /// | s <> null).subsettedFeaturespecializesFromLibrary('Links::links')connectorEnd->size() = 2 implies
45- /// specializesFromLibrary('Links::binaryLinks')association->exists(oclIsKindOf(AssociationStructure))
46- /// implies specializesFromLibrary('Objects::linkObjects')targetFeature = if
47- /// relatedFeature->size() < 2 then OrderedSet{} else relatedFeature->
48- /// subSequence(2, relatedFeature->size())-> asOrderedSet() endif
37+ /// Features on instances of its domain.relatedFeature = connectorEnd.ownedReferenceSubsetting->
38+ /// select(s | s <> null).subsettedFeaturerelatedFeature->forAll(f | if featuringType->isEmpty()
39+ /// then f.isFeaturedWithin(null) else featuringType->forAll(t | f.isFeaturedWithin(t))
40+ /// endif)sourceFeature = if relatedFeature->isEmpty() then null else relatedFeature->first()
41+ /// endiftargetFeature = if relatedFeature->size() < 2 then OrderedSet{} else
42+ /// relatedFeature-> subSequence(2, relatedFeature->size())-> asOrderedSet()
43+ /// endifnot isAbstract implies relatedFeature->size() >=
44+ /// 2specializesFromLibrary('Links::links')association->exists(oclIsKindOf(AssociationStructure))
45+ /// implies specializesFromLibrary('Objects::linkObjects')connectorEnds->size() = 2
46+ /// andassociation->exists(oclIsKindOf(AssociationStructure)) implies
47+ /// specializesFromLibrary('Objects::binaryLinkObjects')connectorEnd->size() = 2 implies
48+ /// specializesFromLibrary('Links::binaryLinks')connectorEnds->size() > 2 implies not
49+ /// specializesFromLibrary('Links::BinaryLink')let commonFeaturingTypes : OrderedSet(Type) =
50+ /// relatedFeature->closure(featuringType)->select(t | relatedFeature->forAll(f |
51+ /// f.isFeaturedWithin(t)) ) inlet nearestCommonFeaturingTypes : OrderedSet(Type) =
52+ /// commonFeaturingTypes->reject(t1 | commonFeaturingTypes->exists(t2 | t2 <> t1 and
53+ /// t2->closure(featuringType)->contains(t1) )) inif nearestCommonFeaturingTypes->isEmpty() then
54+ /// nullelse nearestCommonFeaturingTypes->first()endif
4955 /// </summary>
5056 public partial class Connector : IConnector
5157 {
@@ -57,15 +63,16 @@ public Connector()
5763 this . AliasIds = new List < string > ( ) ;
5864 this . IsAbstract = false ;
5965 this . IsComposite = false ;
66+ this . IsConstant = false ;
6067 this . IsDerived = false ;
6168 this . IsEnd = false ;
6269 this . IsImplied = false ;
6370 this . IsImpliedIncluded = false ;
6471 this . IsOrdered = false ;
6572 this . IsPortion = false ;
66- this . IsReadOnly = false ;
6773 this . IsSufficient = false ;
6874 this . IsUnique = true ;
75+ this . IsVariable = false ;
6976 this . OwnedRelatedElement = new List < IElement > ( ) ;
7077 this . OwnedRelationship = new List < IRelationship > ( ) ;
7178 this . Source = new List < IElement > ( ) ;
@@ -135,6 +142,15 @@ public Feature QueryCrossFeature()
135142 [ EFeature ( isChangeable : true , isVolatile : false , isTransient : false , isUnsettable : false , isDerived : false , isOrdered : false , isUnique : true , lowerBound : 0 , upperBound : 1 , isMany : false , isRequired : false , isContainment : false ) ]
136143 public string DeclaredShortName { get ; set ; }
137144
145+ /// <summary>
146+ /// Queries the derived property DefaultFeaturingType
147+ /// </summary>
148+ [ EFeature ( isChangeable : true , isVolatile : true , isTransient : true , isUnsettable : false , isDerived : true , isOrdered : false , isUnique : true , lowerBound : 0 , upperBound : 1 , isMany : false , isRequired : false , isContainment : false ) ]
149+ public Type QueryDefaultFeaturingType ( )
150+ {
151+ throw new NotImplementedException ( "Derived property DefaultFeaturingType not yet supported" ) ;
152+ }
153+
138154 /// <summary>
139155 /// Queries the derived property DifferencingType
140156 /// </summary>
@@ -284,7 +300,8 @@ public List<Type> QueryIntersectingType()
284300
285301 /// <summary>
286302 /// Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature
287- /// cannot exist after its featuring instance no longer does.
303+ /// cannot exist after its featuring instance no longer does and cannot be values of another composite
304+ /// feature that is not on the same featuring instance.
288305 /// </summary>
289306 [ EFeature ( isChangeable : true , isVolatile : false , isTransient : false , isUnsettable : false , isDerived : false , isOrdered : false , isUnique : true , lowerBound : 1 , upperBound : 1 , isMany : false , isRequired : false , isContainment : false ) ]
290307 public bool IsComposite { get ; set ; }
@@ -298,6 +315,13 @@ public bool QueryIsConjugated()
298315 throw new NotImplementedException ( "Derived property IsConjugated not yet supported" ) ;
299316 }
300317
318+ /// <summary>
319+ /// If isVariable is true, then whether the value of this Feature nevertheless does not change over all
320+ /// snapshots of its owningType.
321+ /// </summary>
322+ [ EFeature ( isChangeable : true , isVolatile : false , isTransient : false , isUnsettable : false , isDerived : false , isOrdered : false , isUnique : true , lowerBound : 1 , upperBound : 1 , isMany : false , isRequired : false , isContainment : false ) ]
323+ public bool IsConstant { get ; set ; }
324+
301325 /// <summary>
302326 /// Whether the values of this Feature can always be computed from the values of other Features.
303327 /// </summary>
@@ -365,12 +389,6 @@ public bool QueryIsNonunique()
365389 [ EFeature ( isChangeable : true , isVolatile : false , isTransient : false , isUnsettable : false , isDerived : false , isOrdered : false , isUnique : true , lowerBound : 1 , upperBound : 1 , isMany : false , isRequired : false , isContainment : false ) ]
366390 public bool IsPortion { get ; set ; }
367391
368- /// <summary>
369- /// Whether the values of this Feature can change over the lifetime of an instance of the domain.
370- /// </summary>
371- [ EFeature ( isChangeable : true , isVolatile : false , isTransient : false , isUnsettable : false , isDerived : false , isOrdered : false , isUnique : true , lowerBound : 1 , upperBound : 1 , isMany : false , isRequired : false , isContainment : false ) ]
372- public bool IsReadOnly { get ; set ; }
373-
374392 /// <summary>
375393 /// Whether all things that meet the classification conditions of this Type must be classified by the
376394 /// Type.(A Type gives conditions that must be met by whatever it classifies, but when isSufficient
@@ -388,6 +406,13 @@ public bool QueryIsNonunique()
388406 [ EFeature ( isChangeable : true , isVolatile : false , isTransient : false , isUnsettable : false , isDerived : false , isOrdered : false , isUnique : true , lowerBound : 1 , upperBound : 1 , isMany : false , isRequired : false , isContainment : false ) ]
389407 public bool IsUnique { get ; set ; }
390408
409+ /// <summary>
410+ /// Whether the value of this Feature might vary over time. That is, whether the Feature may have a
411+ /// different value for each snapshot of an owningType that is an Occurrence.
412+ /// </summary>
413+ [ EFeature ( isChangeable : true , isVolatile : false , isTransient : false , isUnsettable : false , isDerived : false , isOrdered : false , isUnique : true , lowerBound : 1 , upperBound : 1 , isMany : false , isRequired : false , isContainment : false ) ]
414+ public bool IsVariable { get ; set ; }
415+
391416 /// <summary>
392417 /// Queries the derived property Member
393418 /// </summary>
0 commit comments