4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This file is used to define class objects for DEC file. It will consumed by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This program and the accompanying materials are licensed and made available
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# under the terms and conditions of the BSD License which accompanies this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## Import modules
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## _DecComments
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Base class for all data objects which have head and tail comments
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ##constructor
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetComments
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetHeadComment
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## SetHeadComment
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Comment: comment content
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetTailComment
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## SetTailComment
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Comment: comment content
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## _DecBaseObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Base class that hold common info
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Key is combined with (Arch, SectionType)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Default is common
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self._PackagePath, self._FileName = os.path.split(PkgFullName)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetSectionName
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetPackagePath
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetPackageFile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetPackageFullName
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Add sub-item to current object, sub-class should override it if needed
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Item: Sub-item to be added
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Scope: A list store section name and arch info
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## _GetItemByArch
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Helper class used by sub-class
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Arch: arch
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## _GetAllItems
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Get all items, union all arches, items in returned list are unique
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## _DecItemBaseObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Module type and arch the item belongs to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Item's arch, if PCD, also include PCD type
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetArchList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecDefineObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Class to hold define section infomation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetPackageSpecification
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetPackageName
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetPackageGuid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetPackageVersion
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetPackageUniFile
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetDefines
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetAllDefines
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecDefineItemObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Each item of define section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## __hash__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return str(self.ArchAndModuleType) + '\n' + self.Key + \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecIncludeObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Class to hold include section info
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetIncludes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetAllIncludes
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecIncludeItemObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Item of include section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## __hash__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecLibraryclassObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Class to hold library class section info
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self._PackagePath, self._FileName = os.path.split(PkgFullName)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetLibraryclasses
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetAllLibraryclasses
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecLibraryclassItemObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Item of library class section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass DecLibraryclassItemObject(_DecItemBaseObject):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## __hash__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecPcdObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Class to hold PCD section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # Diff from base class
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Item: Item
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Scope: Scope
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param PcdType: PcdType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Arch: Arch
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetPcdsByType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param PcdType: PcdType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecPcdItemObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Item of PCD section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @param _DecItemBaseObject: _DecItemBaseObject object
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## __hash__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return hash(self.TokenSpaceGuidCName + self.TokenCName)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetArchListOfType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param PcdType: PcdType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecGuidObjectBase
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Base class for PPI, Protocol, and GUID.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Hold same data but has different method for clarification in sub-class
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @param _DecBaseObject: Dec Base Object
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetGuidStyleItems
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Arch: Arch
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetGuidStyleAllItems
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecGuidItemObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Item of GUID, PPI and Protocol section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @param _DecItemBaseObject: Dec Item Base Object
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## __hash__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecGuidObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Class for GUID section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @param DecGuidObjectBase: Dec Guid Object Base
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetGuids
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Arch: Arch
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetAllGuids
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecPpiObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Class for PPI seciont
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @param DecGuidObjectBase: Dec Guid Object Base
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Arch: Arch
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetAllPpis
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecProtocolObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Class for protocol section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @param DecGuidObjectBase: Dec Guid Object Base
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetProtocols
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Arch: Arch
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetAllProtocols
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecUserExtensionObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Class for user extension section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @param _DecBaseObject: Dec Guid Object Base
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetProtocols
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Item: Item
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Scope: Scope
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## GetAllUserExtensions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## DecUserExtensionItemObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Item for user extension section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# @param _DecItemBaseObject: Dec Item Base Object