sysml-validate 0.10.18 → 0.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +27 -27
- package/README.md +200 -200
- package/out/main.js +596 -141
- package/out/main.js.map +4 -4
- package/package.json +57 -57
- package/resources/sysml.dimension-table.json +1 -1
- package/resources/sysml.library/Domain Libraries/Analysis/.meta.json +9 -9
- package/resources/sysml.library/Domain Libraries/Analysis/.project.json +26 -26
- package/resources/sysml.library/Domain Libraries/Analysis/AnalysisTooling.sysml +33 -33
- package/resources/sysml.library/Domain Libraries/Analysis/SampledFunctions.sysml +118 -118
- package/resources/sysml.library/Domain Libraries/Analysis/StateSpaceRepresentation.sysml +143 -143
- package/resources/sysml.library/Domain Libraries/Analysis/TradeStudies.sysml +170 -170
- package/resources/sysml.library/Domain Libraries/Cause and Effect/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Cause and Effect/.project.json +22 -22
- package/resources/sysml.library/Domain Libraries/Cause and Effect/CausationConnections.sysml +82 -82
- package/resources/sysml.library/Domain Libraries/Cause and Effect/CauseAndEffect.sysml +81 -81
- package/resources/sysml.library/Domain Libraries/Geometry/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Geometry/.project.json +26 -26
- package/resources/sysml.library/Domain Libraries/Geometry/ShapeItems.sysml +898 -898
- package/resources/sysml.library/Domain Libraries/Geometry/SpatialItems.sysml +167 -167
- package/resources/sysml.library/Domain Libraries/Metadata/.meta.json +9 -9
- package/resources/sysml.library/Domain Libraries/Metadata/.project.json +18 -18
- package/resources/sysml.library/Domain Libraries/Metadata/ImageMetadata.sysml +77 -77
- package/resources/sysml.library/Domain Libraries/Metadata/ModelingMetadata.sysml +142 -142
- package/resources/sysml.library/Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml +38 -38
- package/resources/sysml.library/Domain Libraries/Metadata/RiskMetadata.sysml +99 -99
- package/resources/sysml.library/Domain Libraries/Quantities and Units/.meta.json +28 -28
- package/resources/sysml.library/Domain Libraries/Quantities and Units/.project.json +22 -22
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQ.sysml +42 -42
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAcoustics.sysml +439 -439
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAtomicNuclear.sysml +2726 -2726
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQBase.sysml +206 -206
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCharacteristicNumbers.sysml +1991 -1991
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQChemistryMolecular.sysml +1353 -1353
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCondensedMatter.sysml +1223 -1223
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQElectromagnetism.sysml +2333 -2333
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQInformation.sysml +958 -958
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQLight.sysml +1537 -1537
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQMechanics.sysml +1564 -1564
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQSpaceTime.sysml +1169 -1169
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQThermodynamics.sysml +1256 -1256
- package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementRefCalculations.sysml +30 -30
- package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementReferences.sysml +526 -526
- package/resources/sysml.library/Domain Libraries/Quantities and Units/Quantities.sysml +107 -107
- package/resources/sysml.library/Domain Libraries/Quantities and Units/QuantityCalculations.sysml +70 -70
- package/resources/sysml.library/Domain Libraries/Quantities and Units/SI.sysml +378 -378
- package/resources/sysml.library/Domain Libraries/Quantities and Units/SIPrefixes.sysml +48 -48
- package/resources/sysml.library/Domain Libraries/Quantities and Units/TensorCalculations.sysml +49 -49
- package/resources/sysml.library/Domain Libraries/Quantities and Units/Time.sysml +274 -274
- package/resources/sysml.library/Domain Libraries/Quantities and Units/USCustomaryUnits.sysml +260 -260
- package/resources/sysml.library/Domain Libraries/Quantities and Units/VectorCalculations.sysml +62 -62
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/.project.json +18 -18
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/DerivationConnections.sysml +62 -62
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/RequirementDerivation.sysml +38 -38
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.meta.json +8 -8
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.project.json +10 -10
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/Collections.kerml +176 -176
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/ScalarValues.kerml +23 -23
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/VectorValues.kerml +63 -63
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.meta.json +22 -22
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.project.json +14 -14
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BaseFunctions.kerml +79 -79
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BooleanFunctions.kerml +22 -22
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/CollectionFunctions.kerml +68 -68
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ComplexFunctions.kerml +47 -47
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ControlFunctions.kerml +116 -116
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/DataFunctions.kerml +42 -42
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/IntegerFunctions.kerml +43 -43
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NaturalFunctions.kerml +27 -27
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NumericalFunctions.kerml +42 -42
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/OccurrenceFunctions.kerml +153 -153
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RationalFunctions.kerml +49 -49
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RealFunctions.kerml +56 -56
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ScalarFunctions.kerml +32 -32
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/SequenceFunctions.kerml +110 -110
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/StringFunctions.kerml +25 -25
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/TrigFunctions.kerml +34 -34
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/VectorFunctions.kerml +272 -272
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.meta.json +21 -21
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.project.json +14 -14
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Base.kerml +94 -94
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Clocks.kerml +155 -155
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/ControlPerformances.kerml +134 -134
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/FeatureReferencingPerformances.kerml +189 -189
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/KerML.kerml +483 -483
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Links.kerml +66 -66
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Metaobjects.kerml +57 -57
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Objects.kerml +212 -212
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Observation.kerml +160 -160
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Occurrences.kerml +992 -992
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Performances.kerml +292 -292
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/SpatialFrames.kerml +196 -196
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/StatePerformances.kerml +144 -144
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Transfers.kerml +280 -280
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/TransitionPerformances.kerml +65 -65
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Triggers.kerml +187 -187
- package/resources/sysml.library/LICENSE +276 -276
- package/resources/sysml.library/NOTICE.md +20 -20
- package/resources/sysml.library/Systems Library/Actions.sysml +556 -556
- package/resources/sysml.library/Systems Library/Allocations.sysml +28 -28
- package/resources/sysml.library/Systems Library/AnalysisCases.sysml +37 -37
- package/resources/sysml.library/Systems Library/Attributes.sysml +24 -24
- package/resources/sysml.library/Systems Library/Calculations.sysml +36 -36
- package/resources/sysml.library/Systems Library/Cases.sysml +70 -70
- package/resources/sysml.library/Systems Library/Connections.sysml +59 -59
- package/resources/sysml.library/Systems Library/Constraints.sysml +43 -43
- package/resources/sysml.library/Systems Library/Flows.sysml +125 -125
- package/resources/sysml.library/Systems Library/Interfaces.sysml +88 -88
- package/resources/sysml.library/Systems Library/Items.sysml +152 -152
- package/resources/sysml.library/Systems Library/Metadata.sysml +31 -31
- package/resources/sysml.library/Systems Library/Parts.sysml +80 -80
- package/resources/sysml.library/Systems Library/Ports.sysml +53 -53
- package/resources/sysml.library/Systems Library/Requirements.sysml +193 -193
- package/resources/sysml.library/Systems Library/StandardViewDefinitions.sysml +123 -123
- package/resources/sysml.library/Systems Library/States.sysml +102 -102
- package/resources/sysml.library/Systems Library/SysML.sysml +539 -539
- package/resources/sysml.library/Systems Library/UseCases.sysml +56 -56
- package/resources/sysml.library/Systems Library/VerificationCases.sysml +102 -102
- package/resources/sysml.library/Systems Library/Views.sysml +163 -163
- package/resources/sysml.library.index.json +1 -1
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/DataFunctions.kerml
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
standard library package DataFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines the abstract base functions corresponding to all the unary and binary operators
|
|
5
|
-
* in the KerML expression notation that might be defined on various kinds of DataValues.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
private import Base::DataValue;
|
|
9
|
-
private import ScalarValues::Boolean;
|
|
10
|
-
private import ControlFunctions::reduce;
|
|
11
|
-
|
|
12
|
-
abstract function '==' specializes BaseFunctions::'==' { in x: DataValue[0..1]; in y: DataValue[0..1];
|
|
13
|
-
return : Boolean[1];
|
|
14
|
-
}
|
|
15
|
-
function '===' specializes BaseFunctions::'==='{ in x: DataValue[0..1]; in y: DataValue[0..1];
|
|
16
|
-
return : Boolean[1] = x == y;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
abstract function '+' { in x: DataValue[1]; in y: DataValue[0..1]; return : DataValue[1]; }
|
|
20
|
-
abstract function '-' { in x: DataValue[1]; in y: DataValue[0..1]; return : DataValue[1]; }
|
|
21
|
-
abstract function '*' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
22
|
-
abstract function '/' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
23
|
-
abstract function '**' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
24
|
-
abstract function '^' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
25
|
-
abstract function '%' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
26
|
-
|
|
27
|
-
abstract function 'not' { in x: DataValue[1]; return : DataValue[1]; }
|
|
28
|
-
abstract function 'xor' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
29
|
-
|
|
30
|
-
abstract function '~' { in x: DataValue[1]; return : DataValue[1]; }
|
|
31
|
-
abstract function '|' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
32
|
-
abstract function '&' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
33
|
-
|
|
34
|
-
abstract function '<' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
|
|
35
|
-
abstract function '>' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
|
|
36
|
-
abstract function '<=' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
|
|
37
|
-
abstract function '>=' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
|
|
38
|
-
|
|
39
|
-
abstract function max { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
40
|
-
abstract function min { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
41
|
-
|
|
42
|
-
abstract function '..' { in lower: DataValue[1]; in upper: DataValue[1]; return : DataValue[0..*] ordered; }
|
|
1
|
+
standard library package DataFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines the abstract base functions corresponding to all the unary and binary operators
|
|
5
|
+
* in the KerML expression notation that might be defined on various kinds of DataValues.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
private import Base::DataValue;
|
|
9
|
+
private import ScalarValues::Boolean;
|
|
10
|
+
private import ControlFunctions::reduce;
|
|
11
|
+
|
|
12
|
+
abstract function '==' specializes BaseFunctions::'==' { in x: DataValue[0..1]; in y: DataValue[0..1];
|
|
13
|
+
return : Boolean[1];
|
|
14
|
+
}
|
|
15
|
+
function '===' specializes BaseFunctions::'==='{ in x: DataValue[0..1]; in y: DataValue[0..1];
|
|
16
|
+
return : Boolean[1] = x == y;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
abstract function '+' { in x: DataValue[1]; in y: DataValue[0..1]; return : DataValue[1]; }
|
|
20
|
+
abstract function '-' { in x: DataValue[1]; in y: DataValue[0..1]; return : DataValue[1]; }
|
|
21
|
+
abstract function '*' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
22
|
+
abstract function '/' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
23
|
+
abstract function '**' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
24
|
+
abstract function '^' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
25
|
+
abstract function '%' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
26
|
+
|
|
27
|
+
abstract function 'not' { in x: DataValue[1]; return : DataValue[1]; }
|
|
28
|
+
abstract function 'xor' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
29
|
+
|
|
30
|
+
abstract function '~' { in x: DataValue[1]; return : DataValue[1]; }
|
|
31
|
+
abstract function '|' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
32
|
+
abstract function '&' { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
33
|
+
|
|
34
|
+
abstract function '<' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
|
|
35
|
+
abstract function '>' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
|
|
36
|
+
abstract function '<=' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
|
|
37
|
+
abstract function '>=' { in x: DataValue[1]; in y: DataValue[1]; return : Boolean[1]; }
|
|
38
|
+
|
|
39
|
+
abstract function max { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
40
|
+
abstract function min { in x: DataValue[1]; in y: DataValue[1]; return : DataValue[1]; }
|
|
41
|
+
|
|
42
|
+
abstract function '..' { in lower: DataValue[1]; in upper: DataValue[1]; return : DataValue[0..*] ordered; }
|
|
43
43
|
}
|
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/IntegerFunctions.kerml
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
standard library package IntegerFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines functions on Integer values, including concrete specializations of the
|
|
5
|
-
* general arithmetic and comparison operations.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
public import ScalarValues::*;
|
|
9
|
-
|
|
10
|
-
function abs specializes RationalFunctions::abs { in x: Integer[1]; return : Natural[1]; }
|
|
11
|
-
|
|
12
|
-
function '+' specializes RationalFunctions::'+' { in x: Integer[1]; in y: Integer[0..1]; return : Integer[1]; }
|
|
13
|
-
function '-' specializes RationalFunctions::'-' { in x: Integer[1]; in y: Integer[0..1]; return : Integer[1]; }
|
|
14
|
-
function '*' specializes RationalFunctions::'*' { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
|
|
15
|
-
function '/' specializes RationalFunctions::'/' { in x: Integer[1]; in y: Integer[1]; return : Rational[1]; }
|
|
16
|
-
function '**' specializes RationalFunctions::'**' { in x: Integer[1]; in y: Natural[1]; return : Integer[1]; }
|
|
17
|
-
function '^' specializes RationalFunctions::'^' { in x: Integer[1]; in y: Natural[1]; return : Integer[1]; }
|
|
18
|
-
function '%' specializes NumericalFunctions::'%' { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
|
|
19
|
-
|
|
20
|
-
function '<' specializes RationalFunctions::'<' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
|
|
21
|
-
function '>' specializes RationalFunctions::'>' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
|
|
22
|
-
function '<=' specializes RationalFunctions::'<=' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
|
|
23
|
-
function '>=' specializes RationalFunctions::'>=' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
|
|
24
|
-
|
|
25
|
-
function max specializes RationalFunctions::max { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
|
|
26
|
-
function min specializes RationalFunctions::min { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
|
|
27
|
-
|
|
28
|
-
function '==' specializes DataFunctions::'==' { in x: Integer[0..1]; in y: Integer[0..1]; return : Boolean[1]; }
|
|
29
|
-
|
|
30
|
-
function '..' specializes ScalarFunctions::'..' { in lower: Integer[1]; in upper: Integer[1]; return : Integer[0..*]; }
|
|
31
|
-
|
|
32
|
-
function ToString specializes RationalFunctions::ToString { in x: Integer[1]; return : String[1]; }
|
|
33
|
-
function ToNatural { in x: Integer[1]; return : Natural[1]; }
|
|
34
|
-
function ToInteger { in x: String[1]; return : Integer[1]; }
|
|
35
|
-
|
|
36
|
-
function sum specializes RationalFunctions::sum { in collection: Integer[0..*];
|
|
37
|
-
return : Integer[1] default NumericalFunctions::sum0(collection, 0);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function product specializes RationalFunctions::product { in collection: Integer[0..*];
|
|
41
|
-
return : Integer[1] default NumericalFunctions::product1(collection, 1);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
1
|
+
standard library package IntegerFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines functions on Integer values, including concrete specializations of the
|
|
5
|
+
* general arithmetic and comparison operations.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
public import ScalarValues::*;
|
|
9
|
+
|
|
10
|
+
function abs specializes RationalFunctions::abs { in x: Integer[1]; return : Natural[1]; }
|
|
11
|
+
|
|
12
|
+
function '+' specializes RationalFunctions::'+' { in x: Integer[1]; in y: Integer[0..1]; return : Integer[1]; }
|
|
13
|
+
function '-' specializes RationalFunctions::'-' { in x: Integer[1]; in y: Integer[0..1]; return : Integer[1]; }
|
|
14
|
+
function '*' specializes RationalFunctions::'*' { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
|
|
15
|
+
function '/' specializes RationalFunctions::'/' { in x: Integer[1]; in y: Integer[1]; return : Rational[1]; }
|
|
16
|
+
function '**' specializes RationalFunctions::'**' { in x: Integer[1]; in y: Natural[1]; return : Integer[1]; }
|
|
17
|
+
function '^' specializes RationalFunctions::'^' { in x: Integer[1]; in y: Natural[1]; return : Integer[1]; }
|
|
18
|
+
function '%' specializes NumericalFunctions::'%' { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
|
|
19
|
+
|
|
20
|
+
function '<' specializes RationalFunctions::'<' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
|
|
21
|
+
function '>' specializes RationalFunctions::'>' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
|
|
22
|
+
function '<=' specializes RationalFunctions::'<=' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
|
|
23
|
+
function '>=' specializes RationalFunctions::'>=' { in x: Integer[1]; in y: Integer[1]; return : Boolean[1]; }
|
|
24
|
+
|
|
25
|
+
function max specializes RationalFunctions::max { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
|
|
26
|
+
function min specializes RationalFunctions::min { in x: Integer[1]; in y: Integer[1]; return : Integer[1]; }
|
|
27
|
+
|
|
28
|
+
function '==' specializes DataFunctions::'==' { in x: Integer[0..1]; in y: Integer[0..1]; return : Boolean[1]; }
|
|
29
|
+
|
|
30
|
+
function '..' specializes ScalarFunctions::'..' { in lower: Integer[1]; in upper: Integer[1]; return : Integer[0..*]; }
|
|
31
|
+
|
|
32
|
+
function ToString specializes RationalFunctions::ToString { in x: Integer[1]; return : String[1]; }
|
|
33
|
+
function ToNatural { in x: Integer[1]; return : Natural[1]; }
|
|
34
|
+
function ToInteger { in x: String[1]; return : Integer[1]; }
|
|
35
|
+
|
|
36
|
+
function sum specializes RationalFunctions::sum { in collection: Integer[0..*];
|
|
37
|
+
return : Integer[1] default NumericalFunctions::sum0(collection, 0);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function product specializes RationalFunctions::product { in collection: Integer[0..*];
|
|
41
|
+
return : Integer[1] default NumericalFunctions::product1(collection, 1);
|
|
42
|
+
}
|
|
43
|
+
}
|
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NaturalFunctions.kerml
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
standard library package NaturalFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines functions on Natural values, including concrete specialization of the
|
|
5
|
-
* general arithmetic and comparison operations.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
public import ScalarValues::*;
|
|
9
|
-
|
|
10
|
-
function '+' specializes IntegerFunctions::'+' { in x: Natural[1]; in y: Natural[0..1]; return : Natural[1]; }
|
|
11
|
-
function '*' specializes IntegerFunctions::'*' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
|
|
12
|
-
function '/' specializes IntegerFunctions::'/' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
|
|
13
|
-
function '%' specializes IntegerFunctions::'%' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
|
|
14
|
-
|
|
15
|
-
function '<' specializes IntegerFunctions::'<' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
|
|
16
|
-
function '>' specializes IntegerFunctions::'>' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
|
|
17
|
-
function '<=' specializes IntegerFunctions::'<=' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
|
|
18
|
-
function '>=' specializes IntegerFunctions::'>=' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
|
|
19
|
-
|
|
20
|
-
function max specializes IntegerFunctions::max { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
|
|
21
|
-
function min specializes IntegerFunctions::min { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
|
|
22
|
-
|
|
23
|
-
function '==' specializes IntegerFunctions::'==' { in x: Natural[0..1]; in y: Natural[0..1]; return : Boolean[1]; }
|
|
24
|
-
|
|
25
|
-
function ToString specializes IntegerFunctions::ToString { in x: Natural[1]; return : String[1]; }
|
|
26
|
-
function ToNatural{ in x: String[1]; return : Natural[1]; }
|
|
27
|
-
}
|
|
1
|
+
standard library package NaturalFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines functions on Natural values, including concrete specialization of the
|
|
5
|
+
* general arithmetic and comparison operations.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
public import ScalarValues::*;
|
|
9
|
+
|
|
10
|
+
function '+' specializes IntegerFunctions::'+' { in x: Natural[1]; in y: Natural[0..1]; return : Natural[1]; }
|
|
11
|
+
function '*' specializes IntegerFunctions::'*' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
|
|
12
|
+
function '/' specializes IntegerFunctions::'/' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
|
|
13
|
+
function '%' specializes IntegerFunctions::'%' { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
|
|
14
|
+
|
|
15
|
+
function '<' specializes IntegerFunctions::'<' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
|
|
16
|
+
function '>' specializes IntegerFunctions::'>' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
|
|
17
|
+
function '<=' specializes IntegerFunctions::'<=' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
|
|
18
|
+
function '>=' specializes IntegerFunctions::'>=' { in x: Natural[1]; in y: Natural[1]; return : Boolean[1]; }
|
|
19
|
+
|
|
20
|
+
function max specializes IntegerFunctions::max { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
|
|
21
|
+
function min specializes IntegerFunctions::min { in x: Natural[1]; in y: Natural[1]; return : Natural[1]; }
|
|
22
|
+
|
|
23
|
+
function '==' specializes IntegerFunctions::'==' { in x: Natural[0..1]; in y: Natural[0..1]; return : Boolean[1]; }
|
|
24
|
+
|
|
25
|
+
function ToString specializes IntegerFunctions::ToString { in x: Natural[1]; return : String[1]; }
|
|
26
|
+
function ToNatural{ in x: String[1]; return : Natural[1]; }
|
|
27
|
+
}
|
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NumericalFunctions.kerml
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
standard library package NumericalFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines abstract functions on Numerical values for general arithmetic and comparison operations.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
public import ScalarValues::*;
|
|
8
|
-
private import ControlFunctions::reduce;
|
|
9
|
-
|
|
10
|
-
abstract function isZero{ in x: NumericalValue[1]; return : Boolean; }
|
|
11
|
-
abstract function isUnit{ in x : NumericalValue[1]; return : Boolean; }
|
|
12
|
-
|
|
13
|
-
abstract function abs{ in x: NumericalValue[1]; return : NumericalValue[1]; }
|
|
14
|
-
|
|
15
|
-
abstract function '+' specializes ScalarFunctions::'+' { in x: NumericalValue[1]; in y: NumericalValue[0..1]; return : NumericalValue[1]; }
|
|
16
|
-
abstract function '-' specializes ScalarFunctions::'-' { in x: NumericalValue[1]; in y: NumericalValue[0..1]; return : NumericalValue[1]; }
|
|
17
|
-
abstract function '*' specializes ScalarFunctions::'*' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
18
|
-
abstract function '/' specializes ScalarFunctions::'/' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
19
|
-
abstract function '**' specializes ScalarFunctions::'**' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
20
|
-
abstract function '^' specializes ScalarFunctions::'^' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
21
|
-
abstract function '%' specializes ScalarFunctions::'%' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
22
|
-
|
|
23
|
-
abstract function '<' specializes ScalarFunctions::'<' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
|
|
24
|
-
abstract function '>' specializes ScalarFunctions::'>' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
|
|
25
|
-
abstract function '<=' specializes ScalarFunctions::'<=' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
|
|
26
|
-
abstract function '>=' specializes ScalarFunctions::'>=' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
|
|
27
|
-
|
|
28
|
-
abstract function max specializes ScalarFunctions::max { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
29
|
-
abstract function min specializes ScalarFunctions::min { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
30
|
-
|
|
31
|
-
abstract function sum { in collection: ScalarValue[0..*]; return : ScalarValue[1]; }
|
|
32
|
-
abstract function product { in collection: ScalarValue[0..*]; return : ScalarValue[1]; }
|
|
33
|
-
|
|
34
|
-
function sum0 { in collection: NumericalValue[0..*]; in zero: ScalarValue[1];
|
|
35
|
-
inv { isZero(zero) }
|
|
36
|
-
return : ScalarValue = collection->reduce '+' ?? zero;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function product1 { in collection: ScalarValue[0..*]; in one: ScalarValue[1];
|
|
40
|
-
inv { isUnit(one) }
|
|
41
|
-
return : ScalarValue = collection->reduce '*' ?? one;
|
|
42
|
-
}
|
|
1
|
+
standard library package NumericalFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines abstract functions on Numerical values for general arithmetic and comparison operations.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
public import ScalarValues::*;
|
|
8
|
+
private import ControlFunctions::reduce;
|
|
9
|
+
|
|
10
|
+
abstract function isZero{ in x: NumericalValue[1]; return : Boolean; }
|
|
11
|
+
abstract function isUnit{ in x : NumericalValue[1]; return : Boolean; }
|
|
12
|
+
|
|
13
|
+
abstract function abs{ in x: NumericalValue[1]; return : NumericalValue[1]; }
|
|
14
|
+
|
|
15
|
+
abstract function '+' specializes ScalarFunctions::'+' { in x: NumericalValue[1]; in y: NumericalValue[0..1]; return : NumericalValue[1]; }
|
|
16
|
+
abstract function '-' specializes ScalarFunctions::'-' { in x: NumericalValue[1]; in y: NumericalValue[0..1]; return : NumericalValue[1]; }
|
|
17
|
+
abstract function '*' specializes ScalarFunctions::'*' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
18
|
+
abstract function '/' specializes ScalarFunctions::'/' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
19
|
+
abstract function '**' specializes ScalarFunctions::'**' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
20
|
+
abstract function '^' specializes ScalarFunctions::'^' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
21
|
+
abstract function '%' specializes ScalarFunctions::'%' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
22
|
+
|
|
23
|
+
abstract function '<' specializes ScalarFunctions::'<' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
|
|
24
|
+
abstract function '>' specializes ScalarFunctions::'>' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
|
|
25
|
+
abstract function '<=' specializes ScalarFunctions::'<=' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
|
|
26
|
+
abstract function '>=' specializes ScalarFunctions::'>=' { in x: NumericalValue[1]; in y: NumericalValue[1]; return : Boolean[1]; }
|
|
27
|
+
|
|
28
|
+
abstract function max specializes ScalarFunctions::max { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
29
|
+
abstract function min specializes ScalarFunctions::min { in x: NumericalValue[1]; in y: NumericalValue[1]; return : NumericalValue[1]; }
|
|
30
|
+
|
|
31
|
+
abstract function sum { in collection: ScalarValue[0..*]; return : ScalarValue[1]; }
|
|
32
|
+
abstract function product { in collection: ScalarValue[0..*]; return : ScalarValue[1]; }
|
|
33
|
+
|
|
34
|
+
function sum0 { in collection: NumericalValue[0..*]; in zero: ScalarValue[1];
|
|
35
|
+
inv { isZero(zero) }
|
|
36
|
+
return : ScalarValue = collection->reduce '+' ?? zero;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function product1 { in collection: ScalarValue[0..*]; in one: ScalarValue[1];
|
|
40
|
+
inv { isUnit(one) }
|
|
41
|
+
return : ScalarValue = collection->reduce '*' ?? one;
|
|
42
|
+
}
|
|
43
43
|
}
|
package/resources/sysml.library/Kernel Libraries/Kernel Function Library/OccurrenceFunctions.kerml
CHANGED
|
@@ -1,154 +1,154 @@
|
|
|
1
|
-
standard library package OccurrenceFunctions {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package defines utility functions that operate on occurrences, primarily related to
|
|
5
|
-
* time during which those occurrences exist.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
private import Occurrences::Occurrence;
|
|
9
|
-
private import Occurrences::HappensDuring;
|
|
10
|
-
private import ScalarValues::Boolean;
|
|
11
|
-
private import ScalarValues::Positive;
|
|
12
|
-
private import SequenceFunctions::notEmpty;
|
|
13
|
-
private import SequenceFunctions::size;
|
|
14
|
-
private import SequenceFunctions::add;
|
|
15
|
-
private import SequenceFunctions::addAt;
|
|
16
|
-
private import SequenceFunctions::remove;
|
|
17
|
-
private import SequenceFunctions::removeAt;
|
|
18
|
-
private import ControlFunctions::forAll;
|
|
19
|
-
|
|
20
|
-
function '===' specializes BaseFunctions::'===' {
|
|
21
|
-
doc
|
|
22
|
-
/*
|
|
23
|
-
* Test whether two occurrences are portions of the same life. That is, whether they
|
|
24
|
-
* represent different portions of the same entity (colloquially, whether they have
|
|
25
|
-
* the same "identity").
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
in x: Occurrence[0..1];
|
|
29
|
-
in y: Occurrence[0..1];
|
|
30
|
-
|
|
31
|
-
return : Boolean[1] = x.portionOfLife == y.portionOfLife;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function isDuring {
|
|
35
|
-
doc
|
|
36
|
-
/*
|
|
37
|
-
* Test whether a performance of this function happens during the input occurrence.
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
in occ: Occurrence[1];
|
|
41
|
-
|
|
42
|
-
private connector all during: HappensDuring[0..1] from self to occ;
|
|
43
|
-
|
|
44
|
-
return : Boolean[1] = notEmpty(during);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function create {
|
|
48
|
-
doc
|
|
49
|
-
/*
|
|
50
|
-
* Ensure that the start of a given occurrence happens during a performance of this
|
|
51
|
-
* function. The occurrence is also returned from the function.
|
|
52
|
-
*/
|
|
53
|
-
|
|
54
|
-
inout occ: Occurrence[1];
|
|
55
|
-
|
|
56
|
-
private connector : HappensDuring from occ.startShot to self;
|
|
57
|
-
|
|
58
|
-
return : Occurrence[1] = occ;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function destroy {
|
|
62
|
-
doc
|
|
63
|
-
/*
|
|
64
|
-
* Ensure that the end of a given occurrence happens during a performance of this
|
|
65
|
-
* function. The occurrence is also returned from the function.
|
|
66
|
-
*/
|
|
67
|
-
|
|
68
|
-
inout occ: Occurrence[0..1];
|
|
69
|
-
|
|
70
|
-
private connector : HappensDuring from [0..1] occ.endShot to self;
|
|
71
|
-
|
|
72
|
-
return : Occurrence[0..1] = occ;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
function addNew {
|
|
76
|
-
doc
|
|
77
|
-
/*
|
|
78
|
-
* Add a newly created occurrence to the given group of occurrences and return the
|
|
79
|
-
* new occurrence.
|
|
80
|
-
*/
|
|
81
|
-
|
|
82
|
-
inout group: Occurrence[0..*] nonunique;
|
|
83
|
-
inout occ: Occurrence[1];
|
|
84
|
-
|
|
85
|
-
private composite step : add {
|
|
86
|
-
inout seq1 = group;
|
|
87
|
-
in seq2 = create(occ);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return : Occurrence[1] = occ;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
function addNewAt {
|
|
94
|
-
doc
|
|
95
|
-
/*
|
|
96
|
-
* Add a newly created occurrence to the given ordered group of occurrences at the given
|
|
97
|
-
* index and return the new occurrence.
|
|
98
|
-
*/
|
|
99
|
-
|
|
100
|
-
inout group: Occurrence[0..*] ordered nonunique;
|
|
101
|
-
inout occ: Occurrence[1];
|
|
102
|
-
in index: Positive[1];
|
|
103
|
-
|
|
104
|
-
private composite step : addAt {
|
|
105
|
-
inout seq = group;
|
|
106
|
-
in values = create(occ);
|
|
107
|
-
in startIndex = index;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return : Occurrence[1] = occ;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
behavior removeOld {
|
|
114
|
-
doc
|
|
115
|
-
/*
|
|
116
|
-
* Remove a given occurrence from a group of occurrences and destroy it.
|
|
117
|
-
*/
|
|
118
|
-
|
|
119
|
-
inout group: Occurrence[0..*] nonunique;
|
|
120
|
-
inout occ: Occurrence[0..1];
|
|
121
|
-
|
|
122
|
-
private composite step removeStep : remove {
|
|
123
|
-
inout seq = group;
|
|
124
|
-
in values = occ;
|
|
125
|
-
}
|
|
126
|
-
private succession removeStep then destroyStep;
|
|
127
|
-
private composite step destroyStep : destroy {
|
|
128
|
-
inout occ = removeOld::occ;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
behavior removeOldAt {
|
|
134
|
-
doc
|
|
135
|
-
/*
|
|
136
|
-
* Removes the occurrence at a given index in an ordered group of occurrences
|
|
137
|
-
* and destroy it.
|
|
138
|
-
*/
|
|
139
|
-
inout group: Occurrence[0..*] ordered nonunique;
|
|
140
|
-
in index: Positive[1];
|
|
141
|
-
|
|
142
|
-
private feature oldOcc = group#(index);
|
|
143
|
-
|
|
144
|
-
private composite step removeStep : remove {
|
|
145
|
-
inout seq = group;
|
|
146
|
-
in index = removeOldAt::index;
|
|
147
|
-
}
|
|
148
|
-
private succession removeStep then destroyStep;
|
|
149
|
-
private composite step destroyStep : destroy {
|
|
150
|
-
inout occ = oldOcc;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
}
|
|
1
|
+
standard library package OccurrenceFunctions {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package defines utility functions that operate on occurrences, primarily related to
|
|
5
|
+
* time during which those occurrences exist.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
private import Occurrences::Occurrence;
|
|
9
|
+
private import Occurrences::HappensDuring;
|
|
10
|
+
private import ScalarValues::Boolean;
|
|
11
|
+
private import ScalarValues::Positive;
|
|
12
|
+
private import SequenceFunctions::notEmpty;
|
|
13
|
+
private import SequenceFunctions::size;
|
|
14
|
+
private import SequenceFunctions::add;
|
|
15
|
+
private import SequenceFunctions::addAt;
|
|
16
|
+
private import SequenceFunctions::remove;
|
|
17
|
+
private import SequenceFunctions::removeAt;
|
|
18
|
+
private import ControlFunctions::forAll;
|
|
19
|
+
|
|
20
|
+
function '===' specializes BaseFunctions::'===' {
|
|
21
|
+
doc
|
|
22
|
+
/*
|
|
23
|
+
* Test whether two occurrences are portions of the same life. That is, whether they
|
|
24
|
+
* represent different portions of the same entity (colloquially, whether they have
|
|
25
|
+
* the same "identity").
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
in x: Occurrence[0..1];
|
|
29
|
+
in y: Occurrence[0..1];
|
|
30
|
+
|
|
31
|
+
return : Boolean[1] = x.portionOfLife == y.portionOfLife;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
function isDuring {
|
|
35
|
+
doc
|
|
36
|
+
/*
|
|
37
|
+
* Test whether a performance of this function happens during the input occurrence.
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
in occ: Occurrence[1];
|
|
41
|
+
|
|
42
|
+
private connector all during: HappensDuring[0..1] from self to occ;
|
|
43
|
+
|
|
44
|
+
return : Boolean[1] = notEmpty(during);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function create {
|
|
48
|
+
doc
|
|
49
|
+
/*
|
|
50
|
+
* Ensure that the start of a given occurrence happens during a performance of this
|
|
51
|
+
* function. The occurrence is also returned from the function.
|
|
52
|
+
*/
|
|
53
|
+
|
|
54
|
+
inout occ: Occurrence[1];
|
|
55
|
+
|
|
56
|
+
private connector : HappensDuring from occ.startShot to self;
|
|
57
|
+
|
|
58
|
+
return : Occurrence[1] = occ;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function destroy {
|
|
62
|
+
doc
|
|
63
|
+
/*
|
|
64
|
+
* Ensure that the end of a given occurrence happens during a performance of this
|
|
65
|
+
* function. The occurrence is also returned from the function.
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
inout occ: Occurrence[0..1];
|
|
69
|
+
|
|
70
|
+
private connector : HappensDuring from [0..1] occ.endShot to self;
|
|
71
|
+
|
|
72
|
+
return : Occurrence[0..1] = occ;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function addNew {
|
|
76
|
+
doc
|
|
77
|
+
/*
|
|
78
|
+
* Add a newly created occurrence to the given group of occurrences and return the
|
|
79
|
+
* new occurrence.
|
|
80
|
+
*/
|
|
81
|
+
|
|
82
|
+
inout group: Occurrence[0..*] nonunique;
|
|
83
|
+
inout occ: Occurrence[1];
|
|
84
|
+
|
|
85
|
+
private composite step : add {
|
|
86
|
+
inout seq1 = group;
|
|
87
|
+
in seq2 = create(occ);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return : Occurrence[1] = occ;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function addNewAt {
|
|
94
|
+
doc
|
|
95
|
+
/*
|
|
96
|
+
* Add a newly created occurrence to the given ordered group of occurrences at the given
|
|
97
|
+
* index and return the new occurrence.
|
|
98
|
+
*/
|
|
99
|
+
|
|
100
|
+
inout group: Occurrence[0..*] ordered nonunique;
|
|
101
|
+
inout occ: Occurrence[1];
|
|
102
|
+
in index: Positive[1];
|
|
103
|
+
|
|
104
|
+
private composite step : addAt {
|
|
105
|
+
inout seq = group;
|
|
106
|
+
in values = create(occ);
|
|
107
|
+
in startIndex = index;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return : Occurrence[1] = occ;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
behavior removeOld {
|
|
114
|
+
doc
|
|
115
|
+
/*
|
|
116
|
+
* Remove a given occurrence from a group of occurrences and destroy it.
|
|
117
|
+
*/
|
|
118
|
+
|
|
119
|
+
inout group: Occurrence[0..*] nonunique;
|
|
120
|
+
inout occ: Occurrence[0..1];
|
|
121
|
+
|
|
122
|
+
private composite step removeStep : remove {
|
|
123
|
+
inout seq = group;
|
|
124
|
+
in values = occ;
|
|
125
|
+
}
|
|
126
|
+
private succession removeStep then destroyStep;
|
|
127
|
+
private composite step destroyStep : destroy {
|
|
128
|
+
inout occ = removeOld::occ;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
behavior removeOldAt {
|
|
134
|
+
doc
|
|
135
|
+
/*
|
|
136
|
+
* Removes the occurrence at a given index in an ordered group of occurrences
|
|
137
|
+
* and destroy it.
|
|
138
|
+
*/
|
|
139
|
+
inout group: Occurrence[0..*] ordered nonunique;
|
|
140
|
+
in index: Positive[1];
|
|
141
|
+
|
|
142
|
+
private feature oldOcc = group#(index);
|
|
143
|
+
|
|
144
|
+
private composite step removeStep : remove {
|
|
145
|
+
inout seq = group;
|
|
146
|
+
in index = removeOldAt::index;
|
|
147
|
+
}
|
|
148
|
+
private succession removeStep then destroyStep;
|
|
149
|
+
private composite step destroyStep : destroy {
|
|
150
|
+
inout occ = oldOcc;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
}
|
|
154
154
|
}
|