]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/PcdTools/org/tianocore/pcd/entity/Token.java
Modify code according to Wang, jian's comments.
[mirror_edk2.git] / Tools / Source / PcdTools / org / tianocore / pcd / entity / Token.java
index 8429dfd0036ca8ee114f02739370739b4c7f954a..d1867fba5bc76df5514f45f4ad33e72f644a0345 100644 (file)
@@ -137,7 +137,8 @@ public class Token {
       @param pcdType    new PCD type found in FPD file for this token.\r
     **/\r
     public void updateSupportPcdType(PCD_TYPE pcdType) {\r
-        for (int index = 0; index < this.supportedPcdType.size(); index ++) {\r
+        int size = supportedPcdType.size();\r
+        for (int index = 0; index < size; index++) {\r
             if (supportedPcdType.get(index) == pcdType) {\r
                 return;\r
             }\r
@@ -156,7 +157,7 @@ public class Token {
        @param pcdType       the judged pcd type\r
 \r
        @return boolean\r
-     */\r
+    **/\r
     public static boolean isDynamic(PCD_TYPE pcdType) {\r
         if ((pcdType == PCD_TYPE.DYNAMIC   ) ||\r
             (pcdType == PCD_TYPE.DYNAMIC_EX)) {\r
@@ -166,8 +167,15 @@ public class Token {
         return false;\r
     }\r
 \r
+    /**\r
+       The pcd type is DynamicEx?\r
+         \r
+       @retval true     Is DynamicEx type\r
+       @retval false    not DynamicEx type\r
+    **/\r
     public boolean isDynamicEx() {\r
-        for (int i = 0; i < supportedPcdType.size(); i++) {\r
+        int size = supportedPcdType.size();\r
+        for (int i = 0; i < size; i++) {\r
             if (supportedPcdType.get(i) == PCD_TYPE.DYNAMIC_EX) {\r
                 return true;\r
             }\r
@@ -196,7 +204,7 @@ public class Token {
        If skudata list contains more than one data, then Sku mechanism is enable.\r
 \r
        @retval boolean  if the number of sku data exceed to 1\r
-     */\r
+    **/\r
     public boolean isSkuEnable() {\r
         if (this.skuData.size() > 1) {\r
             return true;\r
@@ -232,7 +240,7 @@ public class Token {
        Get the token primary key in token database.\r
 \r
        @return String\r
-     */\r
+    **/\r
     public String getPrimaryKeyString () {\r
         return Token.getPrimaryKeyString(cName, tokenSpaceName);\r
     }\r
@@ -303,7 +311,7 @@ public class Token {
        @param usageId       The UsageInstance identification for usage instance\r
 \r
        @return boolean      whether exist an usage instance for this token.\r
-     */\r
+    **/\r
     public boolean isUsageInstanceExist(UsageIdentification usageId) {\r
         String keyStr = UsageInstance.getPrimaryKey(usageId);\r
 \r
@@ -317,7 +325,7 @@ public class Token {
 \r
       @return PCD_TYPE\r
     **/\r
-    public static PCD_TYPE getpcdTypeFromString(String pcdTypeStr) {\r
+    public static PCD_TYPE getPcdTypeFromString(String pcdTypeStr) {\r
         if (pcdTypeStr == null) {\r
             return PCD_TYPE.UNKNOWN;\r
         }\r
@@ -345,21 +353,7 @@ public class Token {
       @return The string of datum type.\r
     **/\r
     public static String getStringOfdatumType(DATUM_TYPE  datumType) {\r
-        switch (datumType) {\r
-        case UINT8:\r
-            return "UINT8";\r
-        case UINT16:\r
-            return "UINT16";\r
-        case UINT32:\r
-            return "UINT32";\r
-        case UINT64:\r
-            return "UINT64";\r
-        case POINTER:\r
-            return "POINTER";\r
-        case BOOLEAN:\r
-            return "BOOLEAN";\r
-        }\r
-        return "UNKNOWN";\r
+        return datumType.toString();\r
     }\r
 \r
     /**\r
@@ -394,19 +388,7 @@ public class Token {
       @return The string of PCD_TYPE.\r
     **/\r
     public static String getStringOfpcdType(PCD_TYPE pcdType) {\r
-        switch (pcdType) {\r
-        case FEATURE_FLAG:\r
-            return "FEATURE_FLAG";\r
-        case FIXED_AT_BUILD:\r
-            return "FIXED_AT_BUILD";\r
-        case PATCHABLE_IN_MODULE:\r
-            return "PATCHABLE_IN_MODULE";\r
-        case DYNAMIC:\r
-            return "DYNAMIC";\r
-        case DYNAMIC_EX:\r
-            return "DYNAMIC_EX";\r
-        }\r
-        return "UNKNOWN";\r
+        return pcdType.toString();\r
     }\r
 \r
     /**\r
@@ -442,17 +424,7 @@ public class Token {
       @return The string of PDC_USAGE.\r
     **/\r
     public static String getStringOfUsage(PCD_USAGE usage) {\r
-        switch (usage) {\r
-        case ALWAYS_PRODUCED:\r
-            return "ALWAYS_PRODUCED";\r
-        case ALWAYS_CONSUMED:\r
-            return "ALWAYS_CONSUMED";\r
-        case SOMETIMES_PRODUCED:\r
-            return "SOMETIMES_PRODUCED";\r
-        case SOMETIMES_CONSUMED:\r
-            return "SOMETIMES_CONSUMED";\r
-        }\r
-        return "UNKNOWN";\r
+        return usage.toString();\r
     }\r
 \r
     /**\r
@@ -540,9 +512,9 @@ public class Token {
        @retval DynamicTokenValue    the value of this dyanmic token.\r
     **/\r
     public DynamicTokenValue getDefaultSku() {\r
-        int               index;\r
-\r
-        for (index = 0; index < this.skuData.size(); index ++) {\r
+        int index;\r
+        int size = skuData.size();\r
+        for (index = 0; index < size; index++) {\r
             if (skuData.get(index).id == 0) {\r
                 return skuData.get(index).value;\r
             }\r
@@ -564,7 +536,7 @@ public class Token {
        Get the size of PCD value, this PCD is POINTER type.\r
 \r
        @param str   the string of the value\r
-       @param al\r
+       @param al    the array list for outer parameter.\r
     **/\r
     private void getCurrentSizeFromDefaultValue (String str, ArrayList<Integer> al) {\r
         if (isValidNullValue(str)) {\r
@@ -644,8 +616,8 @@ public class Token {
        SKU 0 will be returned; For Default type, the defaultvalue of default SKU\r
        0 will be returned.\r
 \r
-       @return String\r
-     */\r
+       @return String get the default value for a DYNAMIC type PCD.\r
+    **/\r
     public String getDynamicDefaultValue() {\r
         DynamicTokenValue dynamicData = getDefaultSku();\r
         if (hasDefaultValue()) {\r
@@ -658,10 +630,11 @@ public class Token {
         return null;\r
     }\r
 \r
-    //\r
-    // BugBug: We need change this algorithm accordingly when schema is updated\r
-    //          to support no default value.\r
-    //\r
+    /**\r
+        Judge whether a DYNAMIC PCD has default value. \r
+\r
+        @return whether a DYNAMIC PCD has default value.\r
+    **/\r
     public boolean hasDefaultValue () {\r
         DynamicTokenValue dynamicValue  = null;\r
 \r
@@ -687,10 +660,10 @@ public class Token {
     /**\r
        Judge the value is NULL value. NULL value means the value is uninitialized value\r
 \r
-       @param judgedValue\r
+       @param judgedValue   the want want to be judged\r
 \r
-       @return boolean\r
-     */\r
+       @return boolean  whether the value of PCD is NULL.\r
+    **/\r
     public boolean isValidNullValue(String judgedValue) {\r
         String      subStr;\r
         BigInteger  bigIntValue;\r
@@ -742,12 +715,21 @@ public class Token {
             }\r
             break;\r
         case POINTER:\r
-            if (judgedValue.equalsIgnoreCase("")        ||\r
-                judgedValue.equalsIgnoreCase("\"\"")   ||\r
+            if (judgedValue.equalsIgnoreCase("\"\"")   ||\r
                 judgedValue.equalsIgnoreCase("L\"\"")   ||\r
-                (judgedValue.length() == 0)             ||\r
-                judgedValue.equalsIgnoreCase("{0}")) {\r
+                (judgedValue.length() == 0)) {\r
                 return true;\r
+            } else if (judgedValue.trim().charAt(0) == '{') {\r
+                int       start         = judgedValue.indexOf('{');\r
+                int       end           = judgedValue.lastIndexOf('}');\r
+                String[]  strValueArray = judgedValue.substring(start + 1, end).split(",");\r
+                if (strValueArray.length > 1) {\r
+                    return false;\r
+                } else {\r
+                    if (strValueArray[0].matches("(0x)?(0X)?0*")) {\r
+                        return true;\r
+                    }\r
+                }\r
             }\r
         }\r
         return false;\r
@@ -756,7 +738,7 @@ public class Token {
     /**\r
        Is the string value in Unicode\r
 \r
-       @return boolean\r
+       @return boolean the string value is UNICODE type string.\r
     **/\r
     public boolean isHiiDefaultValueUnicodeStringType() {\r
         DynamicTokenValue dynamicData = getDefaultSku();\r
@@ -771,7 +753,7 @@ public class Token {
     /**\r
        Is the string value in ANSCI\r
 \r
-       @return boolean\r
+       @return boolean whether the dfault value for HII case is string type.\r
     **/\r
     public boolean isHiiDefaultValueASCIIStringType() {\r
         DynamicTokenValue dynamicData = getDefaultSku();\r
@@ -785,8 +767,9 @@ public class Token {
 \r
     /**\r
        Judege whether current value is UNICODE string type.\r
-       @return boolean\r
-     */\r
+\r
+       @return boolean whether the value is UNICODE string.\r
+    **/\r
     public boolean isUnicodeStringType () {\r
         String str = getDynamicDefaultValue();\r
 \r
@@ -803,6 +786,11 @@ public class Token {
         return false;\r
     }\r
 \r
+    /**\r
+       Judge whether the string type is ANSIC string.\r
+\r
+       @return boolean whether the string type is ANSIC string\r
+    **/\r
     public boolean isASCIIStringType () {\r
         String str = getDynamicDefaultValue();\r
 \r
@@ -819,6 +807,12 @@ public class Token {
         return false;\r
     }\r
 \r
+    /**\r
+       Judge whether the string value is byte array.\r
+\r
+       @return boolean  whether the string value is byte array.\r
+\r
+    **/\r
     public boolean isByteStreamType () {\r
         String str = getDynamicDefaultValue();\r
 \r
@@ -836,6 +830,11 @@ public class Token {
 \r
     }\r
 \r
+    /**\r
+       Get string value for ANSIC string type\r
+         \r
+       @return String the string value\r
+    **/\r
     public String getStringTypeString () {\r
         return getDefaultSku().value.substring(2, getDefaultSku().value.length() - 1);\r
     }\r