]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/pcd/entity/UsageInstance.java
Modify PCD tool according to final PCD schema modification.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / pcd / entity / UsageInstance.java
index 90c0f6322fb50896345f84d566b54df40e0156ce..378f26f4b0af0fd79305c3f9b5477ca28ca586b5 100644 (file)
@@ -34,60 +34,78 @@ public class UsageInstance {
   /// 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
@@ -97,9 +115,9 @@ public class UsageInstance {
      @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
@@ -108,7 +126,8 @@ public class UsageInstance {
                         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
@@ -119,7 +138,7 @@ public class UsageInstance {
       this.arch             = arch;\r
       this.version          = version;\r
       this.datum            = value;\r
-      this.modulePcdType    = pcdType;\r
+      this.maxDatumSize     = maxDatumSize;\r
   }\r
 \r
   /**\r
@@ -266,85 +285,12 @@ public class UsageInstance {
 \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