Home | History | Annotate | Download | only in Parser
      1 ## @file

      2 # This file is used to define class objects of INF file miscellaneous. 

      3 # Include BootMode/HOB/Event and others. 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 InfMisc
     17 '''
     18 
     19 import Logger.Log as Logger
     20 from Logger import ToolError
     21 
     22 from Library import DataType as DT
     23 from Object.Parser.InfCommonObject import InfSectionCommonDef
     24 from Library.Misc import Sdict
     25 
     26 ## 

     27 # BootModeObject

     28 #

     29 class InfBootModeObject():
     30     def __init__(self):
     31         self.SupportedBootModes = ''
     32         self.HelpString = ''
     33         self.Usage = ''
     34             
     35     def SetSupportedBootModes(self, SupportedBootModes):
     36         self.SupportedBootModes = SupportedBootModes   
     37     def GetSupportedBootModes(self):
     38         return self.SupportedBootModes
     39 
     40     def SetHelpString(self, HelpString):
     41         self.HelpString = HelpString
     42     def GetHelpString(self):
     43         return self.HelpString    
     44 
     45     def SetUsage(self, Usage):
     46         self.Usage = Usage
     47     def GetUsage(self):
     48         return self.Usage
     49 ##

     50 # EventObject

     51 #

     52 class InfEventObject():
     53     def __init__(self):
     54         self.EventType = ''
     55         self.HelpString = ''
     56         self.Usage = ''
     57             
     58     def SetEventType(self, EventType):
     59         self.EventType = EventType
     60     
     61     def GetEventType(self):
     62         return self.EventType
     63     
     64     def SetHelpString(self, HelpString):
     65         self.HelpString = HelpString
     66     def GetHelpString(self):
     67         return self.HelpString    
     68     
     69     def SetUsage(self, Usage):
     70         self.Usage = Usage
     71     def GetUsage(self):
     72         return self.Usage
     73 ##

     74 # HobObject

     75 #

     76 class InfHobObject():
     77     def __init__(self):
     78         self.HobType = ''
     79         self.Usage = ''
     80         self.SupArchList = []
     81         self.HelpString = ''
     82         
     83     def SetHobType(self, HobType):
     84         self.HobType = HobType
     85     
     86     def GetHobType(self):
     87         return self.HobType
     88     
     89     def SetUsage(self, Usage):
     90         self.Usage = Usage
     91     def GetUsage(self):
     92         return self.Usage
     93     
     94     def SetSupArchList(self, ArchList):
     95         self.SupArchList = ArchList
     96     def GetSupArchList(self):
     97         return self.SupArchList
     98     
     99     def SetHelpString(self, HelpString):
    100         self.HelpString = HelpString
    101     def GetHelpString(self):
    102         return self.HelpString
    103     
    104 ##

    105 # InfSpecialCommentObject

    106 #    

    107 class InfSpecialCommentObject(InfSectionCommonDef):
    108     def __init__(self):
    109         self.SpecialComments = Sdict()
    110         InfSectionCommonDef.__init__(self)
    111         
    112     def SetSpecialComments(self, SepcialSectionList = None, Type = ''):
    113         if Type == DT.TYPE_HOB_SECTION or \
    114            Type == DT.TYPE_EVENT_SECTION or \
    115            Type == DT.TYPE_BOOTMODE_SECTION:
    116             for Item in SepcialSectionList:
    117                 if self.SpecialComments.has_key(Type):           
    118                     ObjList = self.SpecialComments[Type]
    119                     ObjList.append(Item)
    120                     self.SpecialComments[Type] = ObjList
    121                 else:
    122                     ObjList = []
    123                     ObjList.append(Item)
    124                     self.SpecialComments[Type] = ObjList
    125            
    126         return True
    127     
    128     def GetSpecialComments(self):
    129         return self.SpecialComments
    130 
    131 
    132 
    133 ## ErrorInInf

    134 # 

    135 # An encapsulate of Error for INF parser.

    136 # 

    137 def ErrorInInf(Message=None, ErrorCode=None, LineInfo=None, RaiseError=True):
    138     if ErrorCode == None:
    139         ErrorCode = ToolError.FORMAT_INVALID
    140     if LineInfo == None:
    141         LineInfo = ['', -1, '']
    142     Logger.Error("InfParser", 
    143                  ErrorCode, 
    144                  Message=Message, 
    145                  File=LineInfo[0], 
    146                  Line=LineInfo[1],
    147                  ExtraData=LineInfo[2], 
    148                  RaiseError=RaiseError)