## @file
# This file is used to define common class objects for INF file.
# It will consumed by InfParser
#
# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent

'''
InfCommonObject
'''

## InfLineCommentObject
#
#  Comment Object for any line in the INF file
#
#  #
#  # HeaderComment
#  #
#  Line # TailComment
#
class InfLineCommentObject():
    def __init__(self):
        self.HeaderComments = ''
        self.TailComments = ''

    def SetHeaderComments(self, HeaderComments):
        self.HeaderComments = HeaderComments

    def GetHeaderComments(self):
        return self.HeaderComments

    def SetTailComments(self, TailComments):
        self.TailComments = TailComments

    def GetTailComments(self):
        return self.TailComments

## CurrentLine
#
class CurrentLine():
    def __init__(self):
        self.LineNo = ''
        self.LineString = ''
        self.FileName = ''

    ## SetLineNo
    #
    # @param LineNo: LineNo
    #
    def SetLineNo(self, LineNo):
        self.LineNo = LineNo

    ## GetLineNo
    #
    def GetLineNo(self):
        return self.LineNo

    ## SetLineString
    #
    # @param LineString: Line String content
    #
    def SetLineString(self, LineString):
        self.LineString = LineString

    ## GetLineString
    #
    def GetLineString(self):
        return self.LineString

    ## SetFileName
    #
    # @param FileName: File Name
    #
    def SetFileName(self, FileName):
        self.FileName = FileName

    ## GetFileName
    #
    def GetFileName(self):
        return self.FileName

##
# Inf Section common data
#
class InfSectionCommonDef():
    def __init__(self):
        #
        # #
        # # HeaderComments at here
        # #
        # [xxSection] TailComments at here
        # data
        #
        self.HeaderComments = ''
        self.TailComments   = ''
        #
        # The support arch list of this section
        #
        self.SupArchList  = []

        #
        # Store all section content
        # Key is supported Arch
        #
        self.AllContent   = {}

    ## SetHeaderComments
    #
    # @param HeaderComments: HeaderComments
    #
    def SetHeaderComments(self, HeaderComments):
        self.HeaderComments = HeaderComments

    ## GetHeaderComments
    #
    def GetHeaderComments(self):
        return self.HeaderComments

    ## SetTailComments
    #
    # @param TailComments: TailComments
    #
    def SetTailComments(self, TailComments):
        self.TailComments = TailComments

    ## GetTailComments
    #
    def GetTailComments(self):
        return self.TailComments

    ## SetSupArchList
    #
    # @param Arch: Arch
    #
    def SetSupArchList(self, Arch):
        if Arch not in self.SupArchList:
            self.SupArchList.append(Arch)

    ## GetSupArchList
    #
    def GetSupArchList(self):
        return self.SupArchList

    ## SetAllContent
    #
    # @param ArchList: ArchList
    # @param Content: Content
    #
    def SetAllContent(self, Content):
        self.AllContent = Content

    ## GetAllContent
    #
    def GetAllContent(self):
        return self.AllContent