armodel 1.8.0__py3-none-any.whl → 1.8.2__py3-none-any.whl

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.
Files changed (49) hide show
  1. armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +1 -2
  2. armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +14 -14
  3. armodel/models/M2/AUTOSARTemplates/CommonStructure/FlatMap.py +2 -3
  4. armodel/models/M2/AUTOSARTemplates/CommonStructure/Implementation.py +1 -1
  5. armodel/models/M2/AUTOSARTemplates/CommonStructure/ImplementationDataTypes.py +7 -7
  6. armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +1 -1
  7. armodel/models/M2/AUTOSARTemplates/CommonStructure/ModeDeclaration.py +4 -4
  8. armodel/models/M2/AUTOSARTemplates/CommonStructure/ResourceConsumption/__init__.py +3 -3
  9. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/ExecutionOrderConstraint.py +3 -3
  10. armodel/models/M2/AUTOSARTemplates/CommonStructure/Timing/TimingConstraint/TimingExtensions.py +3 -3
  11. armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +86 -9
  12. armodel/models/M2/AUTOSARTemplates/ECUCParameterDefTemplate.py +1249 -0
  13. armodel/models/M2/AUTOSARTemplates/GenericStructure/AbstractStructure.py +13 -10
  14. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +238 -225
  15. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ArObject.py +5 -4
  16. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +46 -25
  17. armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +33 -3
  18. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Components/__init__.py +18 -20
  19. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Datatype/Datatypes.py +23 -19
  20. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/EndToEndProtection.py +4 -4
  21. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/PortInterface/__init__.py +71 -27
  22. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ServiceMapping.py +9 -9
  23. armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +172 -128
  24. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +11 -11
  25. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +8 -8
  26. armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +2 -2
  27. armodel/models/M2/AUTOSARTemplates/SystemTemplate/NetworkManagement.py +6 -6
  28. armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +6 -6
  29. armodel/models/M2/MSR/AsamHdo/AdminData.py +101 -8
  30. armodel/parser/abstract_arxml_parser.py +8 -5
  31. armodel/parser/arxml_parser.py +332 -16
  32. armodel/tests/test_armodel/models/test_ECUCParameterDefTemplate.py +116 -0
  33. armodel/tests/test_armodel/models/test_Identifiable.py +85 -0
  34. armodel/tests/test_armodel/models/test_ar_object.py +85 -86
  35. armodel/tests/test_armodel/models/test_ar_package.py +70 -70
  36. armodel/tests/test_armodel/models/test_ar_ref.py +36 -36
  37. armodel/tests/test_armodel/models/test_common_structure.py +37 -35
  38. armodel/tests/test_armodel/models/test_datatype.py +4 -4
  39. armodel/tests/test_armodel/models/test_general_structure.py +19 -18
  40. armodel/tests/test_armodel/models/test_port_interface.py +2 -6
  41. armodel/tests/test_armodel/parser/test_arxml_parser.py +8 -8
  42. armodel/writer/abstract_arxml_writer.py +6 -2
  43. armodel/writer/arxml_writer.py +376 -29
  44. {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/METADATA +20 -1
  45. {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/RECORD +49 -46
  46. {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/LICENSE +0 -0
  47. {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/WHEEL +0 -0
  48. {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/entry_points.txt +0 -0
  49. {armodel-1.8.0.dist-info → armodel-1.8.2.dist-info}/top_level.txt +0 -0
@@ -6,16 +6,21 @@ from .....M2.AUTOSARTemplates.CommonStructure.InternalBehavior import InternalBe
6
6
  from .....M2.AUTOSARTemplates.SWComponentTemplate.Datatype.DataPrototypes import ParameterDataPrototype, VariableDataPrototype
7
7
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.IncludedDataTypes import IncludedDataTypeSet
8
8
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PerInstanceMemory import PerInstanceMemory
9
- from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent, DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent, ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent, SwcModeSwitchEvent, TimingEvent
9
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import AsynchronousServerCallReturnsEvent, BackgroundEvent
10
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import DataReceivedEvent, InitEvent, InternalTriggerOccurredEvent
11
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import ModeSwitchedAckEvent, OperationInvokedEvent, RTEEvent
12
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.RTEEvents import SwcModeSwitchEvent, TimingEvent
10
13
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import SwcServiceDependency
11
14
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral, Boolean, RefType, ARBoolean
12
15
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.DataElements import ParameterAccess, VariableAccess
13
16
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import ServerCallPoint
14
- from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint, ModeSwitchPoint
17
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import IncludedModeDeclarationGroupSet, ModeAccessPoint
18
+ from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ModeDeclarationGroup import ModeSwitchPoint
15
19
  from .....M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.Trigger import InternalTriggeringPoint
16
20
  from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
17
21
  from .....M2.AUTOSARTemplates.CommonStructure.InternalBehavior import ExecutableEntity
18
22
 
23
+
19
24
  class RunnableEntityArgument(ARObject):
20
25
  def __init__(self):
21
26
  super().__init__()
@@ -28,7 +33,8 @@ class RunnableEntityArgument(ARObject):
28
33
  def setSymbol(self, value):
29
34
  self.symbol = value
30
35
  return self
31
-
36
+
37
+
32
38
  class AsynchronousServerCallResultPoint(AbstractAccessPoint):
33
39
  def __init__(self, parent: ARObject, short_name: str):
34
40
  super().__init__(parent, short_name)
@@ -40,12 +46,14 @@ class AsynchronousServerCallResultPoint(AbstractAccessPoint):
40
46
 
41
47
  def setAsynchronousServerCallPointRef(self, value):
42
48
  self.asynchronousServerCallPointRef = value
43
- return self
49
+ return self
50
+
44
51
 
45
52
  class AsynchronousServerCallPoint(ServerCallPoint):
46
53
  def __init__(self, parent: ARObject, short_name: str):
47
54
  super().__init__(parent, short_name)
48
55
 
56
+
49
57
  class SynchronousServerCallPoint(ServerCallPoint):
50
58
  def __init__(self, parent: ARObject, short_name: str):
51
59
  super().__init__(parent, short_name)
@@ -59,42 +67,57 @@ class SynchronousServerCallPoint(ServerCallPoint):
59
67
  self.calledFromWithinExclusiveAreaRef = value
60
68
  return self
61
69
 
70
+
62
71
  class RunnableEntity(ExecutableEntity):
63
72
  def __init__(self, parent: ARObject, short_name: str):
64
73
  super().__init__(parent, short_name)
65
74
 
66
- self.arguments = [] # type: List[RunnableEntityArgument]
67
- self.asynchronousServerCallResultPoints = [] # type: List[AsynchronousServerCallResultPoint]
75
+ # type: List[RunnableEntityArgument]
76
+ self.arguments = []
77
+ # type: List[AsynchronousServerCallResultPoint]
78
+ self.asynchronousServerCallResultPoints = []
68
79
  self.canBeInvokedConcurrently = None # type: ARBoolean
69
- self.dataReadAccesses = {} # type: Dict[str, VariableAccess]
70
- self.dataReceivePointByArguments = {} # type: Dict[str, VariableAccess]
71
- self.dataReceivePointByValues = {} # type: Dict[str, VariableAccess]
72
- self.dataSendPoints = {} # type: Dict[str, VariableAccess]
73
- self.dataWriteAccesses = {} # type: Dict[str, VariableAccess]
74
- self.externalTriggeringPoints = {} # type: Dict[str, ExternalTriggeringPoint]
75
- self.internalTriggeringPoints = {} # type: Dict[str, InternalTriggeringPoint]
80
+ # type: Dict[str, VariableAccess]
81
+ self.dataReadAccesses = {}
82
+ # type: Dict[str, VariableAccess]
83
+ self.dataReceivePointByArguments = {}
84
+ # type: Dict[str, VariableAccess]
85
+ self.dataReceivePointByValues = {}
86
+ # type: Dict[str, VariableAccess]
87
+ self.dataSendPoints = {}
88
+ # type: Dict[str, VariableAccess]
89
+ self.dataWriteAccesses = {}
90
+ # type: Dict[str, ExternalTriggeringPoint]
91
+ self.externalTriggeringPoints = {}
92
+ # type: Dict[str, InternalTriggeringPoint]
93
+ self.internalTriggeringPoints = {}
76
94
  self.modeAccessPoints = [] # type: List[ModeAccessPoint]
77
95
  self.modeSwitchPoints = [] # type: List[ModeSwitchPoint]
78
- self.parameterAccesses = {} # type: Dict[str, ParameterAccess]
79
- self.readLocalVariables = {} # type: Dict[str, VariableAccess]
80
- self.serverCallPoints = {} # type: Dict[str, ServerCallPoint]
96
+ # type: Dict[str, ParameterAccess]
97
+ self.parameterAccesses = {}
98
+ # type: Dict[str, VariableAccess]
99
+ self.readLocalVariables = {}
100
+ # type: Dict[str, ServerCallPoint]
101
+ self.serverCallPoints = {}
81
102
  self.symbol = None # type: ARLiteral
82
- self.waitPoints = {} # type: Dict[str, WaitPoint]
83
- self.writtenLocalVariables = {} # type: Dict[str, VariableAccess]
103
+ # type: Dict[str, WaitPoint]
104
+ self.waitPoints = {}
105
+ # type: Dict[str, VariableAccess]
106
+ self.writtenLocalVariables = {}
84
107
 
85
108
  def _createVariableAccess(self, short_name, variable_accesses: Dict[str, VariableAccess]):
86
- if (short_name not in self.elements):
109
+ if not self.IsElementExists(short_name):
87
110
  variable_access = VariableAccess(self, short_name)
88
111
  variable_accesses[short_name] = variable_access
89
112
  return variable_accesses[short_name]
90
-
113
+
91
114
  def getArguments(self):
92
115
  return self.arguments
93
116
 
94
117
  def addArgument(self, value):
95
118
  self.arguments.append(value)
96
119
  return self
97
-
120
+
98
121
  def getCanBeInvokedConcurrently(self):
99
122
  return self.canBeInvokedConcurrently
100
123
 
@@ -103,25 +126,25 @@ class RunnableEntity(ExecutableEntity):
103
126
  return self
104
127
 
105
128
  def createDataReadAccess(self, short_name: str) -> VariableAccess:
106
- return self._createVariableAccess(short_name, self.dataReadAccesses)
129
+ return self._createVariableAccess(short_name, self.dataReadAccesses)
107
130
 
108
131
  def getDataReadAccesses(self) -> List[VariableAccess]:
109
132
  return sorted(self.dataReadAccesses.values(), key=lambda v: v.short_name)
110
-
133
+
111
134
  def createDataWriteAccess(self, short_name: str) -> VariableAccess:
112
- return self._createVariableAccess(short_name, self.dataWriteAccesses)
135
+ return self._createVariableAccess(short_name, self.dataWriteAccesses)
113
136
 
114
137
  def getDataWriteAccesses(self) -> List[VariableAccess]:
115
138
  return sorted(self.dataWriteAccesses.values(), key=lambda v: v.short_name)
116
139
 
117
140
  def createDataReceivePointByArgument(self, short_name: str) -> VariableAccess:
118
- return self._createVariableAccess(short_name, self.dataReceivePointByArguments)
141
+ return self._createVariableAccess(short_name, self.dataReceivePointByArguments)
119
142
 
120
143
  def getDataReceivePointByArguments(self) -> List[VariableAccess]:
121
144
  return sorted(self.dataReceivePointByArguments.values(), key=lambda v: v.short_name)
122
145
 
123
146
  def createDataReceivePointByValue(self, short_name: str) -> VariableAccess:
124
- return self._createVariableAccess(short_name, self.dataReceivePointByValues)
147
+ return self._createVariableAccess(short_name, self.dataReceivePointByValues)
125
148
 
126
149
  def getDataReceivePointByValues(self) -> List[VariableAccess]:
127
150
  return sorted(self.dataReceivePointByValues.values(), key=lambda v: v.short_name)
@@ -130,45 +153,48 @@ class RunnableEntity(ExecutableEntity):
130
153
  return self._createVariableAccess(short_name, self.dataSendPoints)
131
154
 
132
155
  def getDataSendPoints(self) -> List[VariableAccess]:
133
- return sorted(self.dataSendPoints.values(), key=lambda v: v.short_name)
156
+ # return sorted(self.dataSendPoints.values(), key=lambda v: v.short_name)
157
+ return self.dataSendPoints.values()
134
158
 
135
159
  def createReadLocalVariable(self, short_name: str) -> VariableAccess:
136
160
  return self._createVariableAccess(short_name, self.readLocalVariables)
137
161
 
138
162
  def getReadLocalVariables(self) -> List[VariableAccess]:
139
- return sorted(self.readLocalVariables.values(), key=lambda v: v.short_name)
163
+ # return sorted(self.readLocalVariables.values(), key=lambda v: v.short_name)
164
+ return self.readLocalVariables.values()
140
165
 
141
166
  def createWrittenLocalVariable(self, short_name: str) -> VariableAccess:
142
167
  return self._createVariableAccess(short_name, self.writtenLocalVariables)
143
168
 
144
169
  def getWrittenLocalVariables(self) -> List[VariableAccess]:
145
- return sorted(self.writtenLocalVariables.values(), key=lambda v: v.short_name)
146
-
170
+ # return sorted(self.writtenLocalVariables.values(), key=lambda v: v.short_name)
171
+ return self.writtenLocalVariables.values()
172
+
147
173
  def getParameterAccesses(self) -> List[ParameterAccess]:
148
- return list(sorted(filter(lambda a: isinstance(a, ParameterAccess), self.elements.values()), key= lambda o:o.short_name))
149
-
174
+ return list(sorted(filter(lambda a: isinstance(a, ParameterAccess), self.elements), key=lambda o: o.short_name))
175
+
150
176
  def createParameterAccess(self, short_name: str) -> ParameterAccess:
151
- if (short_name not in self.elements):
177
+ if not self.IsElementExists(short_name):
152
178
  access = ParameterAccess(self, short_name)
153
179
  self.addElement(access)
154
180
  return self.getElement(short_name)
155
-
181
+
156
182
  def createSynchronousServerCallPoint(self, short_name: str) -> SynchronousServerCallPoint:
157
183
  if (short_name not in self.serverCallPoints):
158
184
  point = SynchronousServerCallPoint(self, short_name)
159
185
  self.addElement(point)
160
186
  return self.getElement(short_name)
161
- #self.serverCallPoints[short_name] = server_call_point
162
- #return self.serverCallPoints[short_name]
187
+ # self.serverCallPoints[short_name] = server_call_point
188
+ # return self.serverCallPoints[short_name]
163
189
 
164
190
  def createAsynchronousServerCallPoint(self, short_name: str) -> AsynchronousServerCallPoint:
165
191
  if (short_name not in self.serverCallPoints):
166
192
  point = AsynchronousServerCallPoint(self, short_name)
167
193
  self.addElement(point)
168
194
  return self.getElement(short_name)
169
- #self.serverCallPoints[short_name] = server_call_point
170
- #return self.serverCallPoints[short_name]
171
-
195
+ # self.serverCallPoints[short_name] = server_call_point
196
+ # return self.serverCallPoints[short_name]
197
+
172
198
  def createAsynchronousServerCallResultPoint(self, short_name: str) -> AsynchronousServerCallResultPoint:
173
199
  if (short_name not in self.serverCallPoints):
174
200
  point = AsynchronousServerCallResultPoint(self, short_name)
@@ -176,42 +202,42 @@ class RunnableEntity(ExecutableEntity):
176
202
  return self.getElement(short_name)
177
203
 
178
204
  def getSynchronousServerCallPoint(self) -> List[SynchronousServerCallPoint]:
179
- return list(sorted(filter(lambda a: isinstance(a, SynchronousServerCallPoint), self.elements.values()), key= lambda o:o.getShortName()))
180
-
205
+ return list(sorted(filter(lambda a: isinstance(a, SynchronousServerCallPoint), self.elements), key=lambda o: o.getShortName()))
206
+
181
207
  def getAsynchronousServerCallPoint(self) -> List[AsynchronousServerCallPoint]:
182
- return list(sorted(filter(lambda a: isinstance(a, AsynchronousServerCallPoint), self.elements.values()), key= lambda o:o.getShortName()))
183
-
208
+ return list(sorted(filter(lambda a: isinstance(a, AsynchronousServerCallPoint), self.elements), key=lambda o: o.getShortName()))
209
+
184
210
  def getAsynchronousServerCallResultPoints(self) -> List[AsynchronousServerCallResultPoint]:
185
- return list(sorted(filter(lambda a: isinstance(a, AsynchronousServerCallResultPoint), self.elements.values()), key= lambda o:o.getShortName()))
211
+ return list(sorted(filter(lambda a: isinstance(a, AsynchronousServerCallResultPoint), self.elements), key=lambda o: o.getShortName())) # noqa E501
186
212
 
187
213
  def getServerCallPoints(self) -> List[ServerCallPoint]:
188
- return list(sorted(filter(lambda a: isinstance(a, ServerCallPoint), self.elements.values()), key= lambda o:o.getShortName()))
214
+ return list(sorted(filter(lambda a: isinstance(a, ServerCallPoint), self.elements), key=lambda o: o.getShortName()))
189
215
 
190
216
  def createInternalTriggeringPoint(self, short_name: str) -> InternalTriggeringPoint:
191
- if (short_name not in self.elements):
217
+ if not self.IsElementExists(short_name):
192
218
  point = InternalTriggeringPoint(self, short_name)
193
- self.elements[point.short_name] = point
194
- return self.elements[short_name]
219
+ self.addElement(point)
220
+ return self.getElement(short_name, InternalTriggeringPoint)
195
221
 
196
222
  def getInternalTriggeringPoints(self) -> List[InternalTriggeringPoint]:
197
223
  return filter(lambda o: isinstance(o, InternalTriggeringPoint), self.elements)
198
-
224
+
199
225
  def getModeAccessPoints(self) -> List[ModeAccessPoint]:
200
226
  return self.modeAccessPoints
201
-
227
+
202
228
  def addModeAccessPoint(self, value):
203
229
  self.modeAccessPoints.append(value)
204
-
230
+
205
231
  def getModeSwitchPoints(self) -> List[ModeSwitchPoint]:
206
- return list(sorted(filter(lambda a: isinstance(a, ModeSwitchPoint), self.elements.values()), key= lambda o:o.short_name))
207
-
232
+ return list(sorted(filter(lambda a: isinstance(a, ModeSwitchPoint), self.elements), key=lambda o: o.short_name))
233
+
208
234
  def createModeSwitchPoint(self, short_name: str) -> ModeSwitchPoint:
209
- if (short_name not in self.elements):
235
+ if not self.IsElementExists(short_name):
210
236
  access = ModeSwitchPoint(self, short_name)
211
- self.elements[short_name] = access
237
+ self.addElement(access)
212
238
  self.modeSwitchPoints.append(access)
213
- return self.elements[short_name]
214
-
239
+ return self.getElement(short_name, ModeSwitchPoint)
240
+
215
241
  def getSymbol(self):
216
242
  return self.symbol
217
243
 
@@ -224,29 +250,44 @@ class SwcInternalBehavior(InternalBehavior):
224
250
  def __init__(self, parent: ARObject, short_name: str):
225
251
  super().__init__(parent, short_name)
226
252
 
227
- self.arTypedPerInstanceMemories = [] # type: List[VariableDataPrototype]
228
- self.events = [] # type: List[RTEEvent]
229
- self.exclusiveAreaPolicies = [] # type: List[SwcExclusiveAreaPolicy]
230
- self.explicitInterRunnableVariables = [] # type: List[VariableDataPrototype]
253
+ # type: List[VariableDataPrototype]
254
+ self.arTypedPerInstanceMemories = []
255
+ # type: List[RTEEvent]
256
+ self.events = []
257
+ # type: List[SwcExclusiveAreaPolicy]
258
+ self.exclusiveAreaPolicies = []
259
+ # type: List[VariableDataPrototype]
260
+ self.explicitInterRunnableVariables = []
231
261
  self.handleTerminationAndRestart = None # type: str
232
- self.implicitInterRunnableVariables = [] # type: List[VariableDataPrototype]
233
- self.includedDataTypeSets = [] # type: List[IncludedDataTypeSet]
234
- self.includedModeDeclarationGroupSets = [] # type: List[IncludedModeDeclarationGroupSet]
235
- self.instantiationDataDefProps = [] # type: List[InstantiationDataDefProps]
236
- self.perInstanceMemories = [] # type: List[PerInstanceMemory]
237
- self.perInstanceParameters = [] # type: List[ParameterDataPrototype]
238
- self.portAPIOptions = [] # type: List[PortAPIOption]
239
- self.runnables = [] # type: List[RunnableEntity]
240
- self.serviceDependencies = [] # type: List[SwcServiceDependency]
241
- self.sharedParameters = [] # type: List[ParameterDataPrototype]
262
+ # type: List[VariableDataPrototype]
263
+ self.implicitInterRunnableVariables = []
264
+ # type: List[IncludedDataTypeSet]
265
+ self.includedDataTypeSets = []
266
+ # type: List[IncludedModeDeclarationGroupSet]
267
+ self.includedModeDeclarationGroupSets = []
268
+ # type: List[InstantiationDataDefProps]
269
+ self.instantiationDataDefProps = []
270
+ # type: List[PerInstanceMemory]
271
+ self.perInstanceMemories = []
272
+ # type: List[ParameterDataPrototype]
273
+ self.perInstanceParameters = []
274
+ # type: List[PortAPIOption]
275
+ self.portAPIOptions = []
276
+ # type: List[RunnableEntity]
277
+ self.runnables = []
278
+ # type: List[SwcServiceDependency]
279
+ self.serviceDependencies = []
280
+ # type: List[ParameterDataPrototype]
281
+ self.sharedParameters = []
242
282
  self.supportsMultipleInstantiation = None # type: Boolean
243
- self.variationPointProxies = [] # type: VariationPointProxy
283
+ # type: VariationPointProxy
284
+ self.variationPointProxies = []
244
285
 
245
286
  def getArTypedPerInstanceMemories(self) -> List[VariableDataPrototype]:
246
287
  return self.arTypedPerInstanceMemories
247
-
288
+
248
289
  def createArTypedPerInstanceMemory(self, short_name: str) -> VariableDataPrototype:
249
- if (short_name not in self.elements):
290
+ if not self.IsElementExists(short_name):
250
291
  prototype = VariableDataPrototype(self, short_name)
251
292
  self.addElement(prototype)
252
293
  self.arTypedPerInstanceMemories.append(prototype)
@@ -254,14 +295,14 @@ class SwcInternalBehavior(InternalBehavior):
254
295
 
255
296
  def getExplicitInterRunnableVariables(self) -> List[VariableDataPrototype]:
256
297
  return self.explicitInterRunnableVariables
257
-
298
+
258
299
  def createExplicitInterRunnableVariable(self, short_name: str) -> VariableDataPrototype:
259
- if (short_name not in self.elements):
300
+ if not self.IsElementExists(short_name):
260
301
  prototype = VariableDataPrototype(self, short_name)
261
302
  self.addElement(prototype)
262
303
  self.explicitInterRunnableVariables.append(prototype)
263
304
  return self.getElement(short_name)
264
-
305
+
265
306
  def getHandleTerminationAndRestart(self):
266
307
  return self.handleTerminationAndRestart
267
308
 
@@ -269,7 +310,6 @@ class SwcInternalBehavior(InternalBehavior):
269
310
  self.handleTerminationAndRestart = value
270
311
  return self
271
312
 
272
-
273
313
  def getImplicitInterRunnableVariables(self) -> List[VariableDataPrototype]:
274
314
  return self.implicitInterRunnableVariables
275
315
 
@@ -290,7 +330,7 @@ class SwcInternalBehavior(InternalBehavior):
290
330
 
291
331
  def getIncludedDataTypeSets(self) -> List[IncludedDataTypeSet]:
292
332
  return self.includedDataTypeSets
293
-
333
+
294
334
  def getIncludedModeDeclarationGroupSets(self):
295
335
  return self.includedModeDeclarationGroupSets
296
336
 
@@ -300,145 +340,149 @@ class SwcInternalBehavior(InternalBehavior):
300
340
  return self
301
341
 
302
342
  def createOperationInvokedEvent(self, short_name: str) -> OperationInvokedEvent:
303
- if (short_name not in self.elements):
343
+ if not self.IsElementExists(short_name):
304
344
  event = OperationInvokedEvent(self, short_name)
305
345
  self.addElement(event)
306
- return self.getElement(short_name)
346
+ return self.getElement(short_name, OperationInvokedEvent)
307
347
 
308
348
  def createTimingEvent(self, short_name: str) -> TimingEvent:
309
- if (short_name not in self.elements):
349
+ if not self.IsElementExists(short_name):
310
350
  event = TimingEvent(self, short_name)
311
351
  self.addElement(event)
312
- return self.getElement(short_name)
352
+ return self.getElement(short_name, TimingEvent)
313
353
 
314
354
  def createInitEvent(self, short_name: str) -> InitEvent:
315
- if (short_name not in self.elements):
355
+ if not self.IsElementExists(short_name):
316
356
  event = InitEvent(self, short_name)
317
357
  self.addElement(event)
318
- return self.getElement(short_name)
319
-
358
+ return self.getElement(short_name, InitEvent)
359
+
320
360
  def createAsynchronousServerCallReturnsEvent(self, short_name: str) -> AsynchronousServerCallReturnsEvent:
321
- if (short_name not in self.elements):
361
+ if not self.IsElementExists(short_name):
322
362
  event = AsynchronousServerCallReturnsEvent(self, short_name)
323
363
  self.addElement(event)
324
- return self.getElement(short_name)
364
+ return self.getElement(short_name, AsynchronousServerCallReturnsEvent)
325
365
 
326
366
  def createDataReceivedEvent(self, short_name: str) -> DataReceivedEvent:
327
- if (short_name not in self.elements):
367
+ if not self.IsElementExists(short_name):
328
368
  event = DataReceivedEvent(self, short_name)
329
369
  self.addElement(event)
330
- return self.getElement(short_name)
370
+ return self.getElement(short_name, DataReceivedEvent)
331
371
 
332
372
  def createSwcModeSwitchEvent(self, short_name: str) -> SwcModeSwitchEvent:
333
- if (short_name not in self.elements):
373
+ if not self.IsElementExists(short_name):
334
374
  event = SwcModeSwitchEvent(self, short_name)
335
375
  self.addElement(event)
336
- return self.getElement(short_name)
376
+ return self.getElement(short_name, SwcModeSwitchEvent)
337
377
 
338
378
  def createInternalTriggerOccurredEvent(self, short_name: str) -> InternalTriggerOccurredEvent:
339
- if (short_name not in self.elements):
379
+ if not self.IsElementExists(short_name):
340
380
  event = InternalTriggerOccurredEvent(self, short_name)
341
381
  self.addElement(event)
342
- return self.getElement(short_name)
382
+ return self.getElement(short_name, InternalTriggerOccurredEvent)
343
383
 
344
384
  def createSwcServiceDependency(self, short_name: str) -> SwcServiceDependency:
345
- if (short_name not in self.elements):
385
+ if not self.IsElementExists(short_name):
346
386
  event = SwcServiceDependency(self, short_name)
347
- self.elements[short_name] = event
348
- return self.elements[short_name]
349
-
387
+ self.addElement(event)
388
+ return self.getElement(short_name, SwcServiceDependency)
389
+
350
390
  def createModeSwitchedAckEvent(self, short_name: str) -> ModeSwitchedAckEvent:
351
- if (short_name not in self.elements):
391
+ if not self.IsElementExists(short_name):
352
392
  event = ModeSwitchedAckEvent(self, short_name)
353
393
  self.addElement(event)
354
- return self.getElement(short_name)
355
-
394
+ return self.getElement(short_name, ModeSwitchedAckEvent)
395
+
356
396
  def createBackgroundEvent(self, short_name: str) -> BackgroundEvent:
357
- if (short_name not in self.elements):
397
+ if not self.IsElementExists(short_name):
358
398
  event = BackgroundEvent(self, short_name)
359
399
  self.addElement(event)
360
- return self.getElement(short_name)
400
+ return self.getElement(short_name, BackgroundEvent)
361
401
 
362
402
  def getRteEvents(self) -> List[RTEEvent]:
363
- return sorted(filter(lambda c: isinstance(c, RTEEvent), self.elements.values()), key=lambda e: e.short_name)
403
+ return sorted(filter(lambda c: isinstance(c, RTEEvent), self.elements), key=lambda e: e.short_name)
364
404
 
365
405
  def getOperationInvokedEvents(self) -> List[OperationInvokedEvent]:
366
- return sorted(filter(lambda c: isinstance(c, OperationInvokedEvent), self.elements.values()), key=lambda e: e.short_name)
406
+ return sorted(filter(lambda c: isinstance(c, OperationInvokedEvent), self.elements), key=lambda e: e.short_name)
367
407
 
368
408
  def getInitEvents(self) -> List[InitEvent]:
369
- return sorted(filter(lambda c: isinstance(c, InitEvent), self.elements.values()), key=lambda e: e.short_name)
409
+ return sorted(filter(lambda c: isinstance(c, InitEvent), self.elements), key=lambda e: e.short_name)
370
410
 
371
411
  def getTimingEvents(self) -> List[TimingEvent]:
372
- return sorted(filter(lambda c: isinstance(c, TimingEvent), self.elements.values()), key=lambda e: e.short_name)
412
+ return sorted(filter(lambda c: isinstance(c, TimingEvent), self.elements), key=lambda e: e.short_name)
373
413
 
374
414
  def getDataReceivedEvents(self) -> List[DataReceivedEvent]:
375
- return sorted(filter(lambda c: isinstance(c, DataReceivedEvent), self.elements.values()), key=lambda e: e.short_name)
415
+ return sorted(filter(lambda c: isinstance(c, DataReceivedEvent), self.elements), key=lambda e: e.short_name)
376
416
 
377
417
  def getSwcModeSwitchEvents(self) -> List[SwcModeSwitchEvent]:
378
- return sorted(filter(lambda c: isinstance(c, SwcModeSwitchEvent), self.elements.values()), key=lambda e: e.short_name)
418
+ return sorted(filter(lambda c: isinstance(c, SwcModeSwitchEvent), self.elements), key=lambda e: e.short_name)
379
419
 
380
420
  def getInternalTriggerOccurredEvents(self) -> List[InternalTriggerOccurredEvent]:
381
- return sorted(filter(lambda c: isinstance(c, InternalTriggerOccurredEvent), self.elements.values()), key= lambda e: e.short_name)
382
-
421
+ return sorted(filter(lambda c: isinstance(c, InternalTriggerOccurredEvent), self.elements), key=lambda e: e.short_name)
422
+
383
423
  def getModeSwitchedAckEvents(self) -> List[ModeSwitchedAckEvent]:
384
- return sorted(filter(lambda c: isinstance(c, ModeSwitchedAckEvent), self.elements.values()), key= lambda e: e.short_name)
385
-
424
+ return sorted(filter(lambda c: isinstance(c, ModeSwitchedAckEvent), self.elements), key=lambda e: e.short_name)
425
+
386
426
  def getBackgroundEvents(self) -> List[BackgroundEvent]:
387
- return sorted(filter(lambda c: isinstance(c, BackgroundEvent), self.elements.values()), key= lambda e: e.short_name)
427
+ return sorted(filter(lambda c: isinstance(c, BackgroundEvent), self.elements), key=lambda e: e.short_name)
388
428
 
389
429
  def getSwcServiceDependencies(self) -> List[SwcServiceDependency]:
390
- return sorted(filter(lambda c: isinstance(c, SwcServiceDependency), self.elements.values()), key= lambda e: e.short_name)
430
+ return sorted(filter(lambda c: isinstance(c, SwcServiceDependency), self.elements), key=lambda e: e.short_name)
391
431
 
392
432
  def getEvent(self, short_name: str) -> RTEEvent:
433
+ '''
393
434
  if (not isinstance(self.elements[short_name], RTEEvent)):
394
- raise ValueError("Invalid Event Type <%s> of <%s>" % type(self.elements[short_name]), short_name)
395
- return self.elements[short_name]
435
+ raise ValueError("Invalid Event Type <%s> of <%s>" %
436
+ type(self.elements[short_name]), short_name)
437
+ return self.elements[short_name]'
438
+ '''
439
+ return self.getElement(short_name, RTEEvent)
396
440
 
397
441
  def createImplicitInterRunnableVariable(self, short_name: str) -> VariableDataPrototype:
398
- if (short_name not in self.elements):
442
+ if not self.IsElementExists(short_name):
399
443
  prototype = VariableDataPrototype(self, short_name)
400
444
  self.addElement(prototype)
401
445
  self.implicitInterRunnableVariables.append(prototype)
402
446
  return self.getElement(short_name)
403
447
 
404
448
  def createPerInstanceMemory(self, short_name: str) -> PerInstanceMemory:
405
- if (short_name not in self.elements):
449
+ if not self.IsElementExists(short_name):
406
450
  memory = PerInstanceMemory(self, short_name)
407
451
  self.addElement(memory)
408
452
  self.perInstanceMemories.append(memory)
409
453
  return self.getElement(short_name)
410
454
 
411
455
  def createPerInstanceParameter(self, short_name: str) -> ParameterDataPrototype:
412
- if (short_name not in self.elements):
456
+ if not self.IsElementExists(short_name):
413
457
  prototype = ParameterDataPrototype(self, short_name)
414
458
  self.addElement(prototype)
415
459
  self.perInstanceParameters.append(prototype)
416
460
  return self.getElement(short_name)
417
461
 
418
462
  def getVariableDataPrototypes(self) -> List[VariableDataPrototype]:
419
- return sorted(filter(lambda c: isinstance(c, VariableDataPrototype), self.elements.values()), key=lambda e: e.short_name)
463
+ return sorted(filter(lambda c: isinstance(c, VariableDataPrototype), self.elements), key=lambda e: e.short_name)
420
464
 
421
465
  def createRunnableEntity(self, short_name: str) -> RunnableEntity:
422
- if (short_name not in self.elements):
466
+ if not self.IsElementExists(short_name):
423
467
  runnable = RunnableEntity(self, short_name)
424
468
  self.addElement(runnable)
425
469
  return self.getElement(short_name)
426
470
 
427
471
  def getRunnableEntities(self) -> List[RunnableEntity]:
428
- return sorted(filter(lambda c: isinstance(c, RunnableEntity), self.elements.values()), key=lambda r: r.short_name)
472
+ return sorted(filter(lambda c: isinstance(c, RunnableEntity), self.elements), key=lambda r: r.short_name)
429
473
 
430
474
  def getRunnableEntity(self, short_name) -> RunnableEntity:
431
- return self.elements[short_name]
432
-
475
+ return self.getElement(short_name, RunnableEntity)
476
+
433
477
  def getSharedParameters(self) -> List[ParameterDataPrototype]:
434
478
  return self.sharedParameters
435
-
479
+
436
480
  def createSharedParameter(self, short_name: str) -> ParameterDataPrototype:
437
- if (short_name not in self.elements):
481
+ if not self.IsElementExists(short_name):
438
482
  memory = ParameterDataPrototype(self, short_name)
439
483
  self.addElement(memory)
440
484
  self.sharedParameters.append(memory)
441
- return self.getElement(short_name)
485
+ return self.getElement(short_name)
442
486
 
443
487
  def getSupportsMultipleInstantiation(self):
444
488
  return self.supportsMultipleInstantiation
@@ -72,14 +72,14 @@ class Frame(Identifiable, metaclass=ABCMeta):
72
72
  return self
73
73
 
74
74
  def createPduToFrameMapping(self, short_name: str) -> PduToFrameMapping:
75
- if (short_name not in self.elements):
75
+ if not self.IsElementExists(short_name):
76
76
  mapping = PduToFrameMapping(self, short_name)
77
- self.elements[short_name] = mapping
77
+ self.addElement(mapping)
78
78
  self.pduToFrameMappings.append(mapping)
79
- return self.elements[short_name]
79
+ return self.getElement(short_name, PduToFrameMapping)
80
80
 
81
81
  def getPduToFrameMappings(self) -> List[PduToFrameMapping]:
82
- return list(sorted(filter(lambda a: isinstance(a, PduToFrameMapping), self.elements.values()), key=lambda o: o.short_name))
82
+ return list(sorted(filter(lambda a: isinstance(a, PduToFrameMapping), self.elements), key=lambda o: o.short_name))
83
83
 
84
84
 
85
85
  class ContainedIPduProps(ARObject):
@@ -542,11 +542,11 @@ class NmPdu(Pdu):
542
542
  return self.iSignalToIPduMappings
543
543
 
544
544
  def createISignalToIPduMapping(self, short_name: str) -> ISignalToIPduMapping:
545
- if (not self.IsElementExists(short_name)):
545
+ if not self.IsElementExists(short_name):
546
546
  mapping = ISignalToIPduMapping(self, short_name)
547
547
  self.addElement(mapping)
548
548
  self.iSignalToIPduMappings.append(mapping)
549
- return self.getElement(short_name)
549
+ return self.getElement(short_name, ISignalToIPduMapping)
550
550
 
551
551
  def getNmDataInformation(self):
552
552
  return self.nmDataInformation
@@ -633,11 +633,11 @@ class ISignalIPdu(IPdu):
633
633
  return self.iSignalToPduMappings
634
634
 
635
635
  def createISignalToPduMappings(self, short_name: str) -> ISignalToIPduMapping:
636
- if (short_name not in self.elements):
636
+ if not self.IsElementExists(short_name):
637
637
  mapping = ISignalToIPduMapping(self, short_name)
638
- self.elements[short_name] = mapping
638
+ self.addElement(mapping)
639
639
  self.iSignalToPduMappings.append(mapping)
640
- return self.elements[short_name]
640
+ return self.getElement(short_name, ISignalToIPduMapping)
641
641
 
642
642
  def getUnusedBitPattern(self):
643
643
  return self.unusedBitPattern
@@ -1219,7 +1219,7 @@ class SecureCommunicationPropsSet(Identifiable):
1219
1219
  props = SecureCommunicationAuthenticationProps(self, short_name)
1220
1220
  self.addElement(props)
1221
1221
  self.authenticationProps.append(props)
1222
- return self.getElement(short_name)
1222
+ return self.getElement(short_name, SecureCommunicationAuthenticationProps)
1223
1223
 
1224
1224
  def getFreshnessProps(self):
1225
1225
  return self.freshnessProps
@@ -1229,4 +1229,4 @@ class SecureCommunicationPropsSet(Identifiable):
1229
1229
  props = SecureCommunicationFreshnessProps(self, short_name)
1230
1230
  self.addElement(props)
1231
1231
  self.freshnessProps.append(props)
1232
- return self.getElement(short_name)
1232
+ return self.getElement(short_name, SecureCommunicationFreshnessProps)