/** @file | |
CommonDefinition class. | |
This class is to define some common marcos and funcions, which used by AutoGen. | |
Copyright (c) 2006, Intel Corporation | |
All rights reserved. This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
package org.tianocore.pcd.entity; | |
import java.util.Iterator; | |
import java.util.LinkedHashSet; | |
import java.util.Set; | |
/** | |
CommonDefinition | |
This class is to define some common marcos, which used by AutoGen. | |
**/ | |
public class CommonDefinition { | |
public final static String spdSuffix = ".spd"; | |
public final static String mbdSuffix = ".mbd"; | |
public final static String msaSuffix = ".msa"; | |
public final static String LibraryStr = "LIBRARY"; | |
public final static String autoGenHbegin = "extern int __make_me_compile_correctly;\r\n"; | |
public final static String include = "#include"; | |
public final static String autoGenCLine1 = "\r\n"; | |
public final static String autoGenCLine2 = "const UINT8 _gDebugPropertyMask " | |
+ "= DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED" | |
+ " | DEBUG_PROPERTY_DEBUG_PRINT_ENABLED" | |
+ " | DEBUG_PROPERTY_DEBUG_CODE_ENABLED;\r\n"; | |
public final static String autoGenCLine3 = "const UINTN _gModuleDefaultErrorLevel" | |
+ " = EFI_D_ERROR | EFI_D_LOAD;\r\n"; | |
public final static String autoGenHLine1 = "#define EFI_SPECIFICATION_VERSION 0x00020000\r\n"; | |
public final static String autoGenHVersionDefault = "#define EFI_SPECIFICATION_VERSION 0x00000000\r\n"; | |
public final static String autoGenHLine2 = "#define EDK_RELEASE_VERSION 0x00090000\r\n"; | |
public final static String autoGenHReleaseDefault = "#define EDK_RELEASE_VERSION 0x00000000\r\n"; | |
public final static String includeAutogenH = "#include <AutoGen.h>\r\n" ; | |
public final static String marcDefineStr = "#define "; | |
public final static String gEfi = "gEfi"; | |
public final static String protocolGuid = "ProtocolGuid"; | |
public final static String ppiGuid = "PpiGuid"; | |
public final static String guidGuid = "Guid"; | |
public final static String tianoR8FlashMapH = "TianoR8FlashMap.h"; | |
public final static String flashMapH = "FlashMap.h"; | |
// | |
// AutoGen.h and AutoGen.c file's header | |
// | |
public final static String autogenHNotation = | |
"/**\r\n" + | |
" DO NOT EDIT\r\n" + | |
" FILE auto-generated by GenBuild tasks\r\n" + | |
" Module name:\r\n" + | |
" AutoGen.h\r\n" + | |
" Abstract:" + | |
" Auto-generated AutoGen.h for building module or library.\r\n" + | |
"**/\r\n\r\n"; | |
public final static String autogenCNotation = | |
"/**\r\n" + | |
" DO NOT EDIT\r\n" + | |
" FILE auto-generated by GenBuild tasks\r\n" + | |
" Module name:\r\n" + | |
" AutoGen.c\r\n" + | |
" Abstract:" + | |
" Auto-generated AutoGen.c for building module or library.\r\n" + | |
"**/\r\n\r\n"; | |
// | |
// module type | |
// | |
public final static int ModuleTypeBase = 0; | |
public final static int ModuleTypeSec = 1; | |
public final static int ModuleTypePeiCore = 2; | |
public final static int ModuleTypePeim = 3; | |
public final static int ModuleTypeDxeCore = 4; | |
public final static int ModuleTypeDxeDriver = 5; | |
public final static int ModuleTypeDxeRuntimeDriver = 6; | |
public final static int ModuleTypeDxeSmmDriver = 7; | |
public final static int ModuleTypeDxeSalDriver = 8; | |
public final static int ModuleTypeUefiDriver = 9; | |
public final static int ModuleTypeUefiApplication = 10; | |
public final static int ModuleTypeUnknown = 11; | |
// | |
// component type | |
// | |
public final static int ComponentTypeNull = 0; | |
public final static int ComponentTypeApriori = 1; | |
public final static int ComponentTypeSec = 2; | |
public final static int ComponentTypeLibrary = 3; | |
public final static int ComponentTypeFvImageFile = 4; | |
public final static int ComponentTypeBsDriver = 5; | |
public final static int ComponentTypeRtDriver = 6; | |
public final static int ComponentTypeSalRtDriver =7; | |
public final static int ComponentTypePe32Peim = 8; | |
public final static int ComponentTypePicPeim =9; | |
public final static int ComponentTypeCombinedPeimDriver =10; | |
public final static int ComponentTypePeiCore = 11; | |
public final static int ComponentTypeDxeCore = 12; | |
public final static int ComponentTypeApplication = 13; | |
public final static int ComponentTypeBsDriverEfi = 14; | |
public final static int ComponentTypeShellApp = 15; | |
public final static int ComponentTypeBinary =16; | |
public final static int ComponentTypeLogo = 17; | |
public final static int ComponentTypeCustomBuild = 18; | |
public final static int ComponentTypeUnknown = 19; | |
// | |
// Usaged style | |
// | |
public final static String AlwaysConsumed = "ALWAYS_CONSUMED"; | |
public final static String AlwaysProduced = "ALWAYS_PRODUCED"; | |
public static class MyEnum { | |
String moduleTypeStr; | |
int type; | |
MyEnum (String str, int type) { | |
this.type = type; | |
this.moduleTypeStr = str; | |
} | |
int ForInt(String str) { | |
if (str.equals(this.moduleTypeStr)) { | |
return this.type; | |
} else | |
return -1; | |
} | |
} | |
// | |
// Module type | |
// | |
public static final MyEnum[] moduleEnum = new MyEnum[] { | |
new MyEnum("BASE", ModuleTypeBase), | |
new MyEnum("SEC", ModuleTypeSec), | |
new MyEnum("PEI_CORE", ModuleTypePeiCore), | |
new MyEnum("PEIM", ModuleTypePeim), | |
new MyEnum("DXE_CORE", ModuleTypeDxeCore), | |
new MyEnum("DXE_DRIVER", ModuleTypeDxeDriver), | |
new MyEnum("DXE_RUNTIME_DRIVER", ModuleTypeDxeRuntimeDriver), | |
new MyEnum("DXE_SAL_DRIVER", ModuleTypeDxeSalDriver), | |
new MyEnum("DXE_SMM_DRIVER", ModuleTypeDxeSmmDriver), | |
new MyEnum("UEFI_DRIVER", ModuleTypeUefiDriver), | |
new MyEnum("UEFI_APPLICATION", ModuleTypeUefiApplication) }; | |
// | |
// Component type | |
// | |
public static final MyEnum[] componentEnum = new MyEnum[]{ | |
new MyEnum("APRIORI", ComponentTypeApriori), | |
new MyEnum("SEC", ComponentTypeSec), | |
new MyEnum("LIBRARY", ComponentTypeLibrary), | |
new MyEnum("FV_IMAGE_FILE", ComponentTypeFvImageFile), | |
new MyEnum("BS_DRIVER", ComponentTypeBsDriver), | |
new MyEnum("RT_DRIVER", ComponentTypeRtDriver), | |
new MyEnum("SAL_RT_DRIVER", ComponentTypeSalRtDriver), | |
new MyEnum("PE32_PEIM", ComponentTypePe32Peim), | |
new MyEnum("PIC_PEIM", ComponentTypePicPeim), | |
new MyEnum("COMBINED_PEIM_DRIVER", ComponentTypeCombinedPeimDriver), | |
new MyEnum("PEI_CORE", ComponentTypePeiCore), | |
new MyEnum("DXE_CORE", ComponentTypeDxeCore), | |
new MyEnum("APPLICATION", ComponentTypeApplication), | |
new MyEnum("BS_DRIVER_EFI", ComponentTypeBsDriverEfi), | |
new MyEnum("SHELLAPP", ComponentTypeShellApp), | |
new MyEnum("BINARY", ComponentTypeBinary), | |
new MyEnum("LOGO", ComponentTypeLogo), | |
new MyEnum("CUSTOM_BUILD", ComponentTypeCustomBuild) | |
}; | |
/** | |
getModuleType | |
This function get the module type value according module type string. | |
@param moduleTypeStr String of modlue type. | |
@return | |
**/ | |
static public int getModuleType(String moduleTypeStr) { | |
int returnValue = -1; | |
for (int i = 0; i < CommonDefinition.moduleEnum.length; i++) { | |
returnValue = CommonDefinition.moduleEnum[i].ForInt(moduleTypeStr); | |
if (returnValue != -1) { | |
return returnValue; | |
} | |
} | |
return CommonDefinition.ModuleTypeUnknown; | |
} | |
/** | |
getComponentType | |
This function get the component type value according commponet type | |
string. | |
@param componentTypeStr String of component type. | |
@return | |
**/ | |
static public int getComponentType (String componentTypeStr){ | |
int returnValue = -1; | |
for (int i = 0; i < CommonDefinition.componentEnum.length; i++) { | |
returnValue = CommonDefinition.componentEnum[i].ForInt(componentTypeStr); | |
if (returnValue != -1) { | |
return returnValue; | |
} | |
} | |
return CommonDefinition.ComponentTypeUnknown; | |
} | |
/** | |
getComponentTypeString | |
This function get the commponet type string according component type value. | |
@param componentType Integer value of component type. | |
@return | |
**/ | |
static public String getComponentTypeString (int componentType) { | |
if ((componentType > CommonDefinition.ComponentTypeUnknown) || | |
(componentType < CommonDefinition.ComponentTypeNull)) { | |
return null; | |
} | |
for (int index = 0; index < CommonDefinition.componentEnum.length; index++) { | |
if (componentType == CommonDefinition.componentEnum[index].type) { | |
return CommonDefinition.componentEnum[index].moduleTypeStr; | |
} | |
} | |
return null; | |
} | |
/** | |
isLibraryComponent | |
This function is to check does componet is library according to commponet | |
type value. | |
@param componentType Integer value of component type. | |
@return | |
**/ | |
static public boolean isLibraryComponent (int componentType) { | |
if (ComponentTypeLibrary == componentType) { | |
return true; | |
} | |
return false; | |
} | |
/** | |
* formateGuidName | |
* | |
* This function is to formate GUID to ANSI c form. | |
* | |
* @param guidNameCon | |
* String of GUID. | |
* @return Formated GUID. | |
*/ | |
public static String formatGuidName(String guidNameConv) { | |
String[] strList; | |
String guid = ""; | |
int index = 0; | |
if (guidNameConv | |
.matches("[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}")) { | |
strList = guidNameConv.split("-"); | |
guid = "0x" + strList[0] + ", "; | |
guid = guid + "0x" + strList[1] + ", "; | |
guid = guid + "0x" + strList[2] + ", "; | |
guid = guid + "{"; | |
guid = guid + "0x" + strList[3].substring(0, 2) + ", "; | |
guid = guid + "0x" + strList[3].substring(2, 4); | |
while (index < strList[4].length()) { | |
guid = guid + ", "; | |
guid = guid + "0x" + strList[4].substring(index, index + 2); | |
index = index + 2; | |
} | |
guid = guid + "}"; | |
return guid; | |
} else if (guidNameConv | |
.matches("0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},( )*0x[a-fA-F0-9]{1,4}(,( )*\\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\\})?")) { | |
strList = guidNameConv.split(","); | |
// | |
// chang Microsoft specific form to ANSI c form | |
// | |
for (int i = 0; i < 3; i++) { | |
guid = guid + strList[i] + ","; | |
} | |
guid = guid + "{"; | |
for (int i = 3; i < strList.length; i++) { | |
if (i == strList.length - 1) { | |
guid = guid + strList[i]; | |
} else { | |
guid = guid + strList[i] + ","; | |
} | |
} | |
guid = guid + "}"; | |
return guid; | |
} else { | |
System.out | |
.println("Check GUID Value, it doesn't conform to the registry format specified by the schema!!!"); | |
return "0"; | |
} | |
} | |
/** | |
* Remove deuplicat string in list | |
* | |
* This function is to duplicat string in list | |
* | |
* @param String[] | |
* String list. | |
* @return String[] String list which remove the duplicate string. | |
*/ | |
public static String[] remDupString (String[] orgList){ | |
Set<String> strList = new LinkedHashSet<String>(); | |
String[] desList ; | |
if (orgList == null){ | |
return new String[0]; | |
} | |
for (int i = 0; i < orgList.length; i++){ | |
strList.add(orgList[i]); | |
} | |
desList = new String[strList.size()]; | |
Iterator item = strList.iterator(); | |
int index = 0; | |
while (item.hasNext()){ | |
desList[index] = (String)item.next(); | |
index++; | |
} | |
return desList; | |
} | |
} |