]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/UPT/Object/Parser/InfUserExtensionObject.py
27a1c6ad25a03d5d87981e1e2753aac9fc28447d
[mirror_edk2.git] / BaseTools / Source / Python / UPT / Object / Parser / InfUserExtensionObject.py
1 ## @file
2 # This file is used to define class objects of INF file [UserExtension] section.
3 # It will consumed by InfParser.
4 #
5 # Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
6 #
7 # This program and the accompanying materials are licensed and made available
8 # under the terms and conditions of the BSD License which accompanies this
9 # distribution. The full text of the license may be found at
10 # http://opensource.org/licenses/bsd-license.php
11 #
12 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15 '''
16 InfUserExtensionsObject
17 '''
18
19 from Logger import StringTable as ST
20 from Logger import ToolError
21 import Logger.Log as Logger
22 from Library import GlobalData
23
24 from Library.Misc import Sdict
25
26 class InfUserExtensionItem():
27 def __init__(self,
28 Content = '',
29 UserId = '',
30 IdString = ''):
31 self.Content = Content
32 self.UserId = UserId
33 self.IdString = IdString
34 self.SupArchList = []
35
36 def SetContent(self, Content):
37 self.Content = Content
38 def GetContent(self):
39 return self.Content
40
41 def SetUserId(self, UserId):
42 self.UserId = UserId
43 def GetUserId(self):
44 return self.UserId
45
46 def SetIdString(self, IdString):
47 self.IdString = IdString
48 def GetIdString(self):
49 return self.IdString
50
51 def SetSupArchList(self, SupArchList):
52 self.SupArchList = SupArchList
53 def GetSupArchList(self):
54 return self.SupArchList
55
56 ##
57 #
58 #
59 #
60 class InfUserExtensionObject():
61 def __init__(self):
62 self.UserExtension = Sdict()
63
64 def SetUserExtension(self, UserExtensionCont, IdContent=None, LineNo=None):
65 if not UserExtensionCont or UserExtensionCont == '':
66 return True
67 #
68 # IdContent is a list contain UserId and IdString
69 # For this call the general section header parser, if no definition of
70 # IdString/UserId, it will return 'COMMON'
71 #
72 for IdContentItem in IdContent:
73 InfUserExtensionItemObj = InfUserExtensionItem()
74 if IdContentItem[0] == 'COMMON':
75 UserId = ''
76 else:
77 UserId = IdContentItem[0]
78
79 if IdContentItem[1] == 'COMMON':
80 IdString = ''
81 else:
82 IdString = IdContentItem[1]
83
84 #
85 # Fill UserExtensionObj members.
86 #
87 InfUserExtensionItemObj.SetUserId(UserId)
88 InfUserExtensionItemObj.SetIdString(IdString)
89 InfUserExtensionItemObj.SetContent(UserExtensionCont)
90 InfUserExtensionItemObj.SetSupArchList(IdContentItem[2])
91
92 # for CheckItem in self.UserExtension:
93 # if IdContentItem[0] == CheckItem[0] and IdContentItem[1] == CheckItem[1]:
94 # if IdContentItem[2].upper() == 'COMMON' or CheckItem[2].upper() == 'COMMON':
95 # #
96 # # For COMMON ARCH type, do special check.
97 # #
98 # Logger.Error('InfParser',
99 # ToolError.FORMAT_INVALID,
100 # ST.ERR_INF_PARSER_UE_SECTION_DUPLICATE_ERROR%\
101 # (IdContentItem[0] + '.' + IdContentItem[1] + '.' + IdContentItem[2]),
102 # File=GlobalData.gINF_MODULE_NAME,
103 # Line=LineNo,
104 # ExtraData=None)
105
106 if self.UserExtension.has_key(IdContentItem):
107 #
108 # Each UserExtensions section header must have a unique set
109 # of UserId, IdString and Arch values.
110 # This means that the same UserId can be used in more than one
111 # section header, provided the IdString or Arch values are
112 # different. The same IdString values can be used in more than
113 # one section header if the UserId or Arch values are
114 # different. The same UserId and the same IdString can be used
115 # in a section header if the Arch values are different in each
116 # of the section headers.
117 #
118 Logger.Error('InfParser',
119 ToolError.FORMAT_INVALID,
120 ST.ERR_INF_PARSER_UE_SECTION_DUPLICATE_ERROR%\
121 (IdContentItem[0] + '.' + IdContentItem[1] + '.' + IdContentItem[2]),
122 File=GlobalData.gINF_MODULE_NAME,
123 Line=LineNo,
124 ExtraData=None)
125 else:
126 UserExtensionList = []
127 UserExtensionList.append(InfUserExtensionItemObj)
128 self.UserExtension[IdContentItem] = UserExtensionList
129
130 return True
131
132 def GetUserExtension(self):
133 return self.UserExtension