armodel 1.6.4__py3-none-any.whl → 1.7.1__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.
- armodel/cli/arxml_format_cli.py +14 -11
- armodel/models/M2/AUTOSARTemplates/AutosarTopLevelStructure.py +50 -13
- armodel/models/M2/AUTOSARTemplates/BswModuleTemplate/BswBehavior.py +1 -1
- armodel/models/M2/AUTOSARTemplates/CommonStructure/Filter.py +86 -0
- armodel/models/M2/AUTOSARTemplates/CommonStructure/InternalBehavior.py +3 -4
- armodel/models/M2/AUTOSARTemplates/ECUCDescriptionTemplate.py +1 -1
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/ARPackage.py +95 -13
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/Identifiable.py +14 -4
- armodel/models/M2/AUTOSARTemplates/GenericStructure/GeneralTemplateClasses/PrimitiveTypes.py +103 -10
- armodel/models/M2/AUTOSARTemplates/GenericStructure/LifeCycles.py +5 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/Communication.py +21 -8
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/ModeDeclarationGroup.py +24 -0
- armodel/models/M2/AUTOSARTemplates/SWComponentTemplate/SwcInternalBehavior/__init__.py +1 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Can/CanTopology.py +173 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/Fibex4Multiplatform.py +1 -1
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreCommunication.py +6 -6
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/CoreTopology.py +237 -28
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/EcuInstance.py +223 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/Fibex/FibexCore/Timing.py +177 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/InstanceRefs.py +37 -0
- armodel/models/M2/AUTOSARTemplates/SystemTemplate/__init__.py +88 -16
- armodel/models/M2/MSR/AsamHdo/AdminData.py +34 -8
- armodel/models/M2/MSR/Documentation/Annotation.py +1 -1
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/ListElements.py +54 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/PaginationAndView.py +9 -0
- armodel/models/M2/MSR/Documentation/TextModel/BlockElements/__init__.py +25 -0
- armodel/models/M2/MSR/Documentation/TextModel/LanguageDataModel.py +33 -5
- armodel/models/M2/MSR/Documentation/TextModel/MultilanguageData.py +15 -2
- armodel/models/M2/MSR/Documentation/__init__.py +1 -1
- armodel/models/__init__.py +15 -2
- armodel/parser/abstract_arxml_parser.py +55 -18
- armodel/parser/arxml_parser.py +344 -101
- armodel/tests/test_armodel/models/test_ar_ref.py +7 -4
- armodel/tests/test_armodel/parser/test_sw_components.py +6 -19
- armodel/tests/test_armodel/parser/test_system.py +2 -2
- armodel/writer/abstract_arxml_writer.py +17 -8
- armodel/writer/arxml_writer.py +291 -78
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/METADATA +23 -1
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/RECORD +43 -35
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/LICENSE +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/WHEEL +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/entry_points.txt +0 -0
- {armodel-1.6.4.dist-info → armodel-1.7.1.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from ......M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import Paginateable
|
|
4
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import AREnum
|
|
5
|
+
|
|
6
|
+
class ListEnum(AREnum):
|
|
7
|
+
|
|
8
|
+
NUMBER = 'number'
|
|
9
|
+
UNNUMBER = 'unnumber'
|
|
10
|
+
|
|
11
|
+
def __init__(self,):
|
|
12
|
+
super().__init__((
|
|
13
|
+
ListEnum.NUMBER,
|
|
14
|
+
ListEnum.UNNUMBER
|
|
15
|
+
))
|
|
16
|
+
|
|
17
|
+
class Item(Paginateable):
|
|
18
|
+
def __init__(self):
|
|
19
|
+
super().__init__()
|
|
20
|
+
|
|
21
|
+
self.itemContents = None
|
|
22
|
+
|
|
23
|
+
def getItemContents(self):
|
|
24
|
+
return self.itemContents
|
|
25
|
+
|
|
26
|
+
def setItemContents(self, value):
|
|
27
|
+
self.itemContents = value
|
|
28
|
+
return self
|
|
29
|
+
|
|
30
|
+
class ListElement(Paginateable):
|
|
31
|
+
'''
|
|
32
|
+
This meta-class represents the ability to express a list. The kind of list is specified in the attribute.
|
|
33
|
+
In AUTOSAR standard class name shall be List, but it is conflict with Python List and renamed to ListElement
|
|
34
|
+
'''
|
|
35
|
+
def __init__(self):
|
|
36
|
+
super().__init__()
|
|
37
|
+
|
|
38
|
+
self.items = [] # type: List[Item]
|
|
39
|
+
self.type = None # type: ListEnum
|
|
40
|
+
|
|
41
|
+
def getItems(self):
|
|
42
|
+
return self.items
|
|
43
|
+
|
|
44
|
+
def addItem(self, value: Item):
|
|
45
|
+
self.items.append(value)
|
|
46
|
+
return self
|
|
47
|
+
|
|
48
|
+
def getType(self):
|
|
49
|
+
return self.type
|
|
50
|
+
|
|
51
|
+
def setType(self, value):
|
|
52
|
+
self.type = value
|
|
53
|
+
return self
|
|
54
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
2
|
+
|
|
3
|
+
class DocumentViewSelectable(ARObject):
|
|
4
|
+
def __init__(self):
|
|
5
|
+
super().__init__()
|
|
6
|
+
|
|
7
|
+
class Paginateable(DocumentViewSelectable):
|
|
8
|
+
def __init__(self):
|
|
9
|
+
super().__init__()
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from ......M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
2
|
+
from ......M2.MSR.Documentation.TextModel.BlockElements.ListElements import ListElement
|
|
3
|
+
from ......M2.MSR.Documentation.TextModel.MultilanguageData import MultiLanguageParagraph
|
|
4
|
+
from typing import List
|
|
5
|
+
|
|
6
|
+
class DocumentationBlock(ARObject):
|
|
7
|
+
def __init__(self):
|
|
8
|
+
super().__init__()
|
|
9
|
+
|
|
10
|
+
self.ps = [] # type: List[MultiLanguageParagraph]
|
|
11
|
+
self.lists = [] # type: List[ListElement]
|
|
12
|
+
|
|
13
|
+
def addP(self, p: MultiLanguageParagraph):
|
|
14
|
+
self.ps.append(p)
|
|
15
|
+
return self
|
|
16
|
+
|
|
17
|
+
def getPs(self) -> List[MultiLanguageParagraph]:
|
|
18
|
+
return self.ps
|
|
19
|
+
|
|
20
|
+
def getLists(self):
|
|
21
|
+
return self.lists
|
|
22
|
+
|
|
23
|
+
def addList(self, value):
|
|
24
|
+
self.lists.append(value)
|
|
25
|
+
return self
|
|
@@ -1,16 +1,44 @@
|
|
|
1
|
+
from abc import ABCMeta
|
|
2
|
+
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARLiteral
|
|
1
3
|
from .....M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
2
4
|
|
|
3
|
-
class
|
|
5
|
+
class LEnum (ARLiteral):
|
|
4
6
|
def __init__(self):
|
|
5
7
|
super().__init__()
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
class LanguageSpecific(ARObject, metaclass = ABCMeta):
|
|
10
|
+
def __init__(self):
|
|
11
|
+
super().__init__()
|
|
12
|
+
|
|
13
|
+
self.l = None # type: LEnum
|
|
8
14
|
self.value = ""
|
|
9
15
|
|
|
16
|
+
def getL(self):
|
|
17
|
+
return self.l
|
|
18
|
+
|
|
19
|
+
def setL(self, value):
|
|
20
|
+
self.l = value
|
|
21
|
+
return self
|
|
10
22
|
|
|
11
|
-
|
|
23
|
+
def getValue(self):
|
|
24
|
+
return self.value
|
|
25
|
+
|
|
26
|
+
def setValue(self, value):
|
|
27
|
+
self.value = value
|
|
28
|
+
return self
|
|
29
|
+
|
|
30
|
+
class LOverviewParagraph(LanguageSpecific):
|
|
12
31
|
def __init__(self):
|
|
13
32
|
super().__init__()
|
|
14
33
|
|
|
15
|
-
|
|
16
|
-
|
|
34
|
+
class LParagraph(LanguageSpecific):
|
|
35
|
+
def __init__(self):
|
|
36
|
+
super().__init__()
|
|
37
|
+
|
|
38
|
+
class LLongName(LanguageSpecific):
|
|
39
|
+
def __init__(self):
|
|
40
|
+
super().__init__()
|
|
41
|
+
|
|
42
|
+
class LPlainText(LanguageSpecific):
|
|
43
|
+
def __init__(self):
|
|
44
|
+
super().__init__()
|
|
@@ -35,11 +35,24 @@ class MultilanguageLongName(ARObject):
|
|
|
35
35
|
def __init__(self):
|
|
36
36
|
super().__init__()
|
|
37
37
|
|
|
38
|
-
self.l4 = []
|
|
38
|
+
self.l4 = [] # type:List[LLongName]
|
|
39
39
|
|
|
40
40
|
def addL4(self, l4: LLongName):
|
|
41
41
|
self.l4.append(l4)
|
|
42
42
|
return self
|
|
43
43
|
|
|
44
44
|
def getL4s(self) -> List[LLongName]:
|
|
45
|
-
return self.l4
|
|
45
|
+
return self.l4
|
|
46
|
+
|
|
47
|
+
class MultiLanguagePlainText(ARObject):
|
|
48
|
+
def __init__(self):
|
|
49
|
+
super().__init__()
|
|
50
|
+
|
|
51
|
+
self.l10s = [] # type: List[LPlainText]
|
|
52
|
+
|
|
53
|
+
def getL10s(self):
|
|
54
|
+
return self.l10s
|
|
55
|
+
|
|
56
|
+
def addL10(self, value):
|
|
57
|
+
self.l10s.append(value)
|
|
58
|
+
return self
|
armodel/models/__init__.py
CHANGED
|
@@ -8,8 +8,10 @@ from .M2.MSR.AsamHdo.Constraints.GlobalConstraints import *
|
|
|
8
8
|
from .M2.MSR.DataDictionary import *
|
|
9
9
|
from .M2.MSR.Documentation import *
|
|
10
10
|
from .M2.MSR.Documentation.Annotation import *
|
|
11
|
-
from .M2.MSR.Documentation.BlockElements import *
|
|
12
11
|
from .M2.MSR.Documentation.TextModel import *
|
|
12
|
+
from .M2.MSR.Documentation.TextModel.BlockElements import *
|
|
13
|
+
from .M2.MSR.Documentation.TextModel.BlockElements.ListElements import *
|
|
14
|
+
from .M2.MSR.Documentation.TextModel.BlockElements.PaginationAndView import *
|
|
13
15
|
from .M2.MSR.Documentation.TextModel.LanguageDataModel import *
|
|
14
16
|
from .M2.MSR.Documentation.TextModel.MultilanguageData import *
|
|
15
17
|
from .M2.AUTOSARTemplates.AutosarTopLevelStructure import *
|
|
@@ -19,10 +21,13 @@ from .M2.AUTOSARTemplates.BswModuleTemplate.BswImplementation import *
|
|
|
19
21
|
from .M2.AUTOSARTemplates.BswModuleTemplate.BswInterfaces import *
|
|
20
22
|
from .M2.AUTOSARTemplates.BswModuleTemplate.BswOverview import *
|
|
21
23
|
from .M2.AUTOSARTemplates.CommonStructure import *
|
|
24
|
+
from .M2.AUTOSARTemplates.CommonStructure.Filter import *
|
|
22
25
|
from .M2.AUTOSARTemplates.CommonStructure.Implementation import *
|
|
23
26
|
from .M2.AUTOSARTemplates.CommonStructure.ImplementationDataTypes import *
|
|
24
27
|
from .M2.AUTOSARTemplates.CommonStructure.InternalBehavior import *
|
|
25
28
|
from .M2.AUTOSARTemplates.CommonStructure.ModeDeclaration import *
|
|
29
|
+
from .M2.AUTOSARTemplates.CommonStructure.ResourceConsumption import *
|
|
30
|
+
from .M2.AUTOSARTemplates.CommonStructure.ResourceConsumption.MemorySectionUsage import *
|
|
26
31
|
from .M2.AUTOSARTemplates.CommonStructure.ServiceNeeds import *
|
|
27
32
|
from .M2.AUTOSARTemplates.CommonStructure.SwcBswMapping import *
|
|
28
33
|
from .M2.AUTOSARTemplates.CommonStructure.TriggerDeclaration import *
|
|
@@ -42,9 +47,17 @@ from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.PerInstanceMem
|
|
|
42
47
|
from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServerCall import *
|
|
43
48
|
from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.ServiceMapping import *
|
|
44
49
|
from .M2.AUTOSARTemplates.SWComponentTemplate.SwcInternalBehavior.Trigger import *
|
|
50
|
+
from .M2.AUTOSARTemplates.SystemTemplate.DataMapping import *
|
|
51
|
+
from .M2.AUTOSARTemplates.SystemTemplate.InstanceRefs import *
|
|
52
|
+
from .M2.AUTOSARTemplates.SystemTemplate.NetworkManagement import *
|
|
53
|
+
from .M2.AUTOSARTemplates.SystemTemplate.TransportProtocols import *
|
|
54
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Multiplatform import *
|
|
45
55
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanCommunication import *
|
|
56
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Can.CanTopology import *
|
|
46
57
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Lin.LinCommunication import *
|
|
47
58
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.EthernetFrame import *
|
|
48
59
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.Fibex4Ethernet.ServiceInstances import *
|
|
49
60
|
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreCommunication import *
|
|
50
|
-
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import *
|
|
61
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.CoreTopology import *
|
|
62
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.EcuInstance import *
|
|
63
|
+
from .M2.AUTOSARTemplates.SystemTemplate.Fibex.FibexCore.Timing import *
|
|
@@ -9,7 +9,7 @@ import xml.etree.ElementTree as ET
|
|
|
9
9
|
|
|
10
10
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.ArObject import ARObject
|
|
11
11
|
|
|
12
|
-
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical
|
|
12
|
+
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import ARFloat, ARLiteral, ARNumerical, Boolean, Integer, TimeValue
|
|
13
13
|
|
|
14
14
|
from ..models.M2.AUTOSARTemplates.AutosarTopLevelStructure import AUTOSAR
|
|
15
15
|
from ..models.M2.AUTOSARTemplates.GenericStructure.GeneralTemplateClasses.PrimitiveTypes import RefType
|
|
@@ -73,7 +73,7 @@ class AbstractARXMLParser:
|
|
|
73
73
|
'''
|
|
74
74
|
|
|
75
75
|
def getChildElementLiteral(self, short_name: str, element: ET.Element, key: str) -> ARLiteral:
|
|
76
|
-
child_element =
|
|
76
|
+
child_element = self.find(element, key)
|
|
77
77
|
if (child_element is not None):
|
|
78
78
|
literal = ARLiteral()
|
|
79
79
|
self.readElementAttributes(child_element, literal)
|
|
@@ -82,7 +82,7 @@ class AbstractARXMLParser:
|
|
|
82
82
|
self._raiseError("The attribute %s of <%s> has not been defined" % (key, short_name))
|
|
83
83
|
|
|
84
84
|
def getChildElementLiteralValueList(self, element: ET.Element, key: str) -> ARFloat:
|
|
85
|
-
child_elements =
|
|
85
|
+
child_elements = self.findall(element, key)
|
|
86
86
|
results = []
|
|
87
87
|
for child_element in child_elements:
|
|
88
88
|
literal = ARLiteral()
|
|
@@ -91,10 +91,27 @@ class AbstractARXMLParser:
|
|
|
91
91
|
return results
|
|
92
92
|
|
|
93
93
|
def getChildElementOptionalLiteral(self, element: ET.Element, key: str) -> ARLiteral:
|
|
94
|
-
child_element =
|
|
94
|
+
child_element = self.find(element, key)
|
|
95
95
|
literal = None
|
|
96
96
|
if (child_element is not None):
|
|
97
|
-
self.logger.debug("
|
|
97
|
+
self.logger.debug("getChildElementOptionalLiteral : %s" % child_element.text)
|
|
98
|
+
literal = ARLiteral()
|
|
99
|
+
self.readElementAttributes(child_element, literal)
|
|
100
|
+
# Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
|
|
101
|
+
if child_element.text is None:
|
|
102
|
+
literal.setValue("")
|
|
103
|
+
else:
|
|
104
|
+
literal.setValue(child_element.text)
|
|
105
|
+
return literal
|
|
106
|
+
|
|
107
|
+
def getChildElementOptionalRevisionLabelString(self, element: ET.Element, key: str) -> ARLiteral:
|
|
108
|
+
child_element = self.find(element, key)
|
|
109
|
+
literal = None
|
|
110
|
+
if (child_element is not None) and (child_element.text is not None):
|
|
111
|
+
self.logger.debug("getChildElementOptionalRevisionLabelString : %s" % child_element.text)
|
|
112
|
+
m = re.match(r'[0-9]+\.[0-9]+\.[0-9]+([\._;].*)?', child_element.text)
|
|
113
|
+
if not m:
|
|
114
|
+
raise ValueError("Invalid RevisionLabelString <%s>" % child_element.text)
|
|
98
115
|
literal = ARLiteral()
|
|
99
116
|
self.readElementAttributes(child_element, literal)
|
|
100
117
|
# Patch for empty element <USED-CODE-GENERATOR></USED-CODE-GENERATOR>
|
|
@@ -110,7 +127,7 @@ class AbstractARXMLParser:
|
|
|
110
127
|
return False
|
|
111
128
|
|
|
112
129
|
def getChildElementOptionalFloatValue(self, element: ET.Element, key: str) -> ARFloat:
|
|
113
|
-
child_element =
|
|
130
|
+
child_element = self.find(element, key)
|
|
114
131
|
float_value = None
|
|
115
132
|
if (child_element is not None) and (child_element.text is not None):
|
|
116
133
|
float_value = ARFloat()
|
|
@@ -118,26 +135,34 @@ class AbstractARXMLParser:
|
|
|
118
135
|
return float_value
|
|
119
136
|
|
|
120
137
|
def getChildElementFloatValueList(self, element: ET.Element, key: str) -> ARFloat:
|
|
121
|
-
child_elements =
|
|
138
|
+
child_elements = self.findall(element, key)
|
|
122
139
|
results = []
|
|
123
140
|
for child_element in child_elements:
|
|
124
141
|
float_value = ARFloat()
|
|
125
142
|
float_value.setValue(child_element.text)
|
|
126
143
|
results.append(float_value)
|
|
127
144
|
return results
|
|
145
|
+
|
|
146
|
+
def getChildElementOptionalTimeValue(self, element: ET.Element, key: str) -> TimeValue:
|
|
147
|
+
child_element = self.find(element, key)
|
|
148
|
+
time_value = None
|
|
149
|
+
if (child_element is not None) and (child_element.text is not None):
|
|
150
|
+
time_value = TimeValue()
|
|
151
|
+
time_value.setValue(child_element.text)
|
|
152
|
+
return time_value
|
|
128
153
|
|
|
129
|
-
def getChildElementBooleanValue(self, short_name: str, element: ET.Element, key: str) ->
|
|
154
|
+
def getChildElementBooleanValue(self, short_name: str, element: ET.Element, key: str) -> Boolean:
|
|
130
155
|
literal = self.getChildElementLiteral(short_name, element, key)
|
|
131
|
-
bool_value =
|
|
156
|
+
bool_value = Boolean()
|
|
132
157
|
bool_value.timestamp = literal.timestamp
|
|
133
158
|
bool_value.value = self._convertStringToBooleanValue(literal._value)
|
|
134
159
|
return bool_value
|
|
135
160
|
|
|
136
|
-
def getChildElementOptionalBooleanValue(self, element: ET.Element, key: str) ->
|
|
161
|
+
def getChildElementOptionalBooleanValue(self, element: ET.Element, key: str) -> Boolean:
|
|
137
162
|
literal = self.getChildElementOptionalLiteral(element, key)
|
|
138
163
|
if (literal == None):
|
|
139
164
|
return None
|
|
140
|
-
bool_value =
|
|
165
|
+
bool_value = Boolean()
|
|
141
166
|
bool_value.timestamp = literal.timestamp
|
|
142
167
|
bool_value.setValue(literal.getValue())
|
|
143
168
|
return bool_value
|
|
@@ -162,16 +187,25 @@ class AbstractARXMLParser:
|
|
|
162
187
|
'''
|
|
163
188
|
|
|
164
189
|
def getChildElementOptionalNumericalValue(self, element: ET.Element, key: str) -> ARNumerical:
|
|
165
|
-
child_element =
|
|
190
|
+
child_element = self.find(element, key)
|
|
166
191
|
if child_element == None:
|
|
167
192
|
return None
|
|
168
193
|
numerical = ARNumerical()
|
|
169
194
|
self.readElementAttributes(child_element, numerical)
|
|
170
195
|
numerical.setValue(child_element.text)
|
|
171
196
|
return numerical
|
|
197
|
+
|
|
198
|
+
def getChildElementOptionalIntegerValue(self, element: ET.Element, key: str) -> Integer:
|
|
199
|
+
child_element = self.find(element, key)
|
|
200
|
+
if child_element == None:
|
|
201
|
+
return None
|
|
202
|
+
numerical = Integer()
|
|
203
|
+
self.readElementAttributes(child_element, numerical)
|
|
204
|
+
numerical.setValue(child_element.text)
|
|
205
|
+
return numerical
|
|
172
206
|
|
|
173
207
|
def getChildElementNumericalValueList(self, element: ET.Element, key: str) -> List[ARNumerical]:
|
|
174
|
-
child_elements =
|
|
208
|
+
child_elements = self.findall(element, key)
|
|
175
209
|
results = []
|
|
176
210
|
for child_element in child_elements:
|
|
177
211
|
numerical = ARNumerical()
|
|
@@ -180,7 +214,7 @@ class AbstractARXMLParser:
|
|
|
180
214
|
return results
|
|
181
215
|
|
|
182
216
|
def getChildLimitElement(self, element: ET.Element, key: str) -> Limit:
|
|
183
|
-
child_element =
|
|
217
|
+
child_element = self.find(element, key)
|
|
184
218
|
if (child_element is not None):
|
|
185
219
|
limit = Limit()
|
|
186
220
|
self.readElementAttributes(child_element, limit)
|
|
@@ -194,18 +228,21 @@ class AbstractARXMLParser:
|
|
|
194
228
|
|
|
195
229
|
def _getChildElementRefTypeDestAndValue(self, element) -> RefType:
|
|
196
230
|
ref = RefType()
|
|
197
|
-
|
|
198
|
-
|
|
231
|
+
if 'BASE' in element.attrib:
|
|
232
|
+
ref.setBase(element.attrib['BASE'])
|
|
233
|
+
if 'DEST' in element.attrib:
|
|
234
|
+
ref.setDest(element.attrib['DEST'])
|
|
235
|
+
ref.setValue(element.text)
|
|
199
236
|
return ref
|
|
200
237
|
|
|
201
238
|
def getChildElementRefType(self, short_name: str, element: ET.Element, key: str) -> RefType:
|
|
202
|
-
child_element =
|
|
239
|
+
child_element = self.find(element, key)
|
|
203
240
|
if (child_element is not None):
|
|
204
241
|
return self._getChildElementRefTypeDestAndValue(child_element)
|
|
205
242
|
self._raiseError("The attribute %s of <%s> has not been defined" % (key, short_name))
|
|
206
243
|
|
|
207
244
|
def getChildElementOptionalRefType(self, element:ET.Element, key: str) -> RefType:
|
|
208
|
-
child_element =
|
|
245
|
+
child_element = self.find(element, key)
|
|
209
246
|
if (child_element is not None):
|
|
210
247
|
return self._getChildElementRefTypeDestAndValue(child_element)
|
|
211
248
|
return None
|