## @file
# This file is used to define a class object to describe a package
#
# Copyright (c) 2011 - 2018, Intel Corporation. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent

'''
PackageObject
'''

##
# Import Modules
#
from Object.POM.CommonObject import CommonPropertiesObject
from Object.POM.CommonObject import IdentificationObject
from Object.POM.CommonObject import CommonHeaderObject
from Object.POM.CommonObject import BinaryHeaderObject
from Library.Misc import Sdict

## StandardIncludeFileObject
#
class StandardIncludeFileObject(CommonPropertiesObject):
    def __init__(self):
        CommonPropertiesObject.__init__(self)
        self.IncludeFile = ''

    def SetIncludeFile(self, IncludeFile):
        self.IncludeFile = IncludeFile

    def GetIncludeFile(self):
        return self.IncludeFile

## PackageIncludeFileObject
#
class PackageIncludeFileObject(StandardIncludeFileObject):
    pass

##
# PackageObject
#
class PackageObject(IdentificationObject, CommonHeaderObject, BinaryHeaderObject):
    def __init__(self):
        IdentificationObject.__init__(self)
        CommonHeaderObject.__init__(self)
        BinaryHeaderObject.__init__(self)
        #
        # LibraryClassObject
        #
        self.LibraryClassList = []
        #
        # FileObject
        #
        self.IncludePathList = []
        #
        # StandardIncludeFileObject
        #
        self.StandardIncludeFileList = []
        #
        # PackageIncludeFileObject
        #
        self.PackageIncludeFileList = []
        #
        # Include and Arch List, item is (IncludePath, SupArchList-List of Arch), used during install package
        #
        self.IncludeArchList = []
        #
        # ProtocolObject
        #
        self.ProtocolList = []
        #
        # PpiObject
        #
        self.PpiList = []
        #
        # GuidObject
        #
        self.GuidList = []
        #
        # (PcdObject, PcdErrorObject)
        #
        self.PcdList = []
        #
        # {(PcdTokenSpaceGuidCName, PcdErrroNumber): PcdErrorMessageList}
        #
        self.PcdErrorCommentDict = {}
        #
        # UserExtensionObject
        #
        self.UserExtensionList = []
        #
        # MiscFileObject
        #
        self.MiscFileList = []
        self.ModuleDict = Sdict()
        #
        # ClonedRecordObject
        #
        self.ClonedFromList = []
        #
        # string object
        #
        self.ModuleFileList = []

        self.PcdChecks = []

        self.UNIFlag = False

    def SetLibraryClassList(self, LibraryClassList):
        self.LibraryClassList = LibraryClassList

    def GetLibraryClassList(self):
        return self.LibraryClassList

    def SetIncludePathList(self, IncludePathList):
        self.IncludePathList = IncludePathList

    def GetIncludePathList(self):
        return self.IncludePathList

    def SetIncludeArchList(self, IncludeArchList):
        self.IncludeArchList = IncludeArchList

    def GetIncludeArchList(self):
        return self.IncludeArchList

    def SetStandardIncludeFileList(self, StandardIncludeFileList):
        self.StandardIncludeFileList = StandardIncludeFileList

    def GetStandardIncludeFileList(self):
        return self.StandardIncludeFileList

    def SetPackageIncludeFileList(self, PackageIncludeFileList):
        self.PackageIncludeFileList = PackageIncludeFileList

    def GetPackageIncludeFileList(self):
        return self.PackageIncludeFileList

    def SetProtocolList(self, ProtocolList):
        self.ProtocolList = ProtocolList

    def GetProtocolList(self):
        return self.ProtocolList

    def SetPpiList(self, PpiList):
        self.PpiList = PpiList

    def GetPpiList(self):
        return self.PpiList

    def SetGuidList(self, GuidList):
        self.GuidList = GuidList

    def GetGuidList(self):
        return self.GuidList

    def SetPcdList(self, PcdList):
        self.PcdList = PcdList

    def GetPcdList(self):
        return self.PcdList

    def SetUserExtensionList(self, UserExtensionList):
        self.UserExtensionList = UserExtensionList

    def GetUserExtensionList(self):
        return self.UserExtensionList

    def SetMiscFileList(self, MiscFileList):
        self.MiscFileList = MiscFileList

    def GetMiscFileList(self):
        return self.MiscFileList

    def SetModuleDict(self, ModuleDict):
        self.ModuleDict = ModuleDict

    def GetModuleDict(self):
        return self.ModuleDict

    def SetClonedFromList(self, ClonedFromList):
        self.ClonedFromList = ClonedFromList

    def GetClonedFromList(self):
        return self.ClonedFromList

    def METHOD_NAME(self, ModuleFileList):
        self.ModuleFileList = ModuleFileList

    def GetModuleFileList(self):
        return self.ModuleFileList
