Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Heshen Chen <chen.heshen@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14591 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			133 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ## @file
 | |
| # This file is used to define class objects of INF file [UserExtension] section. 
 | |
| # It will consumed by InfParser. 
 | |
| #
 | |
| # Copyright (c) 2011, 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.
 | |
| 
 | |
| '''
 | |
| InfUserExtensionsObject
 | |
| '''
 | |
| 
 | |
| from Logger import StringTable as ST
 | |
| from Logger import ToolError
 | |
| import Logger.Log as Logger
 | |
| from Library import GlobalData 
 | |
| 
 | |
| from Library.Misc import Sdict
 | |
| 
 | |
| class InfUserExtensionItem():
 | |
|     def __init__(self,
 | |
|                  Content = '',
 | |
|                  UserId = '',
 | |
|                  IdString = ''):
 | |
|         self.Content  = Content
 | |
|         self.UserId   = UserId
 | |
|         self.IdString = IdString
 | |
|         self.SupArchList = []
 | |
|     
 | |
|     def SetContent(self, Content):
 | |
|         self.Content = Content
 | |
|     def GetContent(self):
 | |
|         return self.Content
 | |
|     
 | |
|     def SetUserId(self, UserId):
 | |
|         self.UserId = UserId
 | |
|     def GetUserId(self):
 | |
|         return self.UserId
 | |
|     
 | |
|     def SetIdString(self, IdString):
 | |
|         self.IdString = IdString
 | |
|     def GetIdString(self):
 | |
|         return self.IdString
 | |
|     
 | |
|     def SetSupArchList(self, SupArchList):
 | |
|         self.SupArchList = SupArchList
 | |
|     def GetSupArchList(self):
 | |
|         return self.SupArchList
 | |
|     
 | |
| ##
 | |
| #
 | |
| #
 | |
| #
 | |
| class InfUserExtensionObject():
 | |
|     def __init__(self):
 | |
|         self.UserExtension = Sdict()
 | |
|     
 | |
|     def SetUserExtension(self, UserExtensionCont, IdContent=None, LineNo=None):
 | |
|         if not UserExtensionCont or UserExtensionCont == '':
 | |
|             return True
 | |
|         #
 | |
|         # IdContent is a list contain UserId and IdString 
 | |
|         # For this call the general section header  parser, if no definition of
 | |
|         # IdString/UserId, it will return 'COMMON'
 | |
|         #
 | |
|         for IdContentItem in IdContent:                              
 | |
|             InfUserExtensionItemObj = InfUserExtensionItem()
 | |
|             if IdContentItem[0] == 'COMMON':
 | |
|                 UserId = ''
 | |
|             else:
 | |
|                 UserId = IdContentItem[0]
 | |
|                 
 | |
|             if IdContentItem[1] == 'COMMON':
 | |
|                 IdString = ''
 | |
|             else:
 | |
|                 IdString = IdContentItem[1]   
 | |
|             
 | |
|             #
 | |
|             # Fill UserExtensionObj members.
 | |
|             #     
 | |
|             InfUserExtensionItemObj.SetUserId(UserId)
 | |
|             InfUserExtensionItemObj.SetIdString(IdString)
 | |
|             InfUserExtensionItemObj.SetContent(UserExtensionCont)
 | |
|             InfUserExtensionItemObj.SetSupArchList(IdContentItem[2]) 
 | |
|             
 | |
| #            for CheckItem in self.UserExtension:
 | |
| #                if IdContentItem[0] == CheckItem[0] and IdContentItem[1] == CheckItem[1]:
 | |
| #                    if IdContentItem[2].upper() == 'COMMON' or CheckItem[2].upper() == 'COMMON':
 | |
| #                        #
 | |
| #                        # For COMMON ARCH type, do special check.
 | |
| #                        #
 | |
| #                        Logger.Error('InfParser', 
 | |
| #                            ToolError.FORMAT_INVALID,
 | |
| #                            ST.ERR_INF_PARSER_UE_SECTION_DUPLICATE_ERROR%\
 | |
| #                            (IdContentItem[0] + '.' + IdContentItem[1] + '.' + IdContentItem[2]),
 | |
| #                            File=GlobalData.gINF_MODULE_NAME, 
 | |
| #                            Line=LineNo,
 | |
| #                            ExtraData=None)
 | |
|             
 | |
|             if self.UserExtension.has_key(IdContentItem):           
 | |
|                 #
 | |
|                 # Each UserExtensions section header must have a unique set 
 | |
|                 # of UserId, IdString and Arch values.
 | |
|                 # This means that the same UserId can be used in more than one 
 | |
|                 # section header, provided the IdString or Arch values are 
 | |
|                 # different. The same IdString values can be used in more than 
 | |
|                 # one section header if the UserId or Arch values are 
 | |
|                 # different. The same UserId and the same IdString can be used 
 | |
|                 # in a section header if the Arch values are different in each 
 | |
|                 # of the section headers.
 | |
|                 #
 | |
|                 Logger.Error('InfParser', 
 | |
|                              ToolError.FORMAT_INVALID,
 | |
|                              ST.ERR_INF_PARSER_UE_SECTION_DUPLICATE_ERROR%\
 | |
|                              (IdContentItem[0] + '.' + IdContentItem[1] + '.' + IdContentItem[2]),
 | |
|                              File=GlobalData.gINF_MODULE_NAME, 
 | |
|                              Line=LineNo,
 | |
|                              ExtraData=None)
 | |
|             else:
 | |
|                 UserExtensionList = []
 | |
|                 UserExtensionList.append(InfUserExtensionItemObj)
 | |
|                 self.UserExtension[IdContentItem] = UserExtensionList
 | |
|         
 | |
|         return True
 | |
|         
 | |
|     def GetUserExtension(self):
 | |
|         return self.UserExtension |