# This file is used to define common string related functions used in parsing process\r
#\r
# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution. The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
#\r
\r
##\r
# Import Modules\r
#\r
+from __future__ import absolute_import\r
import re\r
-import DataType\r
+from . import DataType\r
import Common.LongFilePathOs as os\r
import string\r
-import EdkLogger as EdkLogger\r
+from . import EdkLogger as EdkLogger\r
\r
-import GlobalData\r
-from BuildToolError import *\r
+from . import GlobalData\r
+from .BuildToolError import *\r
from CommonDataClass.Exceptions import *\r
from Common.LongFilePathSupport import OpenLongFilePath as open\r
from Common.MultipleWorkspace import MultipleWorkspace as mws\r
\r
## GetSplitValueList\r
#\r
-# Get a value list from a string with multiple values splited with SplitTag\r
+# Get a value list from a string with multiple values split with SplitTag\r
# The default SplitTag is DataType.TAB_VALUE_SPLIT\r
# 'AAA|BBB|CCC' -> ['AAA', 'BBB', 'CCC']\r
#\r
\r
## GetSplitList\r
#\r
-# Get a value list from a string with multiple values splited with SplitString\r
+# Get a value list from a string with multiple values split with SplitString\r
# The default SplitTag is DataType.TAB_VALUE_SPLIT\r
# 'AAA|BBB|CCC' -> ['AAA', 'BBB', 'CCC']\r
#\r
# @retval list() A list for splitted string\r
#\r
def GetSplitList(String, SplitStr=DataType.TAB_VALUE_SPLIT, MaxSplit= -1):\r
- return map(lambda l: l.strip(), String.split(SplitStr, MaxSplit))\r
+ return list(map(lambda l: l.strip(), String.split(SplitStr, MaxSplit)))\r
\r
## MergeArches\r
#\r
# Return False if invalid format\r
#\r
# @param String: String with DEFINE statement\r
-# @param Arch: Supportted Arch\r
+# @param Arch: Supported Arch\r
# @param Defines: DEFINE statement to be parsed\r
#\r
# @retval 0 DEFINE statement found, and valid\r
#\r
# @param String: String with INCLUDE statement\r
# @param IncludeFiles: INCLUDE statement to be parsed\r
-# @param Arch: Supportted Arch\r
+# @param Arch: Supported Arch\r
#\r
# @retval True\r
# @retval False\r
## NormPath\r
#\r
# Create a normal path\r
-# And replace DFEINE in the path\r
+# And replace DEFINE in the path\r
#\r
# @param Path: The input value for Path to be converted\r
# @param Defines: A set for DEFINE statement\r
#\r
LineList[1] = CleanString(LineList[1], CommentCharacter)\r
if ValueSplitFlag:\r
- Value = map(string.strip, LineList[1].split(ValueSplitCharacter))\r
+ Value = list(map(string.strip, LineList[1].split(ValueSplitCharacter)))\r
else:\r
Value = CleanString(LineList[1], CommentCharacter).splitlines()\r
\r
\r
## Split string\r
#\r
-# Revmove '"' which startswith and endswith string\r
+# Remove '"' which startswith and endswith string\r
#\r
-# @param String: The string need to be splited\r
+# @param String: The string need to be split\r
#\r
# @retval String: The string after removed '""'\r
#\r
# @param StringList: A list for strings to be converted\r
#\r
def ConvertToSqlString(StringList):\r
- return map(lambda s: s.replace("'", "''"), StringList)\r
+ return list(map(lambda s: s.replace("'", "''"), StringList))\r
\r
## Convert To Sql String\r
#\r
return List\r
\r
def StringToArray(String):\r
- if isinstance(String, unicode):\r
- if len(unicode) == 0:\r
- return "{0x00,0x00}"\r
- return "{%s,0x00,0x00}" % ",".join("0x%02x,0x00" % ord(C) for C in String)\r
- elif String.startswith('L"'):\r
+ if String.startswith('L"'):\r
if String == "L\"\"":\r
return "{0x00,0x00}"\r
else:\r
else:\r
return "{%s,0x00,0x00}" % ",".join("0x%02x" % ord(C) for C in String[1:-1])\r
elif String.startswith('{'):\r
- StringLen = len(String.split(","))\r
- if StringLen % 2:\r
- return "{%s,0x00}" % ",".join(C.strip() for C in String[1:-1].split(','))\r
- else:\r
- return "{%s}" % ",".join(C.strip() for C in String[1:-1].split(','))\r
- \r
+ return "{%s}" % ",".join(C.strip() for C in String[1:-1].split(','))\r
else:\r
if len(String.split()) % 2:\r
return '{%s,0}' % ','.join(String.split())\r
return '{%s,0,0}' % ','.join(String.split())\r
\r
def StringArrayLength(String):\r
- if isinstance(String, unicode):\r
- return (len(String) + 1) * 2 + 1;\r
- elif String.startswith('L"'):\r
+ if String.startswith('L"'):\r
return (len(String) - 3 + 1) * 2\r
elif String.startswith('"'):\r
return (len(String) - 2 + 1)\r