## @file | |
# Define a dictionary structure | |
# | |
# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR> | |
# This program and the accompanying materials | |
# are licensed and made available under the terms and conditions of the BSD License | |
# which accompanies this distribution. The full text of the license may be found at | |
# http://opensource.org/licenses/bsd-license.php | |
# | |
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
# | |
## | |
# Import Modules | |
# | |
import EdkLogger | |
from DataType import * | |
from Common.LongFilePathSupport import OpenLongFilePath as open | |
## Convert a text file to a dictionary | |
# | |
# Convert a text file to a dictionary of (name:value) pairs. | |
# | |
# @retval 0 Convert successful | |
# @retval 1 Open file failed | |
# | |
def ConvertTextFileToDictionary(FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter): | |
try: | |
F = open(FileName, 'r') | |
Keys = [] | |
for Line in F: | |
if Line.startswith(CommentCharacter): | |
continue | |
LineList = Line.split(KeySplitCharacter, 1) | |
if len(LineList) >= 2: | |
Key = LineList[0].split() | |
if len(Key) == 1 and Key[0][0] != CommentCharacter and Key[0] not in Keys: | |
if ValueSplitFlag: | |
Dictionary[Key[0]] = LineList[1].replace('\\', '/').split(ValueSplitCharacter) | |
else: | |
Dictionary[Key[0]] = LineList[1].strip().replace('\\', '/') | |
Keys += [Key[0]] | |
F.close() | |
return 0 | |
except: | |
EdkLogger.info('Open file failed') | |
return 1 | |
## Print the dictionary | |
# | |
# Print all items of dictionary one by one | |
# | |
# @param Dict: The dictionary to be printed | |
# | |
def printDict(Dict): | |
if Dict != None: | |
KeyList = Dict.keys() | |
for Key in KeyList: | |
if Dict[Key] != '': | |
print Key + ' = ' + str(Dict[Key]) | |
## Print the dictionary | |
# | |
# Print the items of dictionary which matched with input key | |
# | |
# @param list: The dictionary to be printed | |
# @param key: The key of the item to be printed | |
# | |
def printList(Key, List): | |
if type(List) == type([]): | |
if len(List) > 0: | |
if Key.find(TAB_SPLIT) != -1: | |
print "\n" + Key | |
for Item in List: | |
print Item |