]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/pcd/action/PcdDatabase.java
Abstract the logic of Platform pcd preprocess according to FPD file to a class. And...
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / pcd / action / PcdDatabase.java
index 9a8699cfe4b9cf01c5f8f42f39172df85727e1e9..a42ef927ad8d0cb8a8b2bbd2f95bc5eb6d2a6893 100644 (file)
@@ -6,56 +6,32 @@ All rights reserved. This program and the accompanying materials
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
 http://opensource.org/licenses/bsd-license.php\r
\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
 package org.tianocore.build.pcd.action;\r
 \r
-import java.io.BufferedReader;                                                    \r
+import java.io.BufferedReader;\r
 import java.io.File;\r
 import java.io.FileReader;\r
-import java.io.IOException;\r
-import java.math.BigInteger;\r
 import java.util.ArrayList;\r
 import java.util.Comparator;\r
 import java.util.HashMap;\r
-import java.util.Iterator;\r
 import java.util.List;\r
 import java.util.Map;\r
-import java.util.Set;\r
 import java.util.UUID;\r
-import java.util.regex.Matcher;\r
-import java.util.regex.Pattern;\r
-\r
-import org.apache.xmlbeans.XmlException;\r
-import org.apache.xmlbeans.XmlObject;\r
-import org.tianocore.DynamicPcdBuildDefinitionsDocument.DynamicPcdBuildDefinitions;\r
-import org.tianocore.FrameworkModulesDocument;\r
-import org.tianocore.ModuleSADocument;\r
-import org.tianocore.PcdBuildDefinitionDocument;\r
-import org.tianocore.PcdBuildDefinitionDocument.PcdBuildDefinition;\r
-import org.tianocore.PlatformSurfaceAreaDocument;\r
-import org.tianocore.build.fpd.FpdParserTask;\r
 import org.tianocore.build.global.GlobalData;\r
-import org.tianocore.build.id.FpdModuleIdentification;\r
-import org.tianocore.build.id.ModuleIdentification;\r
-import org.tianocore.pcd.action.ActionMessage;\r
-import org.tianocore.pcd.entity.CommonDefinition;\r
 import org.tianocore.pcd.entity.DynamicTokenValue;\r
-import org.tianocore.pcd.entity.MemoryDatabaseManager;\r
-import org.tianocore.pcd.entity.SkuInstance;\r
 import org.tianocore.pcd.entity.Token;\r
-import org.tianocore.pcd.entity.UsageIdentification;\r
-import org.tianocore.pcd.entity.UsageInstance;\r
 import org.tianocore.pcd.exception.EntityException;\r
 \r
 /**\r
-    CStructTypeDeclaration   \r
-    \r
+    CStructTypeDeclaration\r
+\r
     This class is used to store the declaration string, such as\r
-    "UINT32 PcdPlatformFlashBaseAddress", of \r
+    "UINT32 PcdPlatformFlashBaseAddress", of\r
     each memember in the C structure, which is a standard C language\r
     feature used to implement a simple and efficient database for\r
     dynamic(ex) type PCD entry.\r
@@ -65,7 +41,7 @@ class CStructTypeDeclaration {
     int alignmentSize;\r
     String cCode;\r
     boolean initTable;\r
-    \r
+\r
     public CStructTypeDeclaration (String key, int alignmentSize, String cCode, boolean initTable) {\r
         this.key = key;\r
         this.alignmentSize = alignmentSize;\r
@@ -75,16 +51,16 @@ class CStructTypeDeclaration {
 }\r
 \r
 /**\r
-    StringTable   \r
-    \r
+    StringTable\r
+\r
     This class is used to store the String in a PCD database.\r
-    \r
+\r
 **/\r
 class StringTable {\r
-    private ArrayList<String>   al; \r
+    private ArrayList<String>   al;\r
     private ArrayList<String>   alComments;\r
     private String              phase;\r
-    int                         len; \r
+    int                         len;\r
 \r
     public StringTable (String phase) {\r
         this.phase = phase;\r
@@ -107,13 +83,13 @@ class StringTable {
     public String getExistanceMacro () {\r
         return String.format(PcdDatabase.StringTableExistenceMacro, phase, (al.size() == 0)? "TRUE":"FALSE");\r
     }\r
-    \r
+\r
     public void genCode (ArrayList<CStructTypeDeclaration> declaList, HashMap<String, String> instTable) {\r
         final String stringTable = "StringTable";\r
         final String tab         = "\t";\r
         final String newLine     = "\r\n";\r
         final String commaNewLine = ",\r\n";\r
-        \r
+\r
         CStructTypeDeclaration decl;\r
 \r
         String cDeclCode = "";\r
@@ -123,13 +99,13 @@ class StringTable {
         // If we have a empty StringTable\r
         //\r
         if (al.size() == 0) {\r
-            cDeclCode += String.format("%-20s%s[1]; /* StringTable is empty */", "UINT16", stringTable) + newLine; \r
+            cDeclCode += String.format("%-20s%s[1]; /* StringTable is empty */", "UINT16", stringTable) + newLine;\r
             decl = new CStructTypeDeclaration (\r
                                                 stringTable,\r
                                                 2,\r
                                                 cDeclCode,\r
                                                 true\r
-                                        );  \r
+                                        );\r
             declaList.add(decl);\r
 \r
             cInstCode = String.format("/* %s */", stringTable) + newLine + tab + "{ 0 }";\r
@@ -142,40 +118,40 @@ class StringTable {
             for (int i = 0; i < al.size(); i++) {\r
                 String str = al.get(i);\r
                 String stringTableName;\r
-                \r
+\r
                 if (i == 0) {\r
                     //\r
                     // StringTable is a well-known name in the PCD DXE driver\r
                     //\r
                     stringTableName = stringTable;\r
-    \r
+\r
                 } else {\r
                     stringTableName = String.format("%s_%d", stringTable, i);\r
                     cDeclCode += tab;\r
                 }\r
-                cDeclCode += String.format("%-20s%s[%d]; /* %s */", "UINT16", \r
-                                           stringTableName, str.length() + 1, \r
-                                           alComments.get(i)) \r
+                cDeclCode += String.format("%-20s%s[%d]; /* %s */", "UINT16",\r
+                                           stringTableName, str.length() + 1,\r
+                                           alComments.get(i))\r
                              + newLine;\r
-                \r
+\r
                 if (i == 0) {\r
                     cInstCode = "/* StringTable */" + newLine;\r
                 }\r
-                \r
+\r
                 cInstCode += tab + String.format("L\"%s\" /* %s */", al.get(i), alComments.get(i));\r
                 if (i != al.size() - 1) {\r
                     cInstCode += commaNewLine;\r
                 }\r
             }\r
-            \r
+\r
             decl = new CStructTypeDeclaration (\r
                     stringTable,\r
                     2,\r
                     cDeclCode,\r
                     true\r
-            );  \r
+            );\r
             declaList.add(decl);\r
-    \r
+\r
             instTable.put(stringTable, cInstCode);\r
         }\r
     }\r
@@ -185,11 +161,11 @@ class StringTable {
         int pos;\r
 \r
         String str = inputStr;\r
-        \r
+\r
         //\r
         // The input can be two types:\r
-        // "L\"Bootmode\"" or "Bootmode". \r
-        // We drop the L\" and \" for the first type. \r
+        // "L\"Bootmode\"" or "Bootmode".\r
+        // We drop the L\" and \" for the first type.\r
         if (str.startsWith("L\"") && str.endsWith("\"")) {\r
             str = str.substring(2, str.length() - 1);\r
         }\r
@@ -205,12 +181,12 @@ class StringTable {
             }\r
             pos = s.length() + 1;\r
         }\r
-        \r
+\r
         i = len;\r
         //\r
         // Include the NULL character at the end of String\r
         //\r
-        len += str.length() + 1; \r
+        len += str.length() + 1;\r
         al.add(str);\r
         alComments.add(token.getPrimaryKeyString());\r
 \r
@@ -219,8 +195,8 @@ class StringTable {
 }\r
 \r
 /**\r
-    SizeTable   \r
-    \r
+    SizeTable\r
+\r
     This class is used to store the Size information for\r
     POINTER TYPE PCD entry in a PCD database.\r
 \r
@@ -230,7 +206,7 @@ class SizeTable {
     private ArrayList<String>   alComments;\r
     private int                 len;\r
     private String              phase;\r
-    \r
+\r
     public SizeTable (String phase) {\r
         al = new ArrayList<ArrayList<Integer>>();\r
         alComments = new ArrayList<String>();\r
@@ -241,24 +217,24 @@ class SizeTable {
     public String getSizeMacro () {\r
         return String.format(PcdDatabase.SizeTableSizeMacro, phase, getSize());\r
     }\r
-    \r
+\r
     private int getSize() {\r
         return len == 0 ? 1 : len;\r
     }\r
 \r
     public void genCode (ArrayList<CStructTypeDeclaration> declaList, HashMap<String, String> instTable, String phase) {\r
         final String name = "SizeTable";\r
-        \r
+\r
         CStructTypeDeclaration decl;\r
         String cCode;\r
 \r
-        cCode = String.format(PcdDatabase.SizeTableDeclaration, phase); \r
+        cCode = String.format(PcdDatabase.SizeTableDeclaration, phase);\r
         decl = new CStructTypeDeclaration (\r
                                             name,\r
                                             2,\r
                                             cCode,\r
                                             true\r
-                                           );  \r
+                                           );\r
         declaList.add(decl);\r
 \r
 \r
@@ -277,9 +253,9 @@ class SizeTable {
         } else {\r
             for (int index = 0; index < al.size(); index++) {\r
                 ArrayList<Integer> ial = al.get(index);\r
-                \r
+\r
                 String str = "\t";\r
-                \r
+\r
                 for (int index2 = 0; index2 < ial.size(); index2++) {\r
                     str += " " + ial.get(index2).toString();\r
                     if (index2 != ial.size() - 1) {\r
@@ -287,14 +263,14 @@ class SizeTable {
                     }\r
                 }\r
 \r
-                str += " /* " + alComments.get(index) + " */"; \r
-                \r
+                str += " /* " + alComments.get(index) + " */";\r
+\r
                 if (index != (al.size() - 1)) {\r
                     str += comma;\r
                 }\r
 \r
                 Output.add(str);\r
-    \r
+\r
             }\r
         }\r
         Output.add("}");\r
@@ -310,22 +286,22 @@ class SizeTable {
         if (token.datumType != Token.DATUM_TYPE.POINTER) {\r
             return;\r
         }\r
-        \r
+\r
         ArrayList<Integer> ial = token.getPointerTypeSize();\r
-        \r
-        len+= ial.size(); \r
+\r
+        len+= ial.size();\r
 \r
         al.add(ial);\r
         alComments.add(token.getPrimaryKeyString());\r
 \r
         return;\r
     }\r
-    \r
+\r
 }\r
 \r
 /**\r
-    GuidTable   \r
-    \r
+    GuidTable\r
+\r
     This class is used to store the GUIDs in a PCD database.\r
 **/\r
 class GuidTable {\r
@@ -357,17 +333,17 @@ class GuidTable {
 \r
     public void genCode (ArrayList<CStructTypeDeclaration> declaList, HashMap<String, String> instTable, String phase) {\r
         final String name = "GuidTable";\r
-        \r
+\r
         CStructTypeDeclaration decl;\r
         String cCode = "";\r
 \r
-        cCode += String.format(PcdDatabase.GuidTableDeclaration, phase); \r
+        cCode += String.format(PcdDatabase.GuidTableDeclaration, phase);\r
         decl = new CStructTypeDeclaration (\r
                                             name,\r
                                             4,\r
                                             cCode,\r
                                             true\r
-                                           );  \r
+                                           );\r
         declaList.add(decl);\r
 \r
 \r
@@ -404,7 +380,7 @@ class GuidTable {
         if (al.size() == 0) {\r
             Output.add("\t" + getUuidCString(new UUID(0, 0)));\r
         }\r
-        \r
+\r
         for (int i = 0; i < al.size(); i++) {\r
             String str = "\t" + getUuidCString(al.get(i));\r
 \r
@@ -431,8 +407,8 @@ class GuidTable {
                 return i;\r
             }\r
         }\r
-        \r
-        len++; \r
+\r
+        len++;\r
         al.add(uuid);\r
         alComments.add(name);\r
 \r
@@ -445,8 +421,8 @@ class GuidTable {
 }\r
 \r
 /**\r
-    SkuIdTable   \r
-    \r
+    SkuIdTable\r
+\r
     This class is used to store the SKU IDs in a PCD database.\r
 \r
 **/\r
@@ -477,17 +453,17 @@ class SkuIdTable {
 \r
     public void genCode (ArrayList<CStructTypeDeclaration> declaList, HashMap<String, String> instTable, String phase) {\r
         final String name = "SkuIdTable";\r
-        \r
+\r
         CStructTypeDeclaration decl;\r
         String cCode = "";\r
 \r
-        cCode += String.format(PcdDatabase.SkuIdTableDeclaration, phase); \r
+        cCode += String.format(PcdDatabase.SkuIdTableDeclaration, phase);\r
         decl = new CStructTypeDeclaration (\r
                                             name,\r
                                             1,\r
                                             cCode,\r
                                             true\r
-                                           );  \r
+                                           );\r
         declaList.add(decl);\r
 \r
 \r
@@ -505,7 +481,7 @@ class SkuIdTable {
                                                 true\r
                                               );\r
             declaList.add(decl);\r
-            \r
+\r
             instTable.put("SystemSkuId", "0");\r
         }\r
 \r
@@ -520,7 +496,7 @@ class SkuIdTable {
         if (al.size() == 0) {\r
             Output.add("\t0");\r
         }\r
-        \r
+\r
         for (int index = 0; index < al.size(); index++) {\r
             String str;\r
 \r
@@ -551,7 +527,7 @@ class SkuIdTable {
 \r
         int index;\r
         int pos;\r
-        \r
+\r
         //\r
         // Check if this SKU_ID Array is already in the table\r
         //\r
@@ -584,7 +560,7 @@ class SkuIdTable {
 \r
         index = len;\r
 \r
-        len += skuIds.length; \r
+        len += skuIds.length;\r
         al.add(skuIds);\r
         alComment.add(token.getPrimaryKeyString());\r
 \r
@@ -622,17 +598,17 @@ class LocalTokenNumberTable {
 \r
     public void genCode (ArrayList<CStructTypeDeclaration> declaList, HashMap<String, String> instTable, String phase) {\r
         final String name = "LocalTokenNumberTable";\r
-        \r
+\r
         CStructTypeDeclaration decl;\r
         String cCode = "";\r
 \r
-        cCode += String.format(PcdDatabase.LocalTokenNumberTableDeclaration, phase); \r
+        cCode += String.format(PcdDatabase.LocalTokenNumberTableDeclaration, phase);\r
         decl = new CStructTypeDeclaration (\r
                                             name,\r
                                             4,\r
                                             cCode,\r
                                             true\r
-                                           );  \r
+                                           );\r
         declaList.add(decl);\r
 \r
         cCode = PcdDatabase.genInstantiationStr(getInstantiation());\r
@@ -648,7 +624,7 @@ class LocalTokenNumberTable {
         if (al.size() == 0) {\r
             output.add("\t0");\r
         }\r
-        \r
+\r
         for (int index = 0; index < al.size(); index++) {\r
             String str;\r
 \r
@@ -674,7 +650,7 @@ class LocalTokenNumberTable {
         int index = len;\r
         String str;\r
 \r
-        len++; \r
+        len++;\r
 \r
         str =  String.format(PcdDatabase.offsetOfStrTemplate, phase, token.hasDefaultValue() ? "Init" : "Uninit", token.getPrimaryKeyString());\r
 \r
@@ -693,7 +669,7 @@ class LocalTokenNumberTable {
         if (token.getDefaultSku().type == DynamicTokenValue.VALUE_TYPE.VPD_TYPE) {\r
             str += " | PCD_TYPE_VPD";\r
         }\r
-        \r
+\r
         switch (token.datumType) {\r
         case UINT8:\r
         case BOOLEAN:\r
@@ -712,7 +688,7 @@ class LocalTokenNumberTable {
             str += " | PCD_DATUM_TYPE_POINTER";\r
             break;\r
         }\r
-        \r
+\r
         al.add(str);\r
         alComment.add(token.getPrimaryKeyString());\r
 \r
@@ -721,8 +697,8 @@ class LocalTokenNumberTable {
 }\r
 \r
 /**\r
-    ExMapTable   \r
-    \r
+    ExMapTable\r
+\r
     This class is used to store the table of mapping information\r
     between DynamicEX ID pair(Guid, TokenNumber) and\r
     the local token number assigned by PcdDatabase class.\r
@@ -730,8 +706,8 @@ class LocalTokenNumberTable {
 class ExMapTable {\r
 \r
     /**\r
-        ExTriplet   \r
-        \r
+        ExTriplet\r
+\r
         This class is used to store the mapping information\r
         between DynamicEX ID pair(Guid, TokenNumber) and\r
         the local token number assigned by PcdDatabase class.\r
@@ -740,7 +716,7 @@ class ExMapTable {
         public Integer guidTableIdx;\r
         public Long exTokenNumber;\r
         public Long localTokenIdx;\r
-    \r
+\r
         public ExTriplet (int guidTableIdx, long exTokenNumber, long localTokenIdx) {\r
             this.guidTableIdx = new Integer(guidTableIdx);\r
             this.exTokenNumber = new Long(exTokenNumber);\r
@@ -753,7 +729,7 @@ class ExMapTable {
     private String               phase;\r
     private int                  len;\r
     private int                   bodyLineNum;\r
-    \r
+\r
     public ExMapTable (String phase) {\r
         this.phase = phase;\r
         al = new ArrayList<ExTriplet>();\r
@@ -773,26 +749,26 @@ class ExMapTable {
 \r
     public void genCode (ArrayList<CStructTypeDeclaration> declaList, HashMap<String, String> instTable, String phase) {\r
         final String exMapTableName = "ExMapTable";\r
-        \r
+\r
         sortTable();\r
-        \r
+\r
         CStructTypeDeclaration decl;\r
         String cCode = "";\r
 \r
-        cCode += String.format(PcdDatabase.ExMapTableDeclaration, phase); \r
+        cCode += String.format(PcdDatabase.ExMapTableDeclaration, phase);\r
         decl = new CStructTypeDeclaration (\r
                                             exMapTableName,\r
                                             4,\r
                                             cCode,\r
                                             true\r
-                                           );  \r
+                                           );\r
         declaList.add(decl);\r
 \r
 \r
         cCode = PcdDatabase.genInstantiationStr(getInstantiation());\r
         instTable.put(exMapTableName, cCode);\r
     }\r
-    \r
+\r
     private ArrayList<String> getInstantiation () {\r
         ArrayList<String> Output = new ArrayList<String>();\r
 \r
@@ -801,7 +777,7 @@ class ExMapTable {
         if (al.size() == 0) {\r
             Output.add("\t{0, 0, 0}");\r
         }\r
-        \r
+\r
         int index;\r
         for (index = 0; index < al.size(); index++) {\r
             String str;\r
@@ -832,7 +808,7 @@ class ExMapTable {
         int index = len;\r
 \r
         len++;\r
-        ExTriplet et = new ExTriplet(guidTableIdx, exTokenNum, localTokenIdx); \r
+        ExTriplet et = new ExTriplet(guidTableIdx, exTokenNum, localTokenIdx);\r
 \r
         al.add(et);\r
         alComment.put(et, name);\r
@@ -850,7 +826,7 @@ class ExMapTable {
     // following order:\r
     // 1) ExGuid\r
     // 2) ExTokenNumber\r
-    // \r
+    //\r
     class ExTripletComp implements Comparator<ExTriplet> {\r
         public int compare (ExTriplet a, ExTriplet b) {\r
             if (a.guidTableIdx == b.guidTableIdx ) {\r
@@ -865,7 +841,7 @@ class ExMapTable {
                     return -1;\r
                 }\r
             }\r
-            \r
+\r
             return a.guidTableIdx - b.guidTableIdx;\r
         }\r
     }\r
@@ -877,8 +853,8 @@ class ExMapTable {
 }\r
 \r
 /**\r
-    PcdDatabase   \r
-    \r
+    PcdDatabase\r
+\r
     This class is used to generate C code for Autogen.h and Autogen.c of\r
     a PCD service DXE driver and PCD service PEIM.\r
 **/\r
@@ -898,7 +874,7 @@ public class PcdDatabase {
 \r
     public final static String ExMapTableSizeMacro              = "#define %s_EXMAPPING_TABLE_SIZE  %d\r\n";\r
     public final static String ExTokenNumber                    = "#define %s_EX_TOKEN_NUMBER       %d\r\n";\r
-    public final static String GuidTableSizeMacro               = "#define %s_GUID_TABLE_SIZE         %d\r\n"; \r
+    public final static String GuidTableSizeMacro               = "#define %s_GUID_TABLE_SIZE         %d\r\n";\r
     public final static String LocalTokenNumberTableSizeMacro   = "#define %s_LOCAL_TOKEN_NUMBER_TABLE_SIZE            %d\r\n";\r
     public final static String LocalTokenNumberSizeMacro               = "#define %s_LOCAL_TOKEN_NUMBER            %d\r\n";\r
     public final static String SizeTableSizeMacro               = "#define %s_SIZE_TABLE_SIZE            %d\r\n";\r
@@ -906,7 +882,7 @@ public class PcdDatabase {
     public final static String SkuIdTableSizeMacro              = "#define %s_SKUID_TABLE_SIZE        %d\r\n";\r
 \r
 \r
-    public final static String ExMapTableExistenceMacro         = "#define %s_EXMAP_TABLE_EMPTY    %s\r\n"; \r
+    public final static String ExMapTableExistenceMacro         = "#define %s_EXMAP_TABLE_EMPTY    %s\r\n";\r
     public final static String GuidTableExistenceMacro          = "#define %s_GUID_TABLE_EMPTY     %s\r\n";\r
     public final static String DatabaseExistenceMacro           = "#define %s_DATABASE_EMPTY       %s\r\n";\r
     public final static String StringTableExistenceMacro        = "#define %s_STRING_TABLE_EMPTY   %s\r\n";\r
@@ -915,7 +891,7 @@ public class PcdDatabase {
     public final static String offsetOfSkuHeadStrTemplate       = "offsetof(%s_PCD_DATABASE, %s.%s_SkuDataTable)";\r
     public final static String offsetOfVariableEnabledDefault   = "offsetof(%s_PCD_DATABASE, %s.%s_VariableDefault_%d)";\r
     public final static String offsetOfStrTemplate              = "offsetof(%s_PCD_DATABASE, %s.%s)";\r
-    \r
+\r
     private final static String  skuDataTableTemplate           = "SkuDataTable";\r
 \r
 \r
@@ -929,10 +905,10 @@ public class PcdDatabase {
     private ArrayList<Token> alTokens;\r
     private String phase;\r
     private int assignedTokenNumber;\r
-    \r
+\r
     //\r
     // Use two class global variable to store\r
-    // temperary \r
+    // temperary\r
     //\r
     private String      privateGlobalName;\r
     private String      privateGlobalCCode;\r
@@ -949,11 +925,11 @@ public class PcdDatabase {
     private String cString;\r
 \r
     /**\r
-        Constructor for PcdDatabase class. \r
-        \r
+        Constructor for PcdDatabase class.\r
+\r
         <p>We have two PCD dynamic(ex) database for the Framework implementation. One\r
         for PEI phase and the other for DXE phase.  </p>\r
-        \r
+\r
         @param alTokens A ArrayList of Dynamic(EX) PCD entry.\r
         @param exePhase The phase to generate PCD database for: valid input\r
                         is "PEI" or "DXE".\r
@@ -971,11 +947,11 @@ public class PcdDatabase {
        localTokenNumberTable = new LocalTokenNumberTable(phase);\r
        skuIdTable = new SkuIdTable(phase);\r
        sizeTable = new SizeTable(phase);\r
-       exMapTable = new ExMapTable(phase); \r
+       exMapTable = new ExMapTable(phase);\r
 \r
        //\r
        // Local token number 0 is reserved for INVALID_TOKEN_NUMBER.\r
-       // So we will increment 1 for the startLen passed from the \r
+       // So we will increment 1 for the startLen passed from the\r
        // constructor.\r
        //\r
        assignedTokenNumber = startLen + 1;\r
@@ -1013,7 +989,7 @@ public class PcdDatabase {
             return 1;\r
         }\r
     }\r
-    \r
+\r
     private int getHiiPtrTypeAlignmentSize(Token token) {\r
         switch (token.datumType) {\r
         case UINT8:\r
@@ -1037,7 +1013,7 @@ public class PcdDatabase {
             return 1;\r
         }\r
     }\r
-    \r
+\r
     private int getAlignmentSize (Token token) {\r
         if (token.getDefaultSku().type == DynamicTokenValue.VALUE_TYPE.HII_TYPE) {\r
             return 2;\r
@@ -1050,7 +1026,7 @@ public class PcdDatabase {
         if (token.isUnicodeStringType()) {\r
             return 2;\r
         }\r
-        \r
+\r
         return getDataTypeAlignmentSize(token);\r
      }\r
 \r
@@ -1061,7 +1037,7 @@ public class PcdDatabase {
     public String getHString () {\r
         return hString;\r
     }\r
-    \r
+\r
     private void genCodeWorker(Token t,\r
             ArrayList<CStructTypeDeclaration> declaList,\r
             HashMap<String, String> instTable, String phase)\r
@@ -1092,48 +1068,48 @@ public class PcdDatabase {
         declaList.add(decl);\r
 \r
         if (t.hasDefaultValue()) {\r
-            instTable.put(privateGlobalName, \r
+            instTable.put(privateGlobalName,\r
                           getTypeInstantiation(t, declaList, instTable, phase)\r
                           );\r
         }\r
 \r
     }\r
 \r
-    private void ProcessTokens (List<Token> tokens, \r
+    private void ProcessTokens (List<Token> tokens,\r
                                    ArrayList<CStructTypeDeclaration> cStructDeclList,\r
                                    HashMap<String, String> cStructInstTable,\r
                                    String phase\r
-                                   ) \r
+                                   )\r
     throws EntityException {\r
-        \r
+\r
         for (int idx = 0; idx < tokens.size(); idx++) {\r
             Token t = tokens.get(idx);\r
-            \r
+\r
             genCodeWorker (t, cStructDeclList, cStructInstTable, phase);\r
-            \r
+\r
             sizeTable.add(t);\r
             localTokenNumberTable.add(t);\r
             t.tokenNumber = assignedTokenNumber++;\r
-            \r
+\r
             //\r
             // Add a mapping if this dynamic PCD entry is a EX type\r
             //\r
             if (t.isDynamicEx()) {\r
-                exMapTable.add((int)t.tokenNumber, \r
-                                t.dynamicExTokenNumber, \r
-                                guidTable.add(translateSchemaStringToUUID(t.tokenSpaceName), t.getPrimaryKeyString()), \r
+                exMapTable.add((int)t.tokenNumber,\r
+                                t.dynamicExTokenNumber,\r
+                                guidTable.add(translateSchemaStringToUUID(t.tokenSpaceName), t.getPrimaryKeyString()),\r
                                 t.getPrimaryKeyString()\r
                                 );\r
             }\r
         }\r
 \r
     }\r
-    \r
+\r
     public void genCode () throws EntityException {\r
-        \r
+\r
         ArrayList<CStructTypeDeclaration> cStructDeclList = new ArrayList<CStructTypeDeclaration>();\r
         HashMap<String, String> cStructInstTable = new HashMap<String, String>();\r
-        \r
+\r
         List<Token> nexTokens = new ArrayList<Token> ();\r
         List<Token> exTokens = new ArrayList<Token> ();\r
 \r
@@ -1141,40 +1117,40 @@ public class PcdDatabase {
 \r
         //\r
         // We have to process Non-Ex type PCD entry first. The reason is\r
-        // that our optimization assumes that the Token Number of Non-Ex \r
+        // that our optimization assumes that the Token Number of Non-Ex\r
         // PCD entry start from 1 (for PEI phase) and grows continously upwards.\r
-        // \r
+        //\r
         // EX type token number starts from the last Non-EX PCD entry and\r
         // grows continously upwards.\r
         //\r
         ProcessTokens (nexTokens, cStructDeclList, cStructInstTable, phase);\r
         ProcessTokens (exTokens, cStructDeclList, cStructInstTable, phase);\r
-        \r
+\r
         stringTable.genCode(cStructDeclList, cStructInstTable);\r
         skuIdTable.genCode(cStructDeclList, cStructInstTable, phase);\r
         exMapTable.genCode(cStructDeclList, cStructInstTable, phase);\r
         localTokenNumberTable.genCode(cStructDeclList, cStructInstTable, phase);\r
         sizeTable.genCode(cStructDeclList, cStructInstTable, phase);\r
         guidTable.genCode(cStructDeclList, cStructInstTable, phase);\r
-        \r
+\r
         hString = genCMacroCode ();\r
-        \r
+\r
         HashMap <String, String> result;\r
-        \r
-        result = genCStructCode(cStructDeclList, \r
-                cStructInstTable, \r
+\r
+        result = genCStructCode(cStructDeclList,\r
+                cStructInstTable,\r
                 phase\r
                 );\r
-        \r
+\r
         hString += result.get("initDeclStr");\r
         hString += result.get("uninitDeclStr");\r
-        \r
+\r
         hString += String.format("#define PCD_%s_SERVICE_DRIVER_VERSION         %d", phase, version);\r
-        \r
+\r
         cString = newLine + newLine + result.get("initInstStr");\r
-        \r
+\r
     }\r
-    \r
+\r
     private String genCMacroCode () {\r
         String macroStr   = "";\r
 \r
@@ -1198,22 +1174,22 @@ public class PcdDatabase {
         macroStr += exMapTable.getExistanceMacro();\r
 \r
         macroStr += newLine;\r
-        \r
+\r
         return macroStr;\r
     }\r
-    \r
+\r
     private HashMap <String, String> genCStructCode(\r
-                                            ArrayList<CStructTypeDeclaration> declaList, \r
-                                            HashMap<String, String> instTable, \r
+                                            ArrayList<CStructTypeDeclaration> declaList,\r
+                                            HashMap<String, String> instTable,\r
                                             String phase\r
                                             ) {\r
-        \r
+\r
         int i;\r
         HashMap <String, String> result = new HashMap<String, String>();\r
         HashMap <Integer, ArrayList<String>>    alignmentInitDecl = new HashMap<Integer, ArrayList<String>>();\r
         HashMap <Integer, ArrayList<String>>    alignmentUninitDecl = new HashMap<Integer, ArrayList<String>>();\r
         HashMap <Integer, ArrayList<String>>    alignmentInitInst = new HashMap<Integer, ArrayList<String>>();\r
-        \r
+\r
         //\r
         // Initialize the storage for each alignment\r
         //\r
@@ -1222,17 +1198,17 @@ public class PcdDatabase {
             alignmentInitInst.put(new Integer(i), new ArrayList<String>());\r
             alignmentUninitDecl.put(new Integer(i), new ArrayList<String>());\r
         }\r
-        \r
+\r
         String initDeclStr   = "typedef struct {" + newLine;\r
         String initInstStr   = String.format("%s_PCD_DATABASE_INIT g%sPcdDbInit = { ", phase.toUpperCase(), phase.toUpperCase()) + newLine;\r
         String uninitDeclStr = "typedef struct {" + newLine;\r
 \r
         //\r
-        // Sort all C declaration and instantiation base on Alignment Size \r
+        // Sort all C declaration and instantiation base on Alignment Size\r
         //\r
         for (Object d : declaList) {\r
             CStructTypeDeclaration decl = (CStructTypeDeclaration) d;\r
-            \r
+\r
             if (decl.initTable) {\r
                 alignmentInitDecl.get(new Integer(decl.alignmentSize)).add(decl.cCode);\r
                 alignmentInitInst.get(new Integer(decl.alignmentSize)).add(instTable.get(decl.key));\r
@@ -1251,7 +1227,7 @@ public class PcdDatabase {
             for (i = 0; i < declaListBasedOnAlignment.size(); i++) {\r
                 initDeclStr += tab + declaListBasedOnAlignment.get(i);\r
                 initInstStr += tab + instListBasedOnAlignment.get(i);\r
-                \r
+\r
                 //\r
                 // We made a assumption that both PEI_PCD_DATABASE and DXE_PCD_DATABASE\r
                 // has a least one data memember with alignment size of 1. So we can\r
@@ -1264,27 +1240,27 @@ public class PcdDatabase {
                     initInstStr += commaNewLine;\r
                 }\r
             }\r
-            \r
+\r
             declaListBasedOnAlignment = alignmentUninitDecl.get(new Integer(align));\r
-            \r
+\r
             if (declaListBasedOnAlignment.size() != 0) {\r
                 uinitDatabaseEmpty = false;\r
             }\r
-            \r
+\r
             for (Object d : declaListBasedOnAlignment) {\r
                 String s = (String)d;\r
                 uninitDeclStr += tab + s;\r
             }\r
         }\r
-        \r
+\r
         if (uinitDatabaseEmpty) {\r
             uninitDeclStr += tab + String.format("%-20sdummy; /* PCD_DATABASE_UNINIT is emptry */\r\n", "UINT8");\r
         }\r
-        \r
+\r
         initDeclStr += String.format("} %s_PCD_DATABASE_INIT;", phase) + newLine + newLine;\r
         initInstStr += "};" + newLine;\r
         uninitDeclStr += String.format("} %s_PCD_DATABASE_UNINIT;", phase) + newLine + newLine;\r
-        \r
+\r
         result.put("initDeclStr", initDeclStr);\r
         result.put("initInstStr", initInstStr);\r
         result.put("uninitDeclStr", uninitDeclStr);\r
@@ -1321,21 +1297,21 @@ public class PcdDatabase {
         return String.format("%s /* %s */", token.skuData.get(skuId).value.hiiDefaultValue, cName);\r
     }\r
 \r
-    private String getCType (Token t) \r
+    private String getCType (Token t)\r
         throws EntityException {\r
-        \r
+\r
         if (t.isHiiEnable()) {\r
             return "VARIABLE_HEAD";\r
         }\r
-        \r
+\r
         if (t.isVpdEnable()) {\r
             return "VPD_HEAD";\r
         }\r
-        \r
+\r
         if (t.isUnicodeStringType()) {\r
             return "STRING_HEAD";\r
         }\r
-        \r
+\r
         switch (t.datumType) {\r
         case UINT64:\r
             return "UINT64";\r
@@ -1353,13 +1329,13 @@ public class PcdDatabase {
             throw new EntityException("Unknown type in getDataTypeCDeclaration");\r
         }\r
     }\r
-    \r
+\r
     //\r
     // privateGlobalName and privateGlobalCCode is used to pass output to caller of getCDeclarationString\r
     //\r
-    private void getCDeclarationString(Token t) \r
+    private void getCDeclarationString(Token t)\r
         throws EntityException {\r
-        \r
+\r
         if (t.isSkuEnable()) {\r
             privateGlobalName = String.format("%s_%s", t.getPrimaryKeyString(), skuDataTableTemplate);\r
         } else {\r
@@ -1382,8 +1358,8 @@ public class PcdDatabase {
             privateGlobalCCode = String.format("%-20s%s[%d];\r\n", type, privateGlobalName, t.getSkuIdCount());\r
         }\r
     }\r
-    \r
-    private String getDataTypeDeclarationForVariableDefault (Token token, String cName, int skuId) \r
+\r
+    private String getDataTypeDeclarationForVariableDefault (Token token, String cName, int skuId)\r
         throws EntityException {\r
 \r
         String typeStr;\r
@@ -1424,9 +1400,9 @@ public class PcdDatabase {
 \r
         return String.format("%-20s%s;\r\n", typeStr, cName);\r
     }\r
-    \r
+\r
     private String getTypeInstantiation (Token t, ArrayList<CStructTypeDeclaration> declaList, HashMap<String, String> instTable, String phase) throws EntityException {\r
-      \r
+\r
         int     i;\r
 \r
         String s;\r
@@ -1445,8 +1421,8 @@ public class PcdDatabase {
                       UINT16  DefaultValueOffset; // Offset of the Default Value\r
                     } VARIABLE_HEAD  ;\r
                  */\r
-                String variableDefaultName = String.format("%s_VariableDefault_%d", t.getPrimaryKeyString(), i); \r
-                \r
+                String variableDefaultName = String.format("%s_VariableDefault_%d", t.getPrimaryKeyString(), i);\r
+\r
                 s += tab + tab + String.format("{ %d, %d, %s, %s }", guidTable.add(t.skuData.get(i).value.variableGuid, t.getPrimaryKeyString()),\r
                                                           stringTable.add(t.skuData.get(i).value.getStringOfVariableName(), t),\r
                                                           t.skuData.get(i).value.variableOffset,\r
@@ -1460,7 +1436,7 @@ public class PcdDatabase {
                                                         getHiiPtrTypeAlignmentSize(t),\r
                                                         getDataTypeDeclarationForVariableDefault(t, variableDefaultName, i),\r
                                                         true\r
-                                                        ); \r
+                                                        );\r
                 declaList.add(decl);\r
                 instTable.put(variableDefaultName, getDataTypeInstantiationForVariableDefault (t, variableDefaultName, i));\r
             } else if (t.isVpdEnable()) {\r
@@ -1479,7 +1455,7 @@ public class PcdDatabase {
                     s += tab + tab + String.format("{ %s }", t.skuData.get(i).value.value);\r
                 }\r
             }\r
-            \r
+\r
             if (i != t.skuData.size() - 1) {\r
                 s += commaNewLine;\r
             } else {\r
@@ -1487,19 +1463,19 @@ public class PcdDatabase {
             }\r
 \r
         }\r
-        \r
+\r
         s += tab + "}";\r
-        \r
+\r
         return s;\r
     }\r
-    \r
-    public static String getPcdDatabaseCommonDefinitions () \r
+\r
+    public static String getPcdDatabaseCommonDefinitions ()\r
         throws EntityException {\r
 \r
         String retStr = "";\r
         try {\r
-            File file = new File(GlobalData.getWorkspacePath() + File.separator + \r
-                                 "Tools" + File.separator + \r
+            File file = new File(GlobalData.getWorkspacePath() + File.separator +\r
+                                 "Tools" + File.separator +\r
                                  "Conf" + File.separator +\r
                                  "Pcd" + File.separator +\r
                                  "PcdDatabaseCommonDefinitions.sample");\r
@@ -1516,13 +1492,13 @@ public class PcdDatabase {
         return retStr;\r
     }\r
 \r
-    public static String getPcdDxeDatabaseDefinitions () \r
+    public static String getPcdDxeDatabaseDefinitions ()\r
         throws EntityException {\r
 \r
         String retStr = "";\r
         try {\r
-            File file = new File(GlobalData.getWorkspacePath() + File.separator + \r
-                                 "Tools" + File.separator + \r
+            File file = new File(GlobalData.getWorkspacePath() + File.separator +\r
+                                 "Tools" + File.separator +\r
                                  "Conf" + File.separator +\r
                                  "Pcd" + File.separator +\r
                                  "PcdDatabaseDxeDefinitions.sample");\r
@@ -1539,13 +1515,13 @@ public class PcdDatabase {
         return retStr;\r
     }\r
 \r
-    public static String getPcdPeiDatabaseDefinitions () \r
+    public static String getPcdPeiDatabaseDefinitions ()\r
         throws EntityException {\r
 \r
         String retStr = "";\r
         try {\r
-            File file = new File(GlobalData.getWorkspacePath() + File.separator + \r
-                                 "Tools" + File.separator + \r
+            File file = new File(GlobalData.getWorkspacePath() + File.separator +\r
+                                 "Tools" + File.separator +\r
                                  "Conf" + File.separator +\r
                                  "Pcd" + File.separator +\r
                                  "PcdDatabasePeiDefinitions.sample");\r
@@ -1564,21 +1540,21 @@ public class PcdDatabase {
 \r
     /**\r
        Translate the schema string to UUID instance.\r
-       \r
+\r
        In schema, the string of UUID is defined as following two types string:\r
         1) GuidArrayType: pattern = 0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},(\r
         )*0x[a-fA-F0-9]{1,4}(,( )*\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\})?\r
-       \r
+\r
         2) GuidNamingConvention: pattern =\r
         [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}\r
-       \r
+\r
        This function will convert string and create uuid instance.\r
-       \r
+\r
        @param uuidString    UUID string in XML file\r
-       \r
+\r
        @return UUID         UUID instance\r
     **/\r
-    private UUID translateSchemaStringToUUID(String uuidString) \r
+    private UUID translateSchemaStringToUUID(String uuidString)\r
         throws EntityException {\r
         String      temp;\r
         String[]    splitStringArray;\r
@@ -1603,9 +1579,9 @@ public class PcdDatabase {
         uuidString = uuidString.replaceAll("\\}", "");\r
 \r
         //\r
-        // If the UUID schema string is GuidArrayType type then need translate \r
+        // If the UUID schema string is GuidArrayType type then need translate\r
         // to GuidNamingConvention type at first.\r
-        // \r
+        //\r
         if ((uuidString.charAt(0) == '0') && ((uuidString.charAt(1) == 'x') || (uuidString.charAt(1) == 'X'))) {\r
             splitStringArray = uuidString.split("," );\r
             if (splitStringArray.length != 11) {\r
@@ -1614,7 +1590,7 @@ public class PcdDatabase {
 \r
             //\r
             // Remove blank space from these string and remove header string "0x"\r
-            // \r
+            //\r
             for (index = 0; index < 11; index ++) {\r
                 splitStringArray[index] = splitStringArray[index].trim();\r
                 splitStringArray[index] = splitStringArray[index].substring(2, splitStringArray[index].length());\r
@@ -1622,7 +1598,7 @@ public class PcdDatabase {
 \r
             //\r
             // Add heading '0' to normalize the string length\r
-            // \r
+            //\r
             for (index = 3; index < 11; index ++) {\r
                 chLen = splitStringArray[index].length();\r
                 for (chIndex = 0; chIndex < 2 - chLen; chIndex ++) {\r
@@ -1632,7 +1608,7 @@ public class PcdDatabase {
 \r
             //\r
             // construct the final GuidNamingConvention string\r
-            // \r
+            //\r
             temp = String.format("%s-%s-%s-%s%s-%s%s%s%s%s%s",\r
                                  splitStringArray[0],\r
                                  splitStringArray[1],\r