]>
git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/UPT/Xml/GuidProtocolPpiXml.py
d6645fc23cf008cd2925958726e3230cea612dce
2 # This file is used to parse a xml file of .PKG file
4 # Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
6 # SPDX-License-Identifier: BSD-2-Clause-Patent
12 from Library
.StringUtils
import ConvertNEToNOTEQ
13 from Library
.StringUtils
import ConvertNOTEQToNE
14 from Library
.StringUtils
import GetStringOfList
15 from Library
.Xml
.XmlRoutines
import XmlElement
16 from Library
.Xml
.XmlRoutines
import XmlAttribute
17 from Library
.Xml
.XmlRoutines
import XmlNode
18 from Library
.Xml
.XmlRoutines
import XmlList
19 from Library
.Xml
.XmlRoutines
import CreateXmlElement
21 from Object
.POM
.CommonObject
import GuidObject
22 from Object
.POM
.CommonObject
import ProtocolObject
23 from Object
.POM
.CommonObject
import PpiObject
25 from Xml
.CommonXml
import CommonDefinesXml
26 from Xml
.CommonXml
import HelpTextXml
28 from Xml
.XmlParserMisc
import GetHelpTextList
31 #GUID/Protocol/Ppi Common
33 class GuidProtocolPpiXml(object):
34 def __init__(self
, Mode
):
40 self
.CommonDefines
= CommonDefinesXml()
43 # Guid/Ppi/Library, internal used for indicate return object for
48 # there are slightly different field between package and module
52 self
.VariableName
= ''
54 def FromXml(self
, Item
, Key
):
55 self
.UiName
= XmlAttribute(XmlNode(Item
, '%s' % Key
), 'UiName')
56 self
.GuidType
= XmlAttribute(XmlNode(Item
, '%s' % Key
), 'GuidType')
57 self
.Notify
= XmlAttribute(XmlNode(Item
, '%s' % Key
), 'Notify')
58 self
.CName
= XmlElement(Item
, '%s/CName' % Key
)
59 self
.GuidValue
= XmlElement(Item
, '%s/GuidValue' % Key
)
60 self
.VariableName
= XmlElement(Item
, '%s/VariableName' % Key
)
61 self
.CommonDefines
.FromXml(XmlNode(Item
, '%s' % Key
), Key
)
62 for HelpTextItem
in XmlList(Item
, '%s/HelpText' % Key
):
63 HelpTextObj
= HelpTextXml()
64 HelpTextObj
.FromXml(HelpTextItem
, '%s/HelpText' % Key
)
65 self
.HelpText
.append(HelpTextObj
)
67 if self
.Type
== 'Guid':
68 GuidProtocolPpi
= GuidObject()
69 elif self
.Type
== 'Protocol':
70 GuidProtocolPpi
= ProtocolObject()
72 GuidProtocolPpi
= PpiObject()
73 GuidProtocolPpi
.SetHelpTextList(GetHelpTextList(self
.HelpText
))
75 return GuidProtocolPpi
77 def ToXml(self
, GuidProtocolPpi
, Key
):
81 [['Usage', GetStringOfList(GuidProtocolPpi
.GetUsage())], \
82 ['UiName', GuidProtocolPpi
.GetName()], \
83 ['GuidType', GetStringOfList(GuidProtocolPpi
.GetGuidTypeList())], \
84 ['Notify', str(GuidProtocolPpi
.GetNotify()).lower()], \
85 ['SupArchList', GetStringOfList(GuidProtocolPpi
.GetSupArchList())], \
86 ['SupModList', GetStringOfList(GuidProtocolPpi
.GetSupModuleList())], \
87 ['FeatureFlag', ConvertNEToNOTEQ(GuidProtocolPpi
.GetFeatureFlag())]
89 NodeList
= [['CName', GuidProtocolPpi
.GetCName()],
90 ['GuidValue', GuidProtocolPpi
.GetGuid()],
91 ['VariableName', GuidProtocolPpi
.VariableName
]
93 for Item
in GuidProtocolPpi
.GetHelpTextList():
95 NodeList
.append(Tmp
.ToXml(Item
))
96 Root
= CreateXmlElement('%s' % Key
, '', NodeList
, AttributeList
)
102 "UiName = %s Notify = %s GuidTypes = %s CName = %s GuidValue = %s %s" \
103 % (self
.UiName
, self
.Notify
, self
.GuidTypes
, self
.CName
, \
104 self
.GuidValue
, self
.CommonDefines
)
105 for Item
in self
.HelpText
:
106 Str
= Str
+ "\n\t" + str(Item
)
111 class GuidXml(GuidProtocolPpiXml
):
112 def __init__(self
, Mode
):
113 GuidProtocolPpiXml
.__init
__(self
, Mode
)
116 def FromXml(self
, Item
, Key
):
117 GuidProtocolPpi
= GuidProtocolPpiXml
.FromXml(self
, Item
, Key
)
119 if self
.Mode
== 'Package':
121 GuidProtocolPpi
.SetSupArchList(self
.CommonDefines
.SupArchList
)
122 GuidProtocolPpi
.SetSupModuleList(self
.CommonDefines
.SupModList
)
123 GuidProtocolPpi
.SetCName(self
.CName
)
124 GuidProtocolPpi
.SetGuid(self
.GuidValue
)
126 GuidProtocolPpi
.SetUsage(self
.CommonDefines
.Usage
)
128 GuidProtocolPpi
.SetGuidTypeList([self
.GuidType
])
129 GuidProtocolPpi
.SetSupArchList(self
.CommonDefines
.SupArchList
)
130 GuidProtocolPpi
.SetFeatureFlag(ConvertNOTEQToNE(self
.CommonDefines
.FeatureFlag
))
131 GuidProtocolPpi
.SetCName(self
.CName
)
132 GuidProtocolPpi
.SetVariableName(self
.VariableName
)
133 return GuidProtocolPpi
135 def ToXml(self
, GuidProtocolPpi
, Key
):
136 if self
.Mode
== 'Package':
139 GetStringOfList(GuidProtocolPpi
.GetGuidTypeList())], \
141 GetStringOfList(GuidProtocolPpi
.GetSupArchList())], \
143 GetStringOfList(GuidProtocolPpi
.GetSupModuleList())],
145 NodeList
= [['CName', GuidProtocolPpi
.GetCName()],
146 ['GuidValue', GuidProtocolPpi
.GetGuid()],
150 [['Usage', GetStringOfList(GuidProtocolPpi
.GetUsage())], \
151 ['GuidType', GetStringOfList(GuidProtocolPpi
.GetGuidTypeList())],\
153 GetStringOfList(GuidProtocolPpi
.GetSupArchList())], \
154 ['FeatureFlag', ConvertNEToNOTEQ(GuidProtocolPpi
.GetFeatureFlag())]
156 NodeList
= [['CName', GuidProtocolPpi
.GetCName()],
157 ['VariableName', GuidProtocolPpi
.GetVariableName()]
160 for Item
in GuidProtocolPpi
.GetHelpTextList():
162 NodeList
.append(Tmp
.ToXml(Item
))
163 Root
= CreateXmlElement('%s' % Key
, '', NodeList
, AttributeList
)
169 class ProtocolXml(GuidProtocolPpiXml
):
170 def __init__(self
, Mode
):
171 GuidProtocolPpiXml
.__init
__(self
, Mode
)
172 self
.Type
= 'Protocol'
174 def FromXml(self
, Item
, Key
):
175 GuidProtocolPpi
= GuidProtocolPpiXml
.FromXml(self
, Item
, Key
)
176 if self
.Mode
== 'Package':
177 GuidProtocolPpi
.SetFeatureFlag(self
.CommonDefines
.FeatureFlag
)
178 GuidProtocolPpi
.SetSupArchList(self
.CommonDefines
.SupArchList
)
179 GuidProtocolPpi
.SetSupModuleList(self
.CommonDefines
.SupModList
)
180 GuidProtocolPpi
.SetCName(self
.CName
)
181 GuidProtocolPpi
.SetGuid(self
.GuidValue
)
183 GuidProtocolPpi
.SetUsage(self
.CommonDefines
.Usage
)
184 if self
.Notify
.upper() == "TRUE":
185 GuidProtocolPpi
.SetNotify(True)
186 elif self
.Notify
.upper() == "FALSE":
187 GuidProtocolPpi
.SetNotify(False)
189 GuidProtocolPpi
.SetNotify('')
190 GuidProtocolPpi
.SetSupArchList(self
.CommonDefines
.SupArchList
)
191 GuidProtocolPpi
.SetFeatureFlag(ConvertNOTEQToNE(self
.CommonDefines
.FeatureFlag
))
192 GuidProtocolPpi
.SetCName(self
.CName
)
194 return GuidProtocolPpi
196 def ToXml(self
, GuidProtocolPpi
, Key
):
197 if self
.Mode
== 'Package':
200 GetStringOfList(GuidProtocolPpi
.GetSupArchList())], \
202 GetStringOfList(GuidProtocolPpi
.GetSupModuleList())], \
203 ['FeatureFlag', GuidProtocolPpi
.GetFeatureFlag()]
205 NodeList
= [['CName', GuidProtocolPpi
.GetCName()],
206 ['GuidValue', GuidProtocolPpi
.GetGuid()],
210 [['Usage', GetStringOfList(GuidProtocolPpi
.GetUsage())], \
211 ['Notify', str(GuidProtocolPpi
.GetNotify()).lower()], \
213 GetStringOfList(GuidProtocolPpi
.GetSupArchList())], \
214 ['FeatureFlag', ConvertNEToNOTEQ(GuidProtocolPpi
.GetFeatureFlag())]
216 NodeList
= [['CName', GuidProtocolPpi
.GetCName()],
219 for Item
in GuidProtocolPpi
.GetHelpTextList():
221 NodeList
.append(Tmp
.ToXml(Item
))
222 Root
= CreateXmlElement('%s' % Key
, '', NodeList
, AttributeList
)
228 class PpiXml(GuidProtocolPpiXml
):
229 def __init__(self
, Mode
):
230 GuidProtocolPpiXml
.__init
__(self
, Mode
)
233 def FromXml(self
, Item
, Key
):
234 GuidProtocolPpi
= GuidProtocolPpiXml
.FromXml(self
, Item
, Key
)
235 if self
.Mode
== 'Package':
236 GuidProtocolPpi
.SetSupArchList(self
.CommonDefines
.SupArchList
)
237 GuidProtocolPpi
.SetSupModuleList(self
.CommonDefines
.SupModList
)
238 GuidProtocolPpi
.SetCName(self
.CName
)
239 GuidProtocolPpi
.SetGuid(self
.GuidValue
)
241 GuidProtocolPpi
.SetUsage(self
.CommonDefines
.Usage
)
242 if self
.Notify
.upper() == "TRUE":
243 GuidProtocolPpi
.SetNotify(True)
244 elif self
.Notify
.upper() == "FALSE":
245 GuidProtocolPpi
.SetNotify(False)
247 GuidProtocolPpi
.SetNotify('')
248 GuidProtocolPpi
.SetSupArchList(self
.CommonDefines
.SupArchList
)
249 GuidProtocolPpi
.SetFeatureFlag(ConvertNOTEQToNE(self
.CommonDefines
.FeatureFlag
))
250 GuidProtocolPpi
.SetCName(self
.CName
)
252 return GuidProtocolPpi
254 def ToXml(self
, GuidProtocolPpi
, Key
):
255 if self
.Mode
== 'Package':
258 GetStringOfList(GuidProtocolPpi
.GetSupArchList())],
260 NodeList
= [['CName', GuidProtocolPpi
.GetCName()],
261 ['GuidValue', GuidProtocolPpi
.GetGuid()],
265 [['Usage', GetStringOfList(GuidProtocolPpi
.GetUsage())], \
266 ['Notify', str(GuidProtocolPpi
.GetNotify()).lower()], \
268 GetStringOfList(GuidProtocolPpi
.GetSupArchList())], \
269 ['FeatureFlag', ConvertNEToNOTEQ(GuidProtocolPpi
.GetFeatureFlag())]
271 NodeList
= [['CName', GuidProtocolPpi
.GetCName()],
274 for Item
in GuidProtocolPpi
.GetHelpTextList():
276 NodeList
.append(Tmp
.ToXml(Item
))
277 Root
= CreateXmlElement('%s' % Key
, '', NodeList
, AttributeList
)