| ## @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 |