Sync BaseTools Branch (version r2362) to EDKII main trunk.
Signed-off-by: lgao4 Reviewed-by: jsu1 Reviewed-by: ydliu git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12525 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@ -193,6 +193,8 @@ class UniFileClassObject(object):
|
||||
self.Token = 2
|
||||
self.LanguageDef = [] #[ [u'LanguageIdentifier', u'PrintableName'], ... ]
|
||||
self.OrderedStringList = {} #{ u'LanguageIdentifier' : [StringDefClassObject] }
|
||||
self.OrderedStringDict = {} #{ u'LanguageIdentifier' : {StringName:(IndexInList)} }
|
||||
self.OrderedStringListByToken = {} #{ u'LanguageIdentifier' : {Token: StringDefClassObject} }
|
||||
self.IsCompatibleMode = IsCompatibleMode
|
||||
self.IncludePathList = IncludePathList
|
||||
if len(self.FileList) > 0:
|
||||
@ -246,14 +248,13 @@ class UniFileClassObject(object):
|
||||
else:
|
||||
OtherLang = FirstLangName
|
||||
self.OrderedStringList[LangName].append (StringDefClassObject(Item.StringName, '', Item.Referenced, Item.Token, OtherLang))
|
||||
|
||||
self.OrderedStringDict[LangName][Item.StringName] = len(self.OrderedStringList[LangName]) - 1
|
||||
return True
|
||||
|
||||
#
|
||||
# Get String name and value
|
||||
#
|
||||
def GetStringObject(self, Item):
|
||||
Name = ''
|
||||
Language = ''
|
||||
Value = ''
|
||||
|
||||
@ -476,20 +477,22 @@ class UniFileClassObject(object):
|
||||
|
||||
if Language not in self.OrderedStringList:
|
||||
self.OrderedStringList[Language] = []
|
||||
self.OrderedStringDict[Language] = {}
|
||||
|
||||
IsAdded = True
|
||||
for Item in self.OrderedStringList[Language]:
|
||||
if Name == Item.StringName:
|
||||
IsAdded = False
|
||||
if Value != None:
|
||||
Item.UpdateValue(Value)
|
||||
Item.UseOtherLangDef = ''
|
||||
break
|
||||
if Name in self.OrderedStringDict[Language]:
|
||||
IsAdded = False
|
||||
if Value != None:
|
||||
ItemIndexInList = self.OrderedStringDict[Language][Name]
|
||||
Item = self.OrderedStringList[Language][ItemIndexInList]
|
||||
Item.UpdateValue(Value)
|
||||
Item.UseOtherLangDef = ''
|
||||
|
||||
if IsAdded:
|
||||
Token = len(self.OrderedStringList[Language])
|
||||
if Index == -1:
|
||||
self.OrderedStringList[Language].append(StringDefClassObject(Name, Value, Referenced, Token, UseOtherLangDef))
|
||||
self.OrderedStringDict[Language][Name] = Token
|
||||
for LangName in self.LanguageDef:
|
||||
#
|
||||
# New STRING token will be added into all language string lists.
|
||||
@ -501,8 +504,10 @@ class UniFileClassObject(object):
|
||||
else:
|
||||
OtherLangDef = Language
|
||||
self.OrderedStringList[LangName[0]].append(StringDefClassObject(Name, '', Referenced, Token, OtherLangDef))
|
||||
self.OrderedStringDict[LangName[0]][Name] = len(self.OrderedStringList[LangName[0]]) - 1
|
||||
else:
|
||||
self.OrderedStringList[Language].insert(Index, StringDefClassObject(Name, Value, Referenced, Token, UseOtherLangDef))
|
||||
self.OrderedStringDict[Language][Name] = Index
|
||||
|
||||
#
|
||||
# Set the string as referenced
|
||||
@ -513,17 +518,18 @@ class UniFileClassObject(object):
|
||||
# So, only update the status of string stoken in first language string list.
|
||||
#
|
||||
Lang = self.LanguageDef[0][0]
|
||||
for Item in self.OrderedStringList[Lang]:
|
||||
if Name == Item.StringName:
|
||||
Item.Referenced = True
|
||||
break
|
||||
if Name in self.OrderedStringDict[Lang]:
|
||||
ItemIndexInList = self.OrderedStringDict[Lang][Name]
|
||||
Item = self.OrderedStringList[Lang][ItemIndexInList]
|
||||
Item.Referenced = True
|
||||
|
||||
#
|
||||
# Search the string in language definition by Name
|
||||
#
|
||||
def FindStringValue(self, Name, Lang):
|
||||
for Item in self.OrderedStringList[Lang]:
|
||||
if Item.StringName == Name:
|
||||
return Item
|
||||
if Name in self.OrderedStringDict[Lang]:
|
||||
ItemIndexInList = self.OrderedStringDict[Lang][Name]
|
||||
return self.OrderedStringList[Lang][ItemIndexInList]
|
||||
|
||||
return None
|
||||
|
||||
@ -546,6 +552,10 @@ class UniFileClassObject(object):
|
||||
#
|
||||
FirstLangName = self.LanguageDef[0][0]
|
||||
|
||||
# Convert the OrderedStringList to be OrderedStringListByToken in order to faciliate future search by token
|
||||
for LangNameItem in self.LanguageDef:
|
||||
self.OrderedStringListByToken[LangNameItem[0]] = {}
|
||||
|
||||
#
|
||||
# Use small token for all referred string stoken.
|
||||
#
|
||||
@ -558,6 +568,7 @@ class UniFileClassObject(object):
|
||||
OtherLangItem = self.OrderedStringList[LangName][Index]
|
||||
OtherLangItem.Referenced = True
|
||||
OtherLangItem.Token = RefToken
|
||||
self.OrderedStringListByToken[LangName][OtherLangItem.Token] = OtherLangItem
|
||||
RefToken = RefToken + 1
|
||||
|
||||
#
|
||||
@ -571,6 +582,7 @@ class UniFileClassObject(object):
|
||||
LangName = LangNameItem[0]
|
||||
OtherLangItem = self.OrderedStringList[LangName][Index]
|
||||
OtherLangItem.Token = RefToken + UnRefToken
|
||||
self.OrderedStringListByToken[LangName][OtherLangItem.Token] = OtherLangItem
|
||||
UnRefToken = UnRefToken + 1
|
||||
|
||||
#
|
||||
|
Reference in New Issue
Block a user