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 Object
.POM
.CommonObject
import TextObject
13 from Logger
.StringTable
import ERR_XML_PARSER_REQUIRED_ITEM_MISSING
14 from Logger
.ToolError
import PARSER_ERROR
15 import Logger
.Log
as Logger
17 ## ConvertVariableName()
18 # Convert VariableName to be L"string",
19 # input of UCS-2 format Hex Array or L"string" (C style.) could be converted successfully,
22 # @param VariableName: string need to be converted
23 # @retval: the L quoted string converted if success, else None will be returned
25 def ConvertVariableName(VariableName
):
26 VariableName
= VariableName
.strip()
28 # check for L quoted string
30 if VariableName
.startswith('L"') and VariableName
.endswith('"'):
34 # check for Hex Array, it should be little endian even number of hex numbers
36 ValueList
= VariableName
.split(' ')
37 if len(ValueList
)%2 == 1:
44 while Index
< len(ValueList
):
45 FirstByte
= int(ValueList
[Index
], 16)
46 SecondByte
= int(ValueList
[Index
+ 1], 16)
50 if FirstByte
not in range(0x20, 0x7F):
52 TransferedStr
+= ('%c')%FirstByte
55 return 'L"' + TransferedStr
+ '"'
57 ## IsRequiredItemListNull
59 # Check if a required XML section item/attribue is NULL
61 # @param ItemList: The list of items to be checked
62 # @param XmlTreeLevel: The error message tree level
64 def IsRequiredItemListNull(ItemDict
, XmlTreeLevel
):
67 Msg
= "->".join(Node
for Node
in XmlTreeLevel
)
68 ErrorMsg
= ERR_XML_PARSER_REQUIRED_ITEM_MISSING
% (Key
, Msg
)
69 Logger
.Error('\nUPT', PARSER_ERROR
, ErrorMsg
, RaiseError
=True)
75 def GetHelpTextList(HelpText
):
78 HelpTextObj
= TextObject()
79 HelpTextObj
.SetLang(HelT
.Lang
)
80 HelpTextObj
.SetString(HelT
.HelpText
)
81 HelpTextList
.append(HelpTextObj
)
88 def GetPromptList(Prompt
):
90 for SubPrompt
in Prompt
:
91 PromptObj
= TextObject()
92 PromptObj
.SetLang(SubPrompt
.Lang
)
93 PromptObj
.SetString(SubPrompt
.Prompt
)
94 PromptList
.append(PromptObj
)