https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Bob Feng <bob.c.feng@intel.com>
		
			
				
	
	
		
			128 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
## @file
 | 
						|
# This file is used to define class objects of INF file [UserExtension] section.
 | 
						|
# It will consumed by InfParser.
 | 
						|
#
 | 
						|
# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
						|
#
 | 
						|
# SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
'''
 | 
						|
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 IdContentItem in self.UserExtension:
 | 
						|
                #
 | 
						|
                # 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
 |