/// The module type of usage instance.\r
/// \r
public enum MODULE_TYPE {SEC, PEI_CORE, PEIM, DXE_CORE, DXE_DRIVERS, OTHER_COMPONENTS}\r
+\r
///\r
/// This parent that this usage instance belongs to.\r
///\r
public Token parentToken;\r
+\r
///\r
/// The name of the module who contains this PCD.\r
///\r
public String moduleName;\r
+\r
///\r
/// The GUID of the module who contains this PCD. \r
/// \r
public UUID moduleGUID;\r
+\r
///\r
/// The name of the package whose module contains this PCD.\r
///\r
public String packageName;\r
+\r
///\r
/// The GUID of the package whose module contains this PCD.\r
/// \r
public UUID packageGUID;\r
+\r
///\r
/// The PCD type defined for module \r
/// \r
public Token.PCD_TYPE modulePcdType;\r
+\r
///\r
/// The arch string of module contains this PCD\r
///\r
public String arch;\r
+\r
///\r
/// The version of module contains this PCD\r
/// \r
public String version;\r
+\r
///\r
/// The module type for this usage instance.\r
///\r
public MODULE_TYPE moduleType;\r
+\r
///\r
/// The value of the PCD in this usage instance. \r
/// \r
- public Object datum;\r
+ public String datum;\r
+\r
+ ///\r
+ /// The maxDatumSize could be different for same PCD in different module\r
+ /// But this case is allow for FeatureFlag, FixedAtBuild, PatchableInModule\r
+ /// type.\r
+ /// \r
+ public int maxDatumSize;\r
+\r
///\r
/// Autogen string for header file.\r
///\r
public String hAutogenStr;\r
- /**\r
- * Auotgen string for C code file.\r
- */\r
+\r
+ ///\r
+ /// Auotgen string for C code file.\r
+ /// \r
public String cAutogenStr;\r
\r
/**\r
Constructure function\r
\r
@param parentToken Member variable.\r
- @param pcdType Member variable.\r
@param moduleName Member variable.\r
@param moduleGUID Member variable.\r
@param packageName Member variable.\r
@param arch Member variable.\r
@param version Member variable.\r
@param value Member variable.\r
- **/\r
+ @param maxDatumSize Member variable.\r
+ */\r
public UsageInstance (Token parentToken,\r
- Token.PCD_TYPE pcdType,\r
String moduleName,\r
UUID moduleGUID,\r
String packageName,\r
Token.PCD_TYPE modulePcdType,\r
String arch,\r
String version,\r
- Object value) {\r
+ String value,\r
+ int maxDatumSize) {\r
this.parentToken = parentToken;\r
this.moduleName = moduleName;\r
this.moduleGUID = moduleGUID;\r
this.arch = arch;\r
this.version = version;\r
this.datum = value;\r
- this.modulePcdType = pcdType;\r
+ this.maxDatumSize = maxDatumSize;\r
}\r
\r
/**\r
\r
break;\r
case DYNAMIC:\r
- switch(parentToken.pcdType) {\r
- case FEATURE_FLAG:\r
- if(isBuildUsedLibrary) {\r
- hAutogenStr += String.format("extern const BOOLEAN _gPcd_FixedAtBuild_%s;\r\n", \r
- parentToken.cName);\r
- hAutogenStr += String.format("#define _PCD_MODE_%s_%s _gPcd_FixedAtBuild_%s\r\n",\r
- Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
- parentToken.cName,\r
- parentToken.cName);\r
- } else {\r
- hAutogenStr += String.format("#define _PCD_VALUE_%s %s\r\n", \r
- parentToken.cName, \r
- datum.toString());\r
- hAutogenStr += String.format("extern const BOOLEAN _gPcd_FixedAtBuild_%s;\r\n", \r
- parentToken.cName);\r
- cAutogenStr += String.format("const BOOLEAN _gPcd_FixedAtBuild_%s = _PCD_VALUE_%s;\r\n",\r
- parentToken.cName,\r
- parentToken.cName);\r
- hAutogenStr += String.format("#define _PCD_MODE_%s_%s _PCD_VALUE_%s\r\n",\r
- Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
- parentToken.cName,\r
- parentToken.cName);\r
- }\r
- break;\r
- case FIXED_AT_BUILD:\r
- if(isBuildUsedLibrary) {\r
- hAutogenStr += String.format("extern const %s _gPcd_FixedAtBuild_%s;\r\n",\r
- Token.getAutogendatumTypeString(parentToken.datumType),\r
- parentToken.cName);\r
- hAutogenStr += String.format("#define _PCD_MODE_%s_%s _gPcd_FixedAtBuild_%s\r\n",\r
- Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
- parentToken.cName,\r
- parentToken.cName);\r
-\r
- } else {\r
- hAutogenStr += String.format("#define _PCD_VALUE_%s %s\r\n", \r
- parentToken.cName, \r
- datum.toString());\r
- hAutogenStr += String.format("extern const %s _gPcd_FixedAtBuild_%s\r\n",\r
- Token.getAutogendatumTypeString(parentToken.datumType),\r
- parentToken.cName);\r
- cAutogenStr += String.format("const %s _gPcd_FixedAtBuild_%s = _PCD_VALUE_%s;\r\n",\r
- Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
- parentToken.cName,\r
- parentToken.cName);\r
- hAutogenStr += String.format("#define _PCD_MODE_%s_%s _PCD_VALUE_%s\r\n",\r
- Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
- parentToken.cName,\r
- parentToken.cName);\r
- }\r
- break;\r
- case PATCHABLE_IN_MODULE:\r
- hAutogenStr += String.format("#define _PCD_VALUE_%s %s\r\n", \r
- parentToken.cName, \r
- datum.toString());\r
- hAutogenStr += String.format("extern %s _gPcd_BinaryPatch_%s;\r\n",\r
- Token.getAutogendatumTypeString(parentToken.datumType),\r
- parentToken.cName,\r
- parentToken.cName);\r
- cAutogenStr += String.format("%s _gPcd_BinaryPatch_%s = _PCD_VALUE_%s;",\r
- Token.getAutogendatumTypeString(parentToken.datumType),\r
- parentToken.cName,\r
- parentToken.cName);\r
- hAutogenStr += String.format("#define _PCD_MODE_%s_%s _gPcd_BinaryPatch_%s\r\n",\r
- Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
- parentToken.cName,\r
- parentToken.cName);\r
- break;\r
- case DYNAMIC:\r
- hAutogenStr += String.format("#define _PCD_MODE_%s_%s LibPcdGet%s(_PCD_TOKEN_%s)\r\n",\r
- Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
- parentToken.cName,\r
- Token.getAutogenLibrarydatumTypeString(parentToken.datumType),\r
- parentToken.cName);\r
- break;\r
- default:\r
- throw new EntityException ("The PCD type is unknown");\r
- }\r
- break;\r
+ hAutogenStr += String.format("#define _PCD_MODE_%s_%s LibPcdGet%s(_PCD_TOKEN_%s)\r\n",\r
+ Token.GetAutogenDefinedatumTypeString(parentToken.datumType),\r
+ parentToken.cName,\r
+ Token.getAutogenLibrarydatumTypeString(parentToken.datumType),\r
+ parentToken.cName);\r
+ break;\r
case DYNAMIC_EX:\r
break;\r
}\r