]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/UPT/Library/DataType.py
Sync BaseTools Branch (version r2271) to EDKII main trunk.
[mirror_edk2.git] / BaseTools / Source / Python / UPT / Library / DataType.py
diff --git a/BaseTools/Source/Python/UPT/Library/DataType.py b/BaseTools/Source/Python/UPT/Library/DataType.py
new file mode 100644 (file)
index 0000000..da6b69d
--- /dev/null
@@ -0,0 +1,919 @@
+## @file\r
+# This file is used to define class for data type structure\r
+#\r
+# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>\r
+#\r
+# This program and the accompanying materials are licensed and made available \r
+# under the terms and conditions of the BSD License which accompanies this \r
+# distribution. The full text of the license may be found at \r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+'''\r
+DataType\r
+'''\r
+\r
+##\r
+# Module List Items\r
+#\r
+MODULE_LIST = ["BASE",\r
+               "SEC",\r
+               "PEI_CORE",\r
+               "PEIM",\r
+               "DXE_CORE",\r
+               "DXE_DRIVER",\r
+               "SMM_CORE",\r
+               "DXE_RUNTIME_DRIVER",\r
+               "DXE_SAL_DRIVER",\r
+               "DXE_SMM_DRIVER",\r
+               "UEFI_DRIVER",\r
+               "UEFI_APPLICATION",\r
+               "USER_DEFINED"]\r
+\r
+VALID_DEPEX_MODULE_TYPE_LIST = ["PEIM",\r
+                                "DXE_DRIVER",\r
+                                "DXE_SMM_DRIVER",\r
+                                "DXE_RUNTIME_DRIVER",\r
+                                "DXE_SAL_DRIVER",\r
+                                "UEFI_DRIVER",\r
+                                ]\r
+##\r
+# Usage List Items\r
+#\r
+USAGE_LIST = ["CONSUMES",\r
+              "SOMETIMES_CONSUMES",\r
+              "PRODUCES",\r
+              "SOMETIMES_PRODUCES"]\r
+\r
+LANGUAGE_EN_US = 'en-US'\r
+\r
+USAGE_ITEM_PRODUCES           = 'PRODUCES'\r
+USAGE_ITEM_SOMETIMES_PRODUCES = 'SOMETIMES_PRODUCES'\r
+USAGE_ITEM_CONSUMES           = 'CONSUMES'\r
+USAGE_ITEM_SOMETIMES_CONSUMES = 'SOMETIMES_CONSUMES'\r
+USAGE_ITEM_TO_START           = 'TO_START'\r
+USAGE_ITEM_BY_START           = 'BY_START'\r
+USAGE_ITEM_NOTIFY             = 'NOTIFY'\r
+USAGE_ITEM_UNDEFINED          = 'UNDEFINED'\r
+\r
+USAGE_CONSUMES_LIST = [USAGE_ITEM_CONSUMES,\r
+                       'CONSUMED',\r
+                       'ALWAYS_CONSUMED',\r
+                       'ALWAYS_CONSUMES'                     \r
+                       ]\r
+\r
+USAGE_PRODUCES_LIST = [USAGE_ITEM_PRODUCES,\r
+                       'PRODUCED',\r
+                       'ALWAYS_PRODUCED',\r
+                       'ALWAYS_PRODUCES'                     \r
+                       ]\r
+\r
+USAGE_SOMETIMES_PRODUCES_LIST = [USAGE_ITEM_SOMETIMES_PRODUCES,\r
+                                 'SOMETIMES_PRODUCED'\r
+                                 ]\r
+\r
+USAGE_SOMETIMES_CONSUMES_LIST = [USAGE_ITEM_SOMETIMES_CONSUMES,\r
+                                 'SOMETIMES_CONSUMED'\r
+                                 ]\r
+\r
+ITEM_UNDEFINED = 'UNDEFINED'\r
+\r
+\r
+#\r
+# Dictionary of usage tokens and their synonmys\r
+#  \r
+ALL_USAGE_TOKENS = {\r
+  "PRODUCES"           : "PRODUCES",\r
+  "PRODUCED"           : "PRODUCES",\r
+  "ALWAYS_PRODUCES"    : "PRODUCES",\r
+  "ALWAYS_PRODUCED"    : "PRODUCES",\r
+  "SOMETIMES_PRODUCES" : "SOMETIMES_PRODUCES",\r
+  "SOMETIMES_PRODUCED" : "SOMETIMES_PRODUCES",\r
+  "CONSUMES"           : "CONSUMES",\r
+  "CONSUMED"           : "CONSUMES",\r
+  "ALWAYS_CONSUMES"    : "CONSUMES",\r
+  "ALWAYS_CONSUMED"    : "CONSUMES",\r
+  "SOMETIMES_CONSUMES" : "SOMETIMES_CONSUMES",\r
+  "SOMETIMES_CONSUMED" : "SOMETIMES_CONSUMES",\r
+  "SOMETIME_CONSUMES"  : "SOMETIMES_CONSUMES",\r
+  "UNDEFINED"          : "UNDEFINED" \r
+  }\r
+\r
+PROTOCOL_USAGE_TOKENS = {\r
+  "TO_START"           : "TO_START",\r
+  "BY_START"           : "BY_START"\r
+  }\r
\r
+PROTOCOL_USAGE_TOKENS.update (ALL_USAGE_TOKENS)\r
+  \r
+#\r
+# Dictionary of GUID type tokens\r
+#  \r
+GUID_TYPE_TOKENS = {  \r
+  "Event"          : "Event",\r
+  "File"           : "File",\r
+  "FV"             : "FV",\r
+  "GUID"           : "GUID",\r
+  "Guid"           : "GUID",\r
+  "HII"            : "HII",\r
+  "HOB"            : "HOB",\r
+  "Hob"            : "HOB",\r
+  "Hob:"           : "HOB",\r
+  "SystemTable"    : "SystemTable",\r
+  "TokenSpaceGuid" : "TokenSpaceGuid",\r
+  "UNDEFINED"      : "UNDEFINED" \r
+  }\r
+  \r
+#\r
+# Dictionary of Protocol Notify tokens and their synonyms\r
+#  \r
+PROTOCOL_NOTIFY_TOKENS = {  \r
+  "NOTIFY"          : "NOTIFY",\r
+  "PROTOCOL_NOTIFY" : "NOTIFY",\r
+  "UNDEFINED"       : "UNDEFINED" \r
+  }\r
+\r
+#\r
+# Dictionary of PPI Notify tokens and their synonyms\r
+#  \r
+PPI_NOTIFY_TOKENS = {  \r
+  "NOTIFY"     : "NOTIFY",\r
+  "PPI_NOTIFY" : "NOTIFY",\r
+  "UNDEFINED"  : "UNDEFINED" \r
+  }\r
+\r
+EVENT_TOKENS = {\r
+  "EVENT_TYPE_PERIODIC_TIMER" : "EVENT_TYPE_PERIODIC_TIMER",\r
+  "EVENT_TYPE_RELATIVE_TIMER" : "EVENT_TYPE_RELATIVE_TIMER",\r
+  "UNDEFINED"                 : "UNDEFINED" \r
+  }\r
+\r
+BOOTMODE_TOKENS = {\r
+  "FULL"                  : "FULL",\r
+  "MINIMAL"               : "MINIMAL",\r
+  "NO_CHANGE"             : "NO_CHANGE",\r
+  "DIAGNOSTICS"           : "DIAGNOSTICS",\r
+  "DEFAULT"               : "DEFAULT",\r
+  "S2_RESUME"             : "S2_RESUME",\r
+  "S3_RESUME"             : "S3_RESUME",\r
+  "S4_RESUME"             : "S4_RESUME",\r
+  "S5_RESUME"             : "S5_RESUME",\r
+  "FLASH_UPDATE"          : "FLASH_UPDATE",\r
+  "RECOVERY_FULL"         : "RECOVERY_FULL",\r
+  "RECOVERY_MINIMAL"      : "RECOVERY_MINIMAL",\r
+  "RECOVERY_NO_CHANGE"    : "RECOVERY_NO_CHANGE",\r
+  "RECOVERY_DIAGNOSTICS"  : "RECOVERY_DIAGNOSTICS",\r
+  "RECOVERY_DEFAULT"      : "RECOVERY_DEFAULT",\r
+  "RECOVERY_S2_RESUME"    : "RECOVERY_S2_RESUME",\r
+  "RECOVERY_S3_RESUME"    : "RECOVERY_S3_RESUME",\r
+  "RECOVERY_S4_RESUME"    : "RECOVERY_S4_RESUME",\r
+  "RECOVERY_S5_RESUME"    : "RECOVERY_S5_RESUME",\r
+  "RECOVERY_FLASH_UPDATE" : "RECOVERY_FLASH_UPDATE",\r
+  "UNDEFINED"             : "UNDEFINED" \r
+  }\r
+\r
+HOB_TOKENS = {  \r
+  "PHIT"                : "PHIT",\r
+  "MEMORY_ALLOCATION"   : "MEMORY_ALLOCATION",\r
+  "LOAD_PEIM"           : "LOAD_PEIM",\r
+  "RESOURCE_DESCRIPTOR" : "RESOURCE_DESCRIPTOR",\r
+  "FIRMWARE_VOLUME"     : "FIRMWARE_VOLUME",\r
+  "UNDEFINED"           : "UNDEFINED" \r
+  }\r
+\r
+##\r
+# Usage List Items for Protocol\r
+#\r
+PROTOCOL_USAGE_LIST = USAGE_LIST + ["TO_START", "BY_START"]\r
+\r
+##\r
+# End of Line\r
+# Use this but not os.linesep for os.linesep has bug in it.\r
+#\r
+END_OF_LINE = '\n'\r
+\r
+##\r
+# Arch List Items\r
+#\r
+ARCH_LIST = ["IA32",\r
+             "X64",\r
+             "IPF",\r
+             "EBC",\r
+             "COMMON"]\r
+##\r
+# PCD driver type list items\r
+#\r
+PCD_DIRVER_TYPE_LIST = ["PEI_PCD_DRIVER", "DXE_PCD_DRIVER"]\r
+\r
+##\r
+# Boot Mode List Items\r
+#\r
+BOOT_MODE_LIST = ["FULL",\r
+                  "MINIMAL",\r
+                  "NO_CHANGE", \r
+                  "DIAGNOSTICS", \r
+                  "DEFAULT", \r
+                  "S2_RESUME",\r
+                  "S3_RESUME", \r
+                  "S4_RESUME", \r
+                  "S5_RESUME", \r
+                  "FLASH_UPDATE",\r
+                  "RECOVERY_FULL", \r
+                  "RECOVERY_MINIMAL", \r
+                  "RECOVERY_NO_CHANGE",\r
+                  "RECOVERY_DIAGNOSTICS", \r
+                  "RECOVERY_DEFAULT",\r
+                  "RECOVERY_S2_RESUME", \r
+                  "RECOVERY_S3_RESUME",\r
+                  "RECOVERY_S4_RESUME", \r
+                  "RECOVERY_S5_RESUME",\r
+                  "RECOVERY_FLASH_UPDATE"]\r
+\r
+##\r
+# Event Type List Items\r
+#\r
+EVENT_TYPE_LIST = ["EVENT_TYPE_PERIODIC_TIMER",\r
+                   "EVENT_TYPE_RELATIVE_TIMER"]\r
+\r
+##\r
+# Hob Type List Items\r
+#\r
+HOB_TYPE_LIST = ["PHIT", \r
+                 "MEMORY_ALLOCATION",\r
+                 "RESOURCE_DESCRIPTOR", \r
+                 "FIRMWARE_VOLUME",\r
+                 "LOAD_PEIM"]\r
+\r
+##\r
+# GUID_TYPE_LIST\r
+#\r
+GUID_TYPE_LIST = ["Event", "File", "FV", "GUID", "HII", "HOB",\r
+                  "SystemTable", "TokenSpaceGuid", "Variable"]\r
+##\r
+# PCD Usage Type List of Package\r
+#\r
+PCD_USAGE_TYPE_LIST_OF_PACKAGE = ["FeatureFlag", "PatchableInModule",\r
+                             "FixedAtBuild", "Dynamic", "DynamicEx"]\r
+\r
+##\r
+# PCD Usage Type List of Module\r
+#\r
+PCD_USAGE_TYPE_LIST_OF_MODULE = ["FEATUREPCD", "PATCHPCD", "FIXEDPCD", "PCD", "PCDEX"]\r
+##\r
+# PCD Usage Type List of UPT\r
+#\r
+PCD_USAGE_TYPE_LIST_OF_UPT = PCD_USAGE_TYPE_LIST_OF_MODULE\r
+\r
+##\r
+# Binary File Type List\r
+#\r
+BINARY_FILE_TYPE_LIST = ["GUID", "PE32", "PIC", "TE", "DXE_DEPEX", "VER", "UI", "COMPAT16", "FV", "BIN", "RAW",\r
+                         "ACPI", "ASL",\r
+                         "PEI_DEPEX",\r
+                         "SMM_DEPEX",\r
+                         "SUBTYPE_GUID"                                    \r
+                         ]\r
+BINARY_FILE_TYPE_LIST_IN_UDP = \\r
+                        ["GUID", "FREEFORM",\r
+                         "UEFI_IMAGE", "PE32", "PIC",\r
+                         "PEI_DEPEX", \r
+                         "DXE_DEPEX",\r
+                         "SMM_DEPEX",\r
+                         "FV", "TE",\r
+                         "BIN", "VER", "UI"                      \r
+                         ]\r
+\r
+##\r
+# Possible values for COMPONENT_TYPE, and their descriptions, are listed in \r
+# the table, \r
+# "Component (module) Types." For each component, the BASE_NAME and \r
+# COMPONENT_TYPE \r
+# are required. The COMPONENT_TYPE definition is case sensitive.\r
+#\r
+COMPONENT_TYPE_LIST = [\r
+                       "APPLICATION",\r
+                       "ACPITABLE",\r
+                       "APRIORI",\r
+                       "BINARY",\r
+                       "BS_DRIVER",\r
+                       "CONFIG",\r
+                       "FILE",\r
+                       "FVIMAGEFILE",\r
+                       "LIBRARY",\r
+                       "LOGO",\r
+                       "LEGACY16",\r
+                       "MICROCODE",\r
+                       "PE32_PEIM",\r
+                       "PEI_CORE",\r
+                       "RAWFILE",\r
+                       "RT_DRIVER",\r
+                       "SAL_RT_DRIVER",\r
+                       "SECURITY_CORE",\r
+                       "COMBINED_PEIM_DRIVER",\r
+                       "PIC_PEIM",\r
+                       "RELOCATABLE_PEIM"\r
+                       ]\r
+\r
+##\r
+# Common Definitions\r
+#\r
+TAB_SPLIT = '.'\r
+TAB_COMMENT_EDK1_START = '/*'\r
+TAB_COMMENT_EDK1_END = '*/'\r
+TAB_COMMENT_EDK1_SPLIT = '//'\r
+TAB_COMMENT_SPLIT = '#'\r
+TAB_EQUAL_SPLIT = '='\r
+TAB_DEQUAL_SPLIT = '=='\r
+TAB_VALUE_SPLIT = '|'\r
+TAB_COMMA_SPLIT = ','\r
+TAB_SPACE_SPLIT = ' '\r
+TAB_UNDERLINE_SPLIT = '_'\r
+TAB_SEMI_COLON_SPLIT = ';'\r
+TAB_COLON_SPLIT = ':'\r
+TAB_SECTION_START = '['\r
+TAB_SECTION_END = ']'\r
+TAB_OPTION_START = '<'\r
+TAB_OPTION_END  = '>'\r
+TAB_SLASH = '\\'\r
+TAB_BACK_SLASH = '/'\r
+TAB_SPECIAL_COMMENT = '##'\r
+TAB_HEADER_COMMENT = '@file'\r
+TAB_STAR = "*"\r
+\r
+TAB_EDK_SOURCE = '$(EDK_SOURCE)'\r
+TAB_EFI_SOURCE = '$(EFI_SOURCE)'\r
+TAB_WORKSPACE = '$(WORKSPACE)'\r
+\r
+TAB_ARCH_NULL = ''\r
+TAB_ARCH_COMMON = 'COMMON'\r
+TAB_ARCH_IA32 = 'IA32'\r
+TAB_ARCH_X64 = 'X64'\r
+TAB_ARCH_IPF = 'IPF'\r
+TAB_ARCH_ARM = 'ARM'\r
+TAB_ARCH_EBC = 'EBC'\r
+\r
+ARCH_LIST = \\r
+[TAB_ARCH_IA32, TAB_ARCH_X64, TAB_ARCH_IPF, TAB_ARCH_ARM, TAB_ARCH_EBC]\r
+\r
+SUP_MODULE_BASE = 'BASE'\r
+SUP_MODULE_SEC = 'SEC'\r
+SUP_MODULE_PEI_CORE = 'PEI_CORE'\r
+SUP_MODULE_PEIM = 'PEIM'\r
+SUP_MODULE_DXE_CORE = 'DXE_CORE'\r
+SUP_MODULE_DXE_DRIVER = 'DXE_DRIVER'\r
+SUP_MODULE_DXE_RUNTIME_DRIVER = 'DXE_RUNTIME_DRIVER'\r
+SUP_MODULE_DXE_SAL_DRIVER = 'DXE_SAL_DRIVER'\r
+SUP_MODULE_DXE_SMM_DRIVER = 'DXE_SMM_DRIVER'\r
+SUP_MODULE_UEFI_DRIVER = 'UEFI_DRIVER'\r
+SUP_MODULE_UEFI_APPLICATION = 'UEFI_APPLICATION'\r
+SUP_MODULE_USER_DEFINED = 'USER_DEFINED'\r
+SUP_MODULE_SMM_CORE = 'SMM_CORE'\r
+\r
+SUP_MODULE_LIST = \\r
+[SUP_MODULE_BASE, SUP_MODULE_SEC, SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM, \\r
+SUP_MODULE_DXE_CORE, SUP_MODULE_DXE_DRIVER, \\r
+                   SUP_MODULE_DXE_RUNTIME_DRIVER, SUP_MODULE_DXE_SAL_DRIVER, \\r
+                   SUP_MODULE_DXE_SMM_DRIVER, SUP_MODULE_UEFI_DRIVER, \\r
+                   SUP_MODULE_UEFI_APPLICATION, SUP_MODULE_USER_DEFINED, \\r
+                   SUP_MODULE_SMM_CORE]\r
+SUP_MODULE_LIST_STRING = TAB_VALUE_SPLIT.join(l for l in SUP_MODULE_LIST)\r
+\r
+EDK_COMPONENT_TYPE_LIBRARY = 'LIBRARY'\r
+EDK_COMPONENT_TYPE_SECUARITY_CORE = 'SECUARITY_CORE'\r
+EDK_COMPONENT_TYPE_PEI_CORE = 'PEI_CORE'\r
+EDK_COMPONENT_TYPE_COMBINED_PEIM_DRIVER = 'COMBINED_PEIM_DRIVER'\r
+EDK_COMPONENT_TYPE_PIC_PEIM = 'PIC_PEIM'\r
+EDK_COMPONENT_TYPE_RELOCATABLE_PEIM = 'RELOCATABLE_PEIM'\r
+EDK_COMPONENT_TYPE_BS_DRIVER = 'BS_DRIVER'\r
+EDK_COMPONENT_TYPE_RT_DRIVER = 'RT_DRIVER'\r
+EDK_COMPONENT_TYPE_SAL_RT_DRIVER = 'SAL_RT_DRIVER'\r
+EDK_COMPONENT_TYPE_APPLICATION = 'APPLICATION'\r
+EDK_NAME   = 'EDK'\r
+EDKII_NAME = 'EDKII'\r
+\r
+BINARY_FILE_TYPE_FW = 'FW'\r
+BINARY_FILE_TYPE_GUID = 'GUID'\r
+BINARY_FILE_TYPE_PREEFORM = 'PREEFORM'\r
+BINARY_FILE_TYPE_UEFI_APP = 'UEFI_APP'\r
+BINARY_FILE_TYPE_UNI_UI = 'UNI_UI'\r
+BINARY_FILE_TYPE_SEC_UI = 'SEC_UI'\r
+BINARY_FILE_TYPE_UNI_VER = 'UNI_VER'\r
+BINARY_FILE_TYPE_SEC_VER = 'SEC_VER'\r
+BINARY_FILE_TYPE_LIB = 'LIB'\r
+BINARY_FILE_TYPE_PE32 = 'PE32'\r
+BINARY_FILE_TYPE_PIC = 'PIC'\r
+BINARY_FILE_TYPE_PEI_DEPEX = 'PEI_DEPEX'\r
+BINARY_FILE_TYPE_DXE_DEPEX = 'DXE_DEPEX'\r
+BINARY_FILE_TYPE_SMM_DEPEX = 'SMM_DEPEX'\r
+BINARY_FILE_TYPE_TE = 'TE'\r
+BINARY_FILE_TYPE_VER = 'VER'\r
+BINARY_FILE_TYPE_UI = 'UI'\r
+BINARY_FILE_TYPE_BIN = 'BIN'\r
+BINARY_FILE_TYPE_FV = 'FV'\r
+BINARY_FILE_TYPE_UI_LIST = [BINARY_FILE_TYPE_UNI_UI,\r
+                            BINARY_FILE_TYPE_SEC_UI,\r
+                            BINARY_FILE_TYPE_UI\r
+                            ] \r
+BINARY_FILE_TYPE_VER_LIST = [BINARY_FILE_TYPE_UNI_VER,\r
+                            BINARY_FILE_TYPE_SEC_VER,\r
+                            BINARY_FILE_TYPE_VER\r
+                            ]\r
+\r
+DEPEX_SECTION_LIST = ['<PEI_DEPEX>',\r
+                      '<DXE_DEPEX>',\r
+                      '<SMM_DEPEX>'\r
+                      ]\r
+\r
+PLATFORM_COMPONENT_TYPE_LIBRARY = 'LIBRARY'\r
+PLATFORM_COMPONENT_TYPE_LIBRARY_CLASS = 'LIBRARY_CLASS'\r
+PLATFORM_COMPONENT_TYPE_MODULE = 'MODULE'\r
+\r
+TAB_LIBRARIES = 'Libraries'\r
+\r
+TAB_SOURCE = 'Source'\r
+TAB_SOURCES = 'Sources'\r
+TAB_SOURCES_COMMON = TAB_SOURCES + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_SOURCES_IA32 = TAB_SOURCES + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_SOURCES_X64 = TAB_SOURCES + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_SOURCES_IPF = TAB_SOURCES + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_SOURCES_ARM = TAB_SOURCES + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_SOURCES_EBC = TAB_SOURCES + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_BINARIES = 'Binaries'\r
+TAB_BINARIES_COMMON = TAB_BINARIES + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_BINARIES_IA32 = TAB_BINARIES + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_BINARIES_X64 = TAB_BINARIES + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_BINARIES_IPF = TAB_BINARIES + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_BINARIES_ARM = TAB_BINARIES + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_BINARIES_EBC = TAB_BINARIES + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_INCLUDES = 'Includes'\r
+TAB_INCLUDES_COMMON = TAB_INCLUDES + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_INCLUDES_IA32 = TAB_INCLUDES + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_INCLUDES_X64 = TAB_INCLUDES + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_INCLUDES_IPF = TAB_INCLUDES + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_INCLUDES_ARM = TAB_INCLUDES + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_INCLUDES_EBC = TAB_INCLUDES + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_GUIDS = 'Guids'\r
+TAB_GUIDS_COMMON = TAB_GUIDS + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_GUIDS_IA32 = TAB_GUIDS + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_GUIDS_X64 = TAB_GUIDS + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_GUIDS_IPF = TAB_GUIDS + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_GUIDS_ARM = TAB_GUIDS + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_GUIDS_EBC = TAB_GUIDS + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_PROTOCOLS = 'Protocols'\r
+TAB_PROTOCOLS_COMMON = TAB_PROTOCOLS + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_PROTOCOLS_IA32 = TAB_PROTOCOLS + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_PROTOCOLS_X64 = TAB_PROTOCOLS + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_PROTOCOLS_IPF = TAB_PROTOCOLS + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_PROTOCOLS_ARM = TAB_PROTOCOLS + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_PROTOCOLS_EBC = TAB_PROTOCOLS + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_PPIS = 'Ppis'\r
+TAB_PPIS_COMMON = TAB_PPIS + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_PPIS_IA32 = TAB_PPIS + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_PPIS_X64 = TAB_PPIS + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_PPIS_IPF = TAB_PPIS + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_PPIS_ARM = TAB_PPIS + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_PPIS_EBC = TAB_PPIS + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_LIBRARY_CLASSES = 'LibraryClasses'\r
+TAB_LIBRARY_CLASSES_COMMON = TAB_LIBRARY_CLASSES + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_LIBRARY_CLASSES_IA32 = TAB_LIBRARY_CLASSES + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_LIBRARY_CLASSES_X64 = TAB_LIBRARY_CLASSES + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_LIBRARY_CLASSES_IPF = TAB_LIBRARY_CLASSES + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_LIBRARY_CLASSES_ARM = TAB_LIBRARY_CLASSES + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_LIBRARY_CLASSES_EBC = TAB_LIBRARY_CLASSES + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_PACKAGES = 'Packages'\r
+TAB_PACKAGES_COMMON = TAB_PACKAGES + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_PACKAGES_IA32 = TAB_PACKAGES + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_PACKAGES_X64 = TAB_PACKAGES + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_PACKAGES_IPF = TAB_PACKAGES + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_PACKAGES_ARM = TAB_PACKAGES + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_PACKAGES_EBC = TAB_PACKAGES + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_PCDS = 'Pcds'\r
+TAB_PCDS_FIXED_AT_BUILD = 'FixedAtBuild'\r
+TAB_PCDS_PATCHABLE_IN_MODULE = 'PatchableInModule'\r
+TAB_PCDS_FEATURE_FLAG = 'FeatureFlag'\r
+TAB_PCDS_DYNAMIC_EX = 'DynamicEx'\r
+TAB_PCDS_DYNAMIC_EX_DEFAULT = 'DynamicExDefault'\r
+TAB_PCDS_DYNAMIC_EX_VPD = 'DynamicExVpd'\r
+TAB_PCDS_DYNAMIC_EX_HII = 'DynamicExHii'\r
+TAB_PCDS_DYNAMIC = 'Dynamic'\r
+TAB_PCDS_DYNAMIC_DEFAULT = 'DynamicDefault'\r
+TAB_PCDS_DYNAMIC_VPD = 'DynamicVpd'\r
+TAB_PCDS_DYNAMIC_HII = 'DynamicHii'\r
+\r
+TAB_PTR_TYPE_PCD = 'VOID*'\r
+\r
+PCD_DYNAMIC_TYPE_LIST = [TAB_PCDS_DYNAMIC, TAB_PCDS_DYNAMIC_DEFAULT, \\r
+                         TAB_PCDS_DYNAMIC_VPD, TAB_PCDS_DYNAMIC_HII]\r
+PCD_DYNAMIC_EX_TYPE_LIST = [TAB_PCDS_DYNAMIC_EX, TAB_PCDS_DYNAMIC_EX_DEFAULT, \\r
+                            TAB_PCDS_DYNAMIC_EX_VPD, TAB_PCDS_DYNAMIC_EX_HII]\r
+\r
+## Dynamic-ex PCD types\r
+#\r
+gDYNAMIC_EX_PCD = [TAB_PCDS_DYNAMIC_EX, TAB_PCDS_DYNAMIC_EX_DEFAULT, \\r
+                 TAB_PCDS_DYNAMIC_EX_VPD, TAB_PCDS_DYNAMIC_EX_HII]\r
+\r
+TAB_PCDS_FIXED_AT_BUILD_NULL = TAB_PCDS + TAB_PCDS_FIXED_AT_BUILD\r
+TAB_PCDS_FIXED_AT_BUILD_COMMON = TAB_PCDS + TAB_PCDS_FIXED_AT_BUILD + \\r
+TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_PCDS_FIXED_AT_BUILD_IA32 = TAB_PCDS + TAB_PCDS_FIXED_AT_BUILD + \\r
+TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_PCDS_FIXED_AT_BUILD_X64 = TAB_PCDS + TAB_PCDS_FIXED_AT_BUILD + \\r
+TAB_SPLIT + TAB_ARCH_X64\r
+TAB_PCDS_FIXED_AT_BUILD_IPF = TAB_PCDS + TAB_PCDS_FIXED_AT_BUILD + \\r
+TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_PCDS_FIXED_AT_BUILD_ARM = TAB_PCDS + TAB_PCDS_FIXED_AT_BUILD + \\r
+TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_PCDS_FIXED_AT_BUILD_EBC = TAB_PCDS + TAB_PCDS_FIXED_AT_BUILD + \\r
+TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_PCDS_PATCHABLE_IN_MODULE_NULL = TAB_PCDS + TAB_PCDS_PATCHABLE_IN_MODULE\r
+TAB_PCDS_PATCHABLE_IN_MODULE_COMMON = TAB_PCDS + TAB_PCDS_PATCHABLE_IN_MODULE \\r
++ TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_PCDS_PATCHABLE_IN_MODULE_IA32 = TAB_PCDS + TAB_PCDS_PATCHABLE_IN_MODULE + \\r
+TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_PCDS_PATCHABLE_IN_MODULE_X64 = TAB_PCDS + TAB_PCDS_PATCHABLE_IN_MODULE + \\r
+TAB_SPLIT + TAB_ARCH_X64\r
+TAB_PCDS_PATCHABLE_IN_MODULE_IPF = TAB_PCDS + TAB_PCDS_PATCHABLE_IN_MODULE + \\r
+TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_PCDS_PATCHABLE_IN_MODULE_ARM = TAB_PCDS + TAB_PCDS_PATCHABLE_IN_MODULE + \\r
+TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_PCDS_PATCHABLE_IN_MODULE_EBC = TAB_PCDS + TAB_PCDS_PATCHABLE_IN_MODULE + \\r
+TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_PCDS_FEATURE_FLAG_NULL = TAB_PCDS + TAB_PCDS_FEATURE_FLAG\r
+TAB_PCDS_FEATURE_FLAG_COMMON = TAB_PCDS + TAB_PCDS_FEATURE_FLAG + TAB_SPLIT \\r
++ TAB_ARCH_COMMON\r
+TAB_PCDS_FEATURE_FLAG_IA32 = TAB_PCDS + TAB_PCDS_FEATURE_FLAG + TAB_SPLIT + \\r
+TAB_ARCH_IA32\r
+TAB_PCDS_FEATURE_FLAG_X64 = TAB_PCDS + TAB_PCDS_FEATURE_FLAG + TAB_SPLIT + \\r
+TAB_ARCH_X64\r
+TAB_PCDS_FEATURE_FLAG_IPF = TAB_PCDS + TAB_PCDS_FEATURE_FLAG + TAB_SPLIT + \\r
+TAB_ARCH_IPF\r
+TAB_PCDS_FEATURE_FLAG_ARM = TAB_PCDS + TAB_PCDS_FEATURE_FLAG + TAB_SPLIT + \\r
+TAB_ARCH_ARM\r
+TAB_PCDS_FEATURE_FLAG_EBC = TAB_PCDS + TAB_PCDS_FEATURE_FLAG + TAB_SPLIT + \\r
+TAB_ARCH_EBC\r
+\r
+TAB_PCDS_DYNAMIC_EX_NULL = TAB_PCDS + TAB_PCDS_DYNAMIC_EX\r
+TAB_PCDS_DYNAMIC_EX_DEFAULT_NULL = TAB_PCDS + TAB_PCDS_DYNAMIC_EX_DEFAULT\r
+TAB_PCDS_DYNAMIC_EX_HII_NULL = TAB_PCDS + TAB_PCDS_DYNAMIC_EX_HII\r
+TAB_PCDS_DYNAMIC_EX_VPD_NULL = TAB_PCDS + TAB_PCDS_DYNAMIC_EX_VPD\r
+TAB_PCDS_DYNAMIC_EX_COMMON = TAB_PCDS + TAB_PCDS_DYNAMIC_EX + TAB_SPLIT + \\r
+TAB_ARCH_COMMON\r
+TAB_PCDS_DYNAMIC_EX_IA32 = TAB_PCDS + TAB_PCDS_DYNAMIC_EX + TAB_SPLIT + \\r
+TAB_ARCH_IA32\r
+TAB_PCDS_DYNAMIC_EX_X64 = TAB_PCDS + TAB_PCDS_DYNAMIC_EX + TAB_SPLIT + \\r
+TAB_ARCH_X64\r
+TAB_PCDS_DYNAMIC_EX_IPF = TAB_PCDS + TAB_PCDS_DYNAMIC_EX + TAB_SPLIT + \\r
+TAB_ARCH_IPF\r
+TAB_PCDS_DYNAMIC_EX_ARM = TAB_PCDS + TAB_PCDS_DYNAMIC_EX + TAB_SPLIT + \\r
+TAB_ARCH_ARM\r
+TAB_PCDS_DYNAMIC_EX_EBC = TAB_PCDS + TAB_PCDS_DYNAMIC_EX + TAB_SPLIT + \\r
+TAB_ARCH_EBC\r
+\r
+TAB_PCDS_DYNAMIC_NULL = TAB_PCDS + TAB_PCDS_DYNAMIC\r
+TAB_PCDS_DYNAMIC_DEFAULT_NULL = TAB_PCDS + TAB_PCDS_DYNAMIC_DEFAULT\r
+TAB_PCDS_DYNAMIC_HII_NULL = TAB_PCDS + TAB_PCDS_DYNAMIC_HII\r
+TAB_PCDS_DYNAMIC_VPD_NULL = TAB_PCDS + TAB_PCDS_DYNAMIC_VPD\r
+TAB_PCDS_DYNAMIC_COMMON = TAB_PCDS + TAB_PCDS_DYNAMIC + TAB_SPLIT + \\r
+TAB_ARCH_COMMON\r
+TAB_PCDS_DYNAMIC_IA32 = TAB_PCDS + TAB_PCDS_DYNAMIC + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_PCDS_DYNAMIC_X64 = TAB_PCDS + TAB_PCDS_DYNAMIC + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_PCDS_DYNAMIC_IPF = TAB_PCDS + TAB_PCDS_DYNAMIC + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_PCDS_DYNAMIC_ARM = TAB_PCDS + TAB_PCDS_DYNAMIC + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_PCDS_DYNAMIC_EBC = TAB_PCDS + TAB_PCDS_DYNAMIC + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_PCD_DYNAMIC_TYPE_LIST = [TAB_PCDS_DYNAMIC_DEFAULT_NULL, \\r
+                             TAB_PCDS_DYNAMIC_VPD_NULL, \\r
+                             TAB_PCDS_DYNAMIC_HII_NULL]\r
+TAB_PCD_DYNAMIC_EX_TYPE_LIST = [TAB_PCDS_DYNAMIC_EX_DEFAULT_NULL, \\r
+                                TAB_PCDS_DYNAMIC_EX_VPD_NULL, \\r
+                                TAB_PCDS_DYNAMIC_EX_HII_NULL]\r
+\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_PEI_PAGE_SIZE = \\r
+'PcdLoadFixAddressPeiCodePageNumber'\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_PEI_PAGE_SIZE_DATA_TYPE = 'UINT32'\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_DXE_PAGE_SIZE = \\r
+'PcdLoadFixAddressBootTimeCodePageNumber'\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_DXE_PAGE_SIZE_DATA_TYPE = 'UINT32'\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_RUNTIME_PAGE_SIZE = \\r
+'PcdLoadFixAddressRuntimeCodePageNumber'\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_RUNTIME_PAGE_SIZE_DATA_TYPE = 'UINT32'\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_SMM_PAGE_SIZE = \\r
+'PcdLoadFixAddressSmmCodePageNumber'\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_SMM_PAGE_SIZE_DATA_TYPE = 'UINT32'\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_LIST = \\r
+[TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_PEI_PAGE_SIZE, \\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_DXE_PAGE_SIZE, \\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_RUNTIME_PAGE_SIZE, \\r
+TAB_PCDS_PATCHABLE_LOAD_FIX_ADDRESS_SMM_PAGE_SIZE]\r
+PCD_SECTION_LIST = [TAB_PCDS_FIXED_AT_BUILD_NULL.upper(), \\r
+                    TAB_PCDS_PATCHABLE_IN_MODULE_NULL.upper(), \\r
+                    TAB_PCDS_FEATURE_FLAG_NULL.upper(), \\r
+                    TAB_PCDS_DYNAMIC_EX_NULL.upper(), \\r
+                    TAB_PCDS_DYNAMIC_NULL.upper()]\r
+INF_PCD_SECTION_LIST = ["FixedPcd".upper(), "FeaturePcd".upper(), \\r
+                        "PatchPcd".upper(), "Pcd".upper(), "PcdEx".upper()]\r
+\r
+TAB_DEPEX = 'Depex'\r
+TAB_DEPEX_COMMON = TAB_DEPEX + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_DEPEX_IA32 = TAB_DEPEX + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_DEPEX_X64 = TAB_DEPEX + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_DEPEX_IPF = TAB_DEPEX + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_DEPEX_ARM = TAB_DEPEX + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_DEPEX_EBC = TAB_DEPEX + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_SKUIDS = 'SkuIds'\r
+\r
+TAB_LIBRARIES = 'Libraries'\r
+TAB_LIBRARIES_COMMON = TAB_LIBRARIES + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_LIBRARIES_IA32 = TAB_LIBRARIES + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_LIBRARIES_X64 = TAB_LIBRARIES + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_LIBRARIES_IPF = TAB_LIBRARIES + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_LIBRARIES_ARM = TAB_LIBRARIES + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_LIBRARIES_EBC = TAB_LIBRARIES + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_COMPONENTS = 'Components'\r
+TAB_COMPONENTS_COMMON = TAB_COMPONENTS + TAB_SPLIT + TAB_ARCH_COMMON\r
+TAB_COMPONENTS_IA32 = TAB_COMPONENTS + TAB_SPLIT + TAB_ARCH_IA32\r
+TAB_COMPONENTS_X64 = TAB_COMPONENTS + TAB_SPLIT + TAB_ARCH_X64\r
+TAB_COMPONENTS_IPF = TAB_COMPONENTS + TAB_SPLIT + TAB_ARCH_IPF\r
+TAB_COMPONENTS_ARM = TAB_COMPONENTS + TAB_SPLIT + TAB_ARCH_ARM\r
+TAB_COMPONENTS_EBC = TAB_COMPONENTS + TAB_SPLIT + TAB_ARCH_EBC\r
+\r
+TAB_COMPONENTS_SOURCE_OVERRIDE_PATH = 'SOURCE_OVERRIDE_PATH'\r
+\r
+TAB_BUILD_OPTIONS = 'BuildOptions'\r
+\r
+TAB_DEFINE = 'DEFINE'\r
+TAB_NMAKE = 'Nmake'\r
+TAB_USER_EXTENSIONS = 'UserExtensions'\r
+TAB_INCLUDE = '!include'\r
+\r
+#\r
+# Common Define\r
+#\r
+TAB_COMMON_DEFINES = 'Defines'\r
+\r
+#\r
+# Inf Definitions\r
+#\r
+TAB_INF_DEFINES = TAB_COMMON_DEFINES\r
+TAB_INF_DEFINES_INF_VERSION = 'INF_VERSION'\r
+TAB_INF_DEFINES_BASE_NAME = 'BASE_NAME'\r
+TAB_INF_DEFINES_FILE_GUID = 'FILE_GUID'\r
+TAB_INF_DEFINES_MODULE_TYPE = 'MODULE_TYPE'\r
+TAB_INF_DEFINES_EFI_SPECIFICATION_VERSION = 'EFI_SPECIFICATION_VERSION'\r
+TAB_INF_DEFINES_UEFI_SPECIFICATION_VERSION = 'UEFI_SPECIFICATION_VERSION'\r
+TAB_INF_DEFINES_PI_SPECIFICATION_VERSION = 'PI_SPECIFICATION_VERSION'\r
+TAB_INF_DEFINES_EDK_RELEASE_VERSION = 'EDK_RELEASE_VERSION'\r
+TAB_INF_DEFINES_BINARY_MODULE = 'BINARY_MODULE'\r
+TAB_INF_DEFINES_LIBRARY_CLASS = 'LIBRARY_CLASS'\r
+TAB_INF_DEFINES_COMPONENT_TYPE = 'COMPONENT_TYPE'\r
+TAB_INF_DEFINES_MAKEFILE_NAME = 'MAKEFILE_NAME'\r
+TAB_INF_DEFINES_BUILD_NUMBER = 'BUILD_NUMBER'\r
+TAB_INF_DEFINES_BUILD_TYPE = 'BUILD_TYPE'\r
+TAB_INF_DEFINES_FFS_EXT = 'FFS_EXT'\r
+TAB_INF_DEFINES_FV_EXT = 'FV_EXT'\r
+TAB_INF_DEFINES_SOURCE_FV = 'SOURCE_FV'\r
+TAB_INF_DEFINES_PACKAGE   = 'PACKAGE'\r
+TAB_INF_DEFINES_VERSION_NUMBER = 'VERSION_NUMBER'\r
+TAB_INF_DEFINES_VERSION = 'VERSION'         \r
+TAB_INF_DEFINES_VERSION_STRING = 'VERSION_STRING'\r
+TAB_INF_DEFINES_PCD_IS_DRIVER = 'PCD_IS_DRIVER'\r
+TAB_INF_DEFINES_TIANO_EDK1_FLASHMAP_H = 'TIANO_EDK1_FLASHMAP_H'\r
+TAB_INF_DEFINES_ENTRY_POINT = 'ENTRY_POINT'\r
+TAB_INF_DEFINES_UNLOAD_IMAGE = 'UNLOAD_IMAGE'\r
+TAB_INF_DEFINES_CONSTRUCTOR = 'CONSTRUCTOR'\r
+TAB_INF_DEFINES_DESTRUCTOR = 'DESTRUCTOR'\r
+TAB_INF_DEFINES_PCI_VENDOR_ID  = 'PCI_VENDOR_ID'    \r
+TAB_INF_DEFINES_PCI_DEVICE_ID  = 'PCI_DEVICE_ID'    \r
+TAB_INF_DEFINES_PCI_CLASS_CODE = 'PCI_CLASS_CODE'   \r
+TAB_INF_DEFINES_PCI_REVISION   = 'PCI_REVISION'\r
+TAB_INF_DEFINES_PCI_COMPRESS   = 'PCI_COMPRESS'\r
+TAB_INF_DEFINES_DEFINE = 'DEFINE'\r
+TAB_INF_DEFINES_SPEC = 'SPEC'\r
+TAB_INF_DEFINES_UEFI_HII_RESOURCE_SECTION = 'UEFI_HII_RESOURCE_SECTION'\r
+TAB_INF_DEFINES_CUSTOM_MAKEFILE = 'CUSTOM_MAKEFILE'\r
+TAB_INF_DEFINES_MACRO = '__MACROS__'\r
+TAB_INF_DEFINES_SHADOW = 'SHADOW'\r
+TAB_INF_DEFINES_DPX_SOURCE = 'DPX_SOURCE'\r
+TAB_INF_FIXED_PCD = 'FixedPcd'\r
+TAB_INF_FEATURE_PCD = 'FeaturePcd'\r
+TAB_INF_PATCH_PCD = 'PatchPcd'\r
+TAB_INF_PCD = 'Pcd'\r
+TAB_INF_PCD_EX = 'PcdEx'\r
+TAB_INF_GUIDTYPE_VAR = 'Variable'\r
+\r
+#\r
+# Dec Definitions\r
+#\r
+TAB_DEC_DEFINES = TAB_COMMON_DEFINES\r
+TAB_DEC_DEFINES_DEC_SPECIFICATION = 'DEC_SPECIFICATION'\r
+TAB_DEC_DEFINES_PACKAGE_NAME = 'PACKAGE_NAME'\r
+TAB_DEC_DEFINES_PACKAGE_GUID = 'PACKAGE_GUID'\r
+TAB_DEC_DEFINES_PACKAGE_VERSION = 'PACKAGE_VERSION'\r
+TAB_DEC_DEFINES_PKG_UNI_FILE    = 'PKG_UNI_FILE'\r
+\r
+#\r
+# Dsc Definitions\r
+#\r
+TAB_DSC_DEFINES = TAB_COMMON_DEFINES\r
+TAB_DSC_DEFINES_PLATFORM_NAME = 'PLATFORM_NAME'\r
+TAB_DSC_DEFINES_PLATFORM_GUID = 'PLATFORM_GUID'\r
+TAB_DSC_DEFINES_PLATFORM_VERSION = 'PLATFORM_VERSION'\r
+TAB_DSC_DEFINES_DSC_SPECIFICATION = 'DSC_SPECIFICATION'\r
+TAB_DSC_DEFINES_OUTPUT_DIRECTORY = 'OUTPUT_DIRECTORY'\r
+TAB_DSC_DEFINES_SUPPORTED_ARCHITECTURES = 'SUPPORTED_ARCHITECTURES'\r
+TAB_DSC_DEFINES_BUILD_TARGETS = 'BUILD_TARGETS'\r
+TAB_DSC_DEFINES_SKUID_IDENTIFIER = 'SKUID_IDENTIFIER'\r
+TAB_DSC_DEFINES_FLASH_DEFINITION = 'FLASH_DEFINITION'\r
+TAB_DSC_DEFINES_BUILD_NUMBER = 'BUILD_NUMBER'\r
+TAB_DSC_DEFINES_MAKEFILE_NAME = 'MAKEFILE_NAME'\r
+TAB_DSC_DEFINES_BS_BASE_ADDRESS = 'BsBaseAddress'\r
+TAB_DSC_DEFINES_RT_BASE_ADDRESS = 'RtBaseAddress'\r
+TAB_DSC_DEFINES_DEFINE = 'DEFINE'\r
+TAB_FIX_LOAD_TOP_MEMORY_ADDRESS = 'FIX_LOAD_TOP_MEMORY_ADDRESS'\r
+\r
+#\r
+# TargetTxt Definitions\r
+#\r
+TAB_TAT_DEFINES_ACTIVE_PLATFORM = 'ACTIVE_PLATFORM'\r
+TAB_TAT_DEFINES_ACTIVE_MODULE = 'ACTIVE_MODULE'\r
+TAB_TAT_DEFINES_TOOL_CHAIN_CONF = 'TOOL_CHAIN_CONF'\r
+TAB_TAT_DEFINES_MULTIPLE_THREAD = 'MULTIPLE_THREAD'\r
+TAB_TAT_DEFINES_MAX_CONCURRENT_THREAD_NUMBER = 'MAX_CONCURRENT_THREAD_NUMBER'\r
+TAB_TAT_DEFINES_TARGET = 'TARGET'\r
+TAB_TAT_DEFINES_TOOL_CHAIN_TAG = 'TOOL_CHAIN_TAG'\r
+TAB_TAT_DEFINES_TARGET_ARCH = 'TARGET_ARCH'\r
+TAB_TAT_DEFINES_BUILD_RULE_CONF = "BUILD_RULE_CONF"\r
+\r
+#\r
+# ToolDef Definitions\r
+#\r
+TAB_TOD_DEFINES_TARGET = 'TARGET'\r
+TAB_TOD_DEFINES_TOOL_CHAIN_TAG = 'TOOL_CHAIN_TAG'\r
+TAB_TOD_DEFINES_TARGET_ARCH = 'TARGET_ARCH'\r
+TAB_TOD_DEFINES_COMMAND_TYPE = 'COMMAND_TYPE'\r
+TAB_TOD_DEFINES_FAMILY = 'FAMILY'\r
+TAB_TOD_DEFINES_BUILDRULEFAMILY = 'BUILDRULEFAMILY'\r
+\r
+#\r
+# Conditional Statements\r
+#\r
+TAB_IF = '!if'\r
+TAB_END_IF = '!endif'\r
+TAB_ELSE_IF = '!elseif'\r
+TAB_ELSE = '!else'\r
+TAB_IF_DEF = '!ifdef'\r
+TAB_IF_N_DEF = '!ifndef'\r
+TAB_IF_EXIST = '!if exist'\r
+\r
+#\r
+# Unknown section\r
+#\r
+TAB_UNKNOWN = 'UNKNOWN'\r
+\r
+#\r
+# Header section (virtual section for abstract, description, copyright, \r
+# license)\r
+#\r
+TAB_HEADER = 'Header'\r
+TAB_HEADER_ABSTRACT = 'Abstract'\r
+TAB_HEADER_DESCRIPTION = 'Description' \r
+TAB_HEADER_COPYRIGHT = 'Copyright'\r
+TAB_HEADER_LICENSE = 'License'\r
+#\r
+# Build database path\r
+#\r
+DATABASE_PATH = ":memory:" \r
+#\r
+# used by ECC\r
+#\r
+MODIFIER_LIST = ['IN', 'OUT', 'OPTIONAL', 'UNALIGNED', 'EFI_RUNTIMESERVICE', \\r
+                 'EFI_BOOTSERVICE', 'EFIAPI']\r
+#\r
+# Dependency Expression\r
+#\r
+DEPEX_SUPPORTED_OPCODE = ["BEFORE", "AFTER", "PUSH", "AND", "OR", "NOT", \\r
+                          "END", "SOR", "TRUE", "FALSE", '(', ')']\r
+\r
+TAB_STATIC_LIBRARY = "STATIC-LIBRARY-FILE"\r
+TAB_DYNAMIC_LIBRARY = "DYNAMIC-LIBRARY-FILE"\r
+TAB_FRAMEWORK_IMAGE = "EFI-IMAGE-FILE"\r
+TAB_C_CODE_FILE = "C-CODE-FILE"\r
+TAB_C_HEADER_FILE = "C-HEADER-FILE"\r
+TAB_UNICODE_FILE = "UNICODE-TEXT-FILE"\r
+TAB_DEPENDENCY_EXPRESSION_FILE = "DEPENDENCY-EXPRESSION-FILE"\r
+TAB_UNKNOWN_FILE = "UNKNOWN-TYPE-FILE"\r
+TAB_DEFAULT_BINARY_FILE = "_BINARY_FILE_"\r
+#\r
+# used to indicate the state of processing header comment section of dec, \r
+# inf files\r
+#\r
+HEADER_COMMENT_NOT_STARTED = -1\r
+HEADER_COMMENT_STARTED     = 0\r
+HEADER_COMMENT_FILE        = 1\r
+HEADER_COMMENT_ABSTRACT    = 2\r
+HEADER_COMMENT_DESCRIPTION = 3\r
+HEADER_COMMENT_COPYRIGHT   = 4\r
+HEADER_COMMENT_LICENSE     = 5\r
+HEADER_COMMENT_END         = 6\r
+\r
+#\r
+# Static values for data models\r
+#\r
+MODEL_UNKNOWN = 0\r
+\r
+MODEL_FILE_C = 1001\r
+MODEL_FILE_H = 1002\r
+MODEL_FILE_ASM = 1003\r
+MODEL_FILE_INF = 1011\r
+MODEL_FILE_DEC = 1012\r
+MODEL_FILE_DSC = 1013\r
+MODEL_FILE_FDF = 1014\r
+MODEL_FILE_INC = 1015\r
+MODEL_FILE_CIF = 1016\r
+\r
+MODEL_IDENTIFIER_FILE_HEADER = 2001\r
+MODEL_IDENTIFIER_FUNCTION_HEADER = 2002\r
+MODEL_IDENTIFIER_COMMENT = 2003\r
+MODEL_IDENTIFIER_PARAMETER = 2004\r
+MODEL_IDENTIFIER_STRUCTURE = 2005\r
+MODEL_IDENTIFIER_VARIABLE = 2006\r
+MODEL_IDENTIFIER_INCLUDE = 2007\r
+MODEL_IDENTIFIER_PREDICATE_EXPRESSION = 2008\r
+MODEL_IDENTIFIER_ENUMERATE = 2009\r
+MODEL_IDENTIFIER_PCD = 2010\r
+MODEL_IDENTIFIER_UNION = 2011\r
+MODEL_IDENTIFIER_MACRO_IFDEF = 2012\r
+MODEL_IDENTIFIER_MACRO_IFNDEF = 2013\r
+MODEL_IDENTIFIER_MACRO_DEFINE = 2014\r
+MODEL_IDENTIFIER_MACRO_ENDIF = 2015\r
+MODEL_IDENTIFIER_MACRO_PROGMA = 2016\r
+MODEL_IDENTIFIER_FUNCTION_CALLING = 2018\r
+MODEL_IDENTIFIER_TYPEDEF = 2017\r
+MODEL_IDENTIFIER_FUNCTION_DECLARATION = 2019\r
+MODEL_IDENTIFIER_ASSIGNMENT_EXPRESSION = 2020\r
+\r
+MODEL_EFI_PROTOCOL = 3001\r
+MODEL_EFI_PPI = 3002\r
+MODEL_EFI_GUID = 3003\r
+MODEL_EFI_LIBRARY_CLASS = 3004\r
+MODEL_EFI_LIBRARY_INSTANCE = 3005\r
+MODEL_EFI_PCD = 3006\r
+MODEL_EFI_SOURCE_FILE = 3007\r
+MODEL_EFI_BINARY_FILE = 3008\r
+MODEL_EFI_SKU_ID = 3009\r
+MODEL_EFI_INCLUDE = 3010\r
+MODEL_EFI_DEPEX = 3011\r
+\r
+MODEL_PCD = 4000\r
+MODEL_PCD_FIXED_AT_BUILD = 4001\r
+MODEL_PCD_PATCHABLE_IN_MODULE = 4002\r
+MODEL_PCD_FEATURE_FLAG = 4003\r
+MODEL_PCD_DYNAMIC_EX = 4004\r
+MODEL_PCD_DYNAMIC_EX_DEFAULT = 4005\r
+MODEL_PCD_DYNAMIC_EX_VPD = 4006\r
+MODEL_PCD_DYNAMIC_EX_HII = 4007\r
+MODEL_PCD_DYNAMIC = 4008\r
+MODEL_PCD_DYNAMIC_DEFAULT = 4009\r
+MODEL_PCD_DYNAMIC_VPD = 4010\r
+MODEL_PCD_DYNAMIC_HII = 4011\r
+\r
+MODEL_META_DATA_FILE_HEADER = 5000\r
+MODEL_META_DATA_HEADER = 5001\r
+MODEL_META_DATA_INCLUDE = 5002\r
+MODEL_META_DATA_DEFINE = 5003\r
+MODEL_META_DATA_CONDITIONAL_STATEMENT_IF = 5004\r
+MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSE = 5005\r
+MODEL_META_DATA_CONDITIONAL_STATEMENT_IFDEF = 5006\r
+MODEL_META_DATA_CONDITIONAL_STATEMENT_IFNDEF = 5007\r
+MODEL_META_DATA_BUILD_OPTION = 5008\r
+MODEL_META_DATA_COMPONENT = 5009\r
+MODEL_META_DATA_USER_EXTENSION = 5010\r
+MODEL_META_DATA_PACKAGE = 5011\r
+MODEL_META_DATA_NMAKE = 5012\r
+MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSEIF = 50013\r
+MODEL_META_DATA_CONDITIONAL_STATEMENT_ENDIF = 5014\r
+MODEL_META_DATA_COMPONENT_SOURCE_OVERRIDE_PATH = 5015\r
+\r
+TOOL_FAMILY_LIST = ["MSFT",\r
+                    "INTEL",\r
+                    "GCC",\r
+                    "RVCT"\r
+                    ]\r
+\r
+TYPE_HOB_SECTION = 'HOB'\r
+TYPE_EVENT_SECTION = 'EVENT'\r
+TYPE_BOOTMODE_SECTION = 'BOOTMODE' \r