- final String newLine = "\r\n";\r
- final String instNewLine = "\\\r\n";\r
- final String declNewLine = ";\r\n";\r
- final String tab = "\t";\r
- final String commaInstNewLine = "\t,\\\r\n";\r
- final String commaNewLine = ", \r\n";\r
-\r
- int i;\r
- ArrayList<String> decla;\r
- ArrayList<String> inst;\r
-\r
- String macroStr = "";\r
- String initDeclStr = "";\r
- String initInstStr = "";\r
- String uninitDeclStr = "";\r
-\r
- List<Token> initTokens = new ArrayList<Token> ();\r
- List<Token> uninitTokens = new ArrayList<Token> ();\r
- \r
- HashMap <String, ArrayList<String>> initCode = new HashMap<String, ArrayList<String>> ();\r
- HashMap <String, ArrayList<String>> uninitCode = new HashMap<String, ArrayList<String>> ();\r
-\r
- getTwoGroupsOfTokens (alTokens, initTokens, uninitTokens);\r
-\r
- //\r
- // Generate Structure Declaration for PcdTokens without Default Value\r
- // PEI_PCD_DATABASE_INIT\r
- //\r
- java.util.Comparator comparator = new AlignmentSizeComp();\r
- List<Token> list = initTokens;\r
- java.util.Collections.sort(list, comparator);\r
- initCode = processTokens(initTokens);\r
-\r
- //\r
- // Generate Structure Declaration for PcdTokens without Default Value\r
- // PEI_PCD_DATABASE_UNINIT\r
- //\r
- java.util.Collections.sort(uninitTokens, comparator);\r
- uninitCode = processTokens(uninitTokens);\r
-\r
- //\r
- // Generate size info Macro for all Tables\r
- //\r
- macroStr += guidTable.getSizeMacro();\r
- macroStr += stringTable.getSizeMacro();\r
- macroStr += skuIdTable.getSizeMacro();\r
- macroStr += localTokenNumberTable.getSizeMacro();\r
- macroStr += exMapTable.getSizeMacro();\r
-\r
- //\r
- // Generate existance info Macro for all Tables\r
- //\r
- macroStr += guidTable.getExistanceMacro();\r
- macroStr += stringTable.getExistanceMacro();\r
- macroStr += skuIdTable.getExistanceMacro();\r
- macroStr += localTokenNumberTable.getExistanceMacro();\r
- macroStr += exMapTable.getExistanceMacro();\r
-\r
- //\r
- // Generate Structure Declaration for PcdTokens with Default Value\r
- // for example PEI_PCD_DATABASE_INIT\r
- //\r
- initDeclStr += "typedef struct {" + newLine;\r
- {\r
- initDeclStr += tab + exMapTable.getTypeDeclaration();\r
- initDeclStr += tab + guidTable.getTypeDeclaration();\r
- initDeclStr += tab + localTokenNumberTable.getTypeDeclaration();\r
- initDeclStr += tab + stringTable.getTypeDeclaration();\r
- initDeclStr += tab + sizeTable.getTypeDeclaration();\r
- initDeclStr += tab + skuIdTable.getTypeDeclaration();\r
- if (phase.equalsIgnoreCase("PEI")) {\r
- initDeclStr += tab + "SKU_ID SystemSkuId;" + newLine;\r
- }\r
-\r
- decla = initCode.get(new String("Declaration"));\r
- for (i = 0; i < decla.size(); i++) {\r
- initDeclStr += tab + decla.get(i) + declNewLine;\r
- }\r
-\r
- //\r
- // Generate Structure Declaration for PcdToken with SkuEnabled\r
- //\r
- decla = initCode.get("DeclarationForSku");\r
-\r
- for (i = 0; i < decla.size(); i++) {\r
- initDeclStr += tab + decla.get(i) + declNewLine;\r
- }\r
- }\r
- initDeclStr += String.format("} %s_PCD_DATABASE_INIT;\r\n\r\n", phase);\r
-\r
- //\r
- // Generate MACRO for structure intialization of PCDTokens with Default Value\r
- // The sequence must match the sequence of declaration of the memembers in the structure\r
- String tmp = String.format("%s_PCD_DATABASE_INIT g%sPcdDbInit = { ", phase.toUpperCase(), phase.toUpperCase());\r
- initInstStr += tmp + newLine;\r
- initInstStr += tab + genInstantiationStr(exMapTable.getInstantiation()) + commaNewLine;\r
- initInstStr += tab + genInstantiationStr(guidTable.getInstantiation()) + commaNewLine;\r
- initInstStr += tab + genInstantiationStr(localTokenNumberTable.getInstantiation()) + commaNewLine; \r
- /*\r
- inst = stringTable.getInstantiation();\r
- for (i = 0; i < inst.size(); i++ ) {\r
- initInstStr += tab + inst.get(i) + commaNewLine; \r
- }\r
- */\r
- initInstStr += tab + genInstantiationStr(stringTable.getInstantiation()) + commaNewLine;\r
- initInstStr += tab + genInstantiationStr(sizeTable.getInstantiation()) + commaNewLine;\r
- initInstStr += tab + genInstantiationStr(skuIdTable.getInstantiation()) + commaNewLine;\r
- //\r
- // For SystemSkuId\r
- //\r
- if (phase.equalsIgnoreCase("PEI")) {\r
- initInstStr += tab + "0" + tab + "/* SystemSkuId */" + commaNewLine;\r
- }\r
-\r
- inst = initCode.get("Instantiation");\r
- for (i = 0; i < inst.size(); i++) {\r
- initInstStr += tab + inst.get(i) + commaNewLine;\r
- }\r
-\r
- inst = initCode.get("InstantiationForSku");\r
- for (i = 0; i < inst.size(); i++) {\r
- initInstStr += tab + inst.get(i);\r
- if (i != inst.size() - 1) {\r
- initInstStr += commaNewLine;\r
- }\r
- }\r
-\r
- initInstStr += "};";\r
-\r
- uninitDeclStr += "typedef struct {" + newLine;\r
- {\r
- decla = uninitCode.get("Declaration");\r
- if (decla.size() == 0) {\r
- uninitDeclStr += "UINT8 dummy /* The UINT struct is empty */" + declNewLine;\r
- } else {\r
- \r
- for (i = 0; i < decla.size(); i++) {\r
- uninitDeclStr += tab + decla.get(i) + declNewLine;\r
- }\r
- \r
- decla = uninitCode.get("DeclarationForSku");\r
- \r
- for (i = 0; i < decla.size(); i++) {\r
- uninitDeclStr += tab + decla.get(i) + declNewLine;\r
- }\r
- }\r
- }\r
- uninitDeclStr += String.format("} %s_PCD_DATABASE_UNINIT;\r\n\r\n", phase);\r
-\r
- cString = initInstStr + newLine;\r
- hString = macroStr + newLine \r
- + initDeclStr + newLine\r
- + uninitDeclStr + newLine\r
- + newLine;\r
-\r
- }\r
-\r
- private String genInstantiationStr (ArrayList<String> alStr) {\r
- String str = "";\r
- for (int i = 0; i< alStr.size(); i++) {\r
- str += "\t" + alStr.get(i);\r
- if (i != alStr.size() - 1) {\r
- str += "\r\n";\r
- }\r
- }\r
-\r
- return str;\r
- }\r
-\r
- private HashMap<String, ArrayList<String>> processTokens (List<Token> alToken) {\r
-\r
- ArrayList[] output = new ArrayList[4];\r
- HashMap <String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();\r
-\r
- ArrayList<String> decl = new ArrayList<String>();\r
- ArrayList<String> declForSkuEnableType = new ArrayList<String>();\r
- ArrayList<String> inst = new ArrayList<String>();\r
- ArrayList<String> instForSkuEnableType = new ArrayList<String>();\r
-\r
- for (int index = 0; index < alToken.size(); index++) {\r
- Token token = alToken.get(index);\r
-\r
- if (token.skuEnabled) {\r
- //\r
- // BugBug: Schema only support Data type now\r
- //\r
- int tableIdx;\r
-\r
- tableIdx = skuIdTable.add(token);\r
-\r
- decl.add(getSkuEnabledTypeDeclaration(token));\r
- if (token.hasDefaultValue()) {\r
- inst.add(getSkuEnabledTypeInstantiaion(token, tableIdx)); \r
- }\r
-\r
- declForSkuEnableType.add(getDataTypeDeclarationForSkuEnabled(token));\r
- if (token.hasDefaultValue()) {\r
- instForSkuEnableType.add(getDataTypeInstantiationForSkuEnabled(token));\r
- }\r
-\r
- } else {\r
- if (token.hiiEnabled) {\r
- decl.add(getVariableEnableTypeDeclaration(token));\r
- inst.add(getVariableEnableInstantiation(token));\r
- } else if (token.vpdEnabled) {\r
- decl.add(getVpdEnableTypeDeclaration(token));\r
- inst.add(getVpdEnableTypeInstantiation(token));\r
- } else if (token.isStringType()) {\r
- decl.add(getStringTypeDeclaration(token));\r
- inst.add(getStringTypeInstantiation(stringTable.add(token.getStringTypeString(), token), token));\r
- }\r
- else {\r
- decl.add(getDataTypeDeclaration(token));\r
- if (token.hasDefaultValue()) {\r
- inst.add(getDataTypeInstantiation(token));\r
- }\r
- }\r
- }\r
-\r
- sizeTable.add(token);\r
- localTokenNumberTable.add(token);\r
- token.assignedtokenNumber = assignedTokenNumber++;\r
-\r
- }\r
-\r
- map.put("Declaration", decl);\r
- map.put("DeclarationForSku", declForSkuEnableType);\r
- map.put("Instantiation", inst);\r
- map.put("InstantiationForSku", instForSkuEnableType);\r
-\r
- return map;\r
- }\r
-\r
- private String getSkuEnabledTypeDeclaration (Token token) {\r
- return String.format("SKU_HEAD %s;\r\n", token.getPrimaryKeyString());\r
- }\r
-\r
- private String getSkuEnabledTypeInstantiaion (Token token, int SkuTableIdx) {\r
-\r
- String offsetof = String.format(PcdDatabase.offsetOfSkuHeadStrTemplate, phase, token.hasDefaultValue()? "Init" : "Uninit", token.getPrimaryKeyString());\r
- return String.format("{ %s, %d }", offsetof, SkuTableIdx);\r
- }\r
-\r
- private String getDataTypeDeclarationForSkuEnabled (Token token) {\r
- String typeStr = "";\r
-\r
- if (token.datumType == Token.DATUM_TYPE.UINT8) {\r
- typeStr = "UINT8 %s_%s[%d];\r\n";\r
- } else if (token.datumType == Token.DATUM_TYPE.UINT16) {\r
- typeStr = "UINT16 %s_%s[%d];\r\n";\r
- } else if (token.datumType == Token.DATUM_TYPE.UINT32) {\r
- typeStr = "UINT32 %s_%s[%d];\r\n";\r
- } else if (token.datumType == Token.DATUM_TYPE.UINT64) {\r
- typeStr = "UINT64 %s_%s[%d];\r\n";\r
- } else if (token.datumType == Token.DATUM_TYPE.BOOLEAN) {\r
- typeStr = "BOOLEAN %s_%s[%d];\r\n";\r
- } else if (token.datumType == Token.DATUM_TYPE.POINTER) {\r
- return String.format("UINT8 %s_s[%d];\r\n", token.getPrimaryKeyString(), "SkuDataTable", token.datumSize * token.maxSkuCount);\r
- } \r
-\r
- return String.format(typeStr, token.getPrimaryKeyString(), "SkuDataTable", token.maxSkuCount);\r
-\r
- }\r
-\r
- private String getDataTypeInstantiationForSkuEnabled (Token token) {\r
- String str = "";\r
-\r
- if (token.datumType == Token.DATUM_TYPE.POINTER) {\r
- return String.format("UINT8 %s_s[%d]", token.getPrimaryKeyString(), "SkuDataTable", token.datumSize * token.maxSkuCount);\r
- } else {\r
- str = "{ ";\r
- for (int idx = 0; idx < token.maxSkuCount; idx++) {\r
- str += token.skuData.get(idx).toString();\r
- if (idx != token.maxSkuCount - 1) {\r
- str += ", ";\r
- }\r
- }\r
- str += "}";\r
-\r
- return str;\r
- }\r
-\r
- }\r
-\r
- private String getDataTypeInstantiation (Token token) {\r
-\r
- String typeStr = "";\r
-\r
- if (token.datumType == Token.DATUM_TYPE.POINTER) {\r
- return String.format("%s /* %s */", token.datum.toString(), token.getPrimaryKeyString());\r
- } else {\r
- return String.format("%s /* %s */", token.datum.toString(), token.getPrimaryKeyString());\r
- }\r
- }\r
-\r
-\r
- private String getDataTypeDeclaration (Token token) {\r
-\r
- String typeStr = "";\r
-\r
- if (token.datumType == Token.DATUM_TYPE.UINT8) {\r
- typeStr = "UINT8";\r
- } else if (token.datumType == Token.DATUM_TYPE.UINT16) {\r
- typeStr = "UINT16";\r
- } else if (token.datumType == Token.DATUM_TYPE.UINT32) {\r
- typeStr = "UINT32";\r
- } else if (token.datumType == Token.DATUM_TYPE.UINT64) {\r
- typeStr = "UINT64";\r
- } else if (token.datumType == Token.DATUM_TYPE.BOOLEAN) {\r
- typeStr = "BOOLEAN";\r
- } else if (token.datumType == Token.DATUM_TYPE.POINTER) {\r
- return String.format("UINT8 %s[%d]", token.getPrimaryKeyString(), token.datumSize);\r
- } else {\r
- }\r
-\r
- return String.format("%s %s", typeStr, token.getPrimaryKeyString());\r
- }\r
-\r
- private String getVpdEnableTypeDeclaration (Token token) {\r
- return String.format("VPD_HEAD %s", token.getPrimaryKeyString());\r
- }\r
-\r
- private String getVpdEnableTypeInstantiation (Token token) {\r
- return String.format("{ %d } /* %s */", token.vpdOffset,\r
- token.getPrimaryKeyString());\r
- }\r
-\r
- private String getStringTypeDeclaration (Token token) {\r
- return String.format("UINT16 %s", token.getPrimaryKeyString());\r
- }\r
-\r
- private String getStringTypeInstantiation (int StringTableIdx, Token token) {\r
- return String.format ("%d /* %s */", StringTableIdx,\r
- token.getPrimaryKeyString()); \r
- }\r
-\r
-\r
- private String getVariableEnableTypeDeclaration (Token token) {\r
- return String.format("VARIABLE_HEAD %s", token.getPrimaryKeyString());\r
- }\r
-\r
- private String getVariableEnableInstantiation (Token token) {\r
- return String.format("{ %d, %d, %d } /* %s */", guidTable.add(token.variableGuid, token.getPrimaryKeyString()),\r
- stringTable.add(token.variableName, token),\r
- token.variableOffset, \r
- token.getPrimaryKeyString());\r
- }\r
-\r
- public int getTotalTokenNumber () {\r
- return sizeTable.getTableLen();\r
- }\r
+ final String newLine = "\r\n";\r
+ final String instNewLine = "\\\r\n";\r
+ final String declNewLine = ";\r\n";\r
+ final String tab = "\t";\r
+ final String commaInstNewLine = "\t,\\\r\n";\r
+ final String commaNewLine = ", \r\n";\r
+\r
+ int i;\r
+ ArrayList<String> decla;\r
+ ArrayList<String> inst;\r
+\r
+ String macroStr = "";\r
+ String initDeclStr = "";\r
+ String initInstStr = "";\r
+ String uninitDeclStr = "";\r
+\r
+ List<Token> initTokens = new ArrayList<Token> ();\r
+ List<Token> uninitTokens = new ArrayList<Token> ();\r
+ \r
+ HashMap <String, ArrayList<String>> initCode = new HashMap<String, ArrayList<String>> ();\r
+ HashMap <String, ArrayList<String>> uninitCode = new HashMap<String, ArrayList<String>> ();\r
+\r
+ getTwoGroupsOfTokens (alTokens, initTokens, uninitTokens);\r
+\r
+ //\r
+ // Generate Structure Declaration for PcdTokens without Default Value\r
+ // PEI_PCD_DATABASE_INIT\r
+ //\r
+ java.util.Comparator comparator = new AlignmentSizeComp();\r
+ List<Token> list = initTokens;\r
+ java.util.Collections.sort(list, comparator);\r
+ initCode = processTokens(initTokens);\r
+\r
+ //\r
+ // Generate Structure Declaration for PcdTokens without Default Value\r
+ // PEI_PCD_DATABASE_UNINIT\r
+ //\r
+ java.util.Collections.sort(uninitTokens, comparator);\r
+ uninitCode = processTokens(uninitTokens);\r
+\r
+ //\r
+ // Generate size info Macro for all Tables\r
+ //\r
+ macroStr += guidTable.getSizeMacro();\r
+ macroStr += stringTable.getSizeMacro();\r
+ macroStr += skuIdTable.getSizeMacro();\r
+ macroStr += localTokenNumberTable.getSizeMacro();\r
+ macroStr += exMapTable.getSizeMacro();\r
+\r
+ //\r
+ // Generate existance info Macro for all Tables\r
+ //\r
+ macroStr += guidTable.getExistanceMacro();\r
+ macroStr += stringTable.getExistanceMacro();\r
+ macroStr += skuIdTable.getExistanceMacro();\r
+ macroStr += localTokenNumberTable.getExistanceMacro();\r
+ macroStr += exMapTable.getExistanceMacro();\r
+\r
+ //\r
+ // Generate Structure Declaration for PcdTokens with Default Value\r
+ // for example PEI_PCD_DATABASE_INIT\r
+ //\r
+ initDeclStr += "typedef struct {" + newLine;\r
+ {\r
+ initDeclStr += tab + exMapTable.getTypeDeclaration();\r
+ initDeclStr += tab + guidTable.getTypeDeclaration();\r
+ initDeclStr += tab + localTokenNumberTable.getTypeDeclaration();\r
+ initDeclStr += tab + stringTable.getTypeDeclaration();\r
+ initDeclStr += tab + sizeTable.getTypeDeclaration();\r
+ initDeclStr += tab + skuIdTable.getTypeDeclaration();\r
+ if (phase.equalsIgnoreCase("PEI")) {\r
+ initDeclStr += tab + "SKU_ID SystemSkuId;" + newLine;\r
+ }\r
+\r
+ decla = initCode.get(new String("Declaration"));\r
+ for (i = 0; i < decla.size(); i++) {\r
+ initDeclStr += tab + decla.get(i) + declNewLine;\r
+ }\r
+\r
+ //\r
+ // Generate Structure Declaration for PcdToken with SkuEnabled\r
+ //\r
+ decla = initCode.get("DeclarationForSku");\r
+\r
+ for (i = 0; i < decla.size(); i++) {\r
+ initDeclStr += tab + decla.get(i) + declNewLine;\r
+ }\r
+ }\r
+ initDeclStr += String.format("} %s_PCD_DATABASE_INIT;\r\n\r\n", phase);\r
+\r
+ //\r
+ // Generate MACRO for structure intialization of PCDTokens with Default Value\r
+ // The sequence must match the sequence of declaration of the memembers in the structure\r
+ String tmp = String.format("%s_PCD_DATABASE_INIT g%sPcdDbInit = { ", phase.toUpperCase(), phase.toUpperCase());\r
+ initInstStr += tmp + newLine;\r
+ initInstStr += tab + genInstantiationStr(exMapTable.getInstantiation()) + commaNewLine;\r
+ initInstStr += tab + genInstantiationStr(guidTable.getInstantiation()) + commaNewLine;\r
+ initInstStr += tab + genInstantiationStr(localTokenNumberTable.getInstantiation()) + commaNewLine; \r
+ /*\r
+ inst = stringTable.getInstantiation();\r
+ for (i = 0; i < inst.size(); i++ ) {\r
+ initInstStr += tab + inst.get(i) + commaNewLine; \r
+ }\r
+ */\r
+ initInstStr += tab + genInstantiationStr(stringTable.getInstantiation()) + commaNewLine;\r
+ initInstStr += tab + genInstantiationStr(sizeTable.getInstantiation()) + commaNewLine;\r
+ initInstStr += tab + genInstantiationStr(skuIdTable.getInstantiation()) + commaNewLine;\r
+ //\r
+ // For SystemSkuId\r
+ //\r
+ if (phase.equalsIgnoreCase("PEI")) {\r
+ initInstStr += tab + "0" + tab + "/* SystemSkuId */" + commaNewLine;\r
+ }\r
+\r
+ inst = initCode.get("Instantiation");\r
+ for (i = 0; i < inst.size(); i++) {\r
+ initInstStr += tab + inst.get(i) + commaNewLine;\r
+ }\r
+\r
+ inst = initCode.get("InstantiationForSku");\r
+ for (i = 0; i < inst.size(); i++) {\r
+ initInstStr += tab + inst.get(i);\r
+ if (i != inst.size() - 1) {\r
+ initInstStr += commaNewLine;\r
+ }\r
+ }\r
+\r
+ initInstStr += "};";\r
+\r
+ uninitDeclStr += "typedef struct {" + newLine;\r
+ {\r
+ decla = uninitCode.get("Declaration");\r
+ if (decla.size() == 0) {\r
+ uninitDeclStr += "UINT8 dummy /* The UINT struct is empty */" + declNewLine;\r
+ } else {\r
+ \r
+ for (i = 0; i < decla.size(); i++) {\r
+ uninitDeclStr += tab + decla.get(i) + declNewLine;\r
+ }\r
+ \r
+ decla = uninitCode.get("DeclarationForSku");\r
+ \r
+ for (i = 0; i < decla.size(); i++) {\r
+ uninitDeclStr += tab + decla.get(i) + declNewLine;\r
+ }\r
+ }\r
+ }\r
+ uninitDeclStr += String.format("} %s_PCD_DATABASE_UNINIT;\r\n\r\n", phase);\r
+\r
+ cString = initInstStr + newLine;\r
+ hString = macroStr + newLine \r
+ + initDeclStr + newLine\r
+ + uninitDeclStr + newLine\r
+ + newLine;\r
+\r
+ }\r
+\r
+ private String genInstantiationStr (ArrayList<String> alStr) {\r
+ String str = "";\r
+ for (int i = 0; i< alStr.size(); i++) {\r
+ str += "\t" + alStr.get(i);\r
+ if (i != alStr.size() - 1) {\r
+ str += "\r\n";\r
+ }\r
+ }\r
+\r
+ return str;\r
+ }\r
+\r
+ private HashMap<String, ArrayList<String>> processTokens (List<Token> alToken) {\r
+\r
+ ArrayList[] output = new ArrayList[4];\r
+ HashMap <String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>();\r
+\r
+ ArrayList<String> decl = new ArrayList<String>();\r
+ ArrayList<String> declForSkuEnableType = new ArrayList<String>();\r
+ ArrayList<String> inst = new ArrayList<String>();\r
+ ArrayList<String> instForSkuEnableType = new ArrayList<String>();\r
+\r
+ for (int index = 0; index < alToken.size(); index++) {\r
+ Token token = alToken.get(index);\r
+\r
+ if (token.skuEnabled) {\r
+ //\r
+ // BugBug: Schema only support Data type now\r
+ //\r
+ int tableIdx;\r
+\r
+ tableIdx = skuIdTable.add(token);\r
+\r
+ decl.add(getSkuEnabledTypeDeclaration(token));\r
+ if (token.hasDefaultValue()) {\r
+ inst.add(getSkuEnabledTypeInstantiaion(token, tableIdx)); \r
+ }\r
+\r
+ declForSkuEnableType.add(getDataTypeDeclarationForSkuEnabled(token));\r
+ if (token.hasDefaultValue()) {\r
+ instForSkuEnableType.add(getDataTypeInstantiationForSkuEnabled(token));\r
+ }\r
+\r
+ } else {\r
+ if (token.hiiEnabled) {\r
+ decl.add(getVariableEnableTypeDeclaration(token));\r
+ inst.add(getVariableEnableInstantiation(token));\r
+ } else if (token.vpdEnabled) {\r
+ decl.add(getVpdEnableTypeDeclaration(token));\r
+ inst.add(getVpdEnableTypeInstantiation(token));\r
+ } else if (token.isStringType()) {\r
+ decl.add(getStringTypeDeclaration(token));\r
+ inst.add(getStringTypeInstantiation(stringTable.add(token.getStringTypeString(), token), token));\r
+ }\r
+ else {\r
+ decl.add(getDataTypeDeclaration(token));\r
+ if (token.hasDefaultValue()) {\r
+ inst.add(getDataTypeInstantiation(token));\r
+ }\r
+ }\r
+ }\r
+\r
+ sizeTable.add(token);\r
+ localTokenNumberTable.add(token);\r
+ token.assignedtokenNumber = assignedTokenNumber++;\r
+\r
+ }\r
+\r
+ map.put("Declaration", decl);\r
+ map.put("DeclarationForSku", declForSkuEnableType);\r
+ map.put("Instantiation", inst);\r
+ map.put("InstantiationForSku", instForSkuEnableType);\r
+\r
+ return map;\r
+ }\r
+\r
+ private String getSkuEnabledTypeDeclaration (Token token) {\r
+ return String.format("SKU_HEAD %s;\r\n", token.getPrimaryKeyString());\r
+ }\r
+\r
+ private String getSkuEnabledTypeInstantiaion (Token token, int SkuTableIdx) {\r
+\r
+ String offsetof = String.format(PcdDatabase.offsetOfSkuHeadStrTemplate, phase, token.hasDefaultValue()? "Init" : "Uninit", token.getPrimaryKeyString());\r
+ return String.format("{ %s, %d }", offsetof, SkuTableIdx);\r
+ }\r
+\r
+ private String getDataTypeDeclarationForSkuEnabled (Token token) {\r
+ String typeStr = "";\r
+\r
+ if (token.datumType == Token.DATUM_TYPE.UINT8) {\r
+ typeStr = "UINT8 %s_%s[%d];\r\n";\r
+ } else if (token.datumType == Token.DATUM_TYPE.UINT16) {\r
+ typeStr = "UINT16 %s_%s[%d];\r\n";\r
+ } else if (token.datumType == Token.DATUM_TYPE.UINT32) {\r
+ typeStr = "UINT32 %s_%s[%d];\r\n";\r
+ } else if (token.datumType == Token.DATUM_TYPE.UINT64) {\r
+ typeStr = "UINT64 %s_%s[%d];\r\n";\r
+ } else if (token.datumType == Token.DATUM_TYPE.BOOLEAN) {\r
+ typeStr = "BOOLEAN %s_%s[%d];\r\n";\r
+ } else if (token.datumType == Token.DATUM_TYPE.POINTER) {\r
+ return String.format("UINT8 %s_s[%d];\r\n", token.getPrimaryKeyString(), "SkuDataTable", token.datumSize * token.maxSkuCount);\r
+ } \r
+\r
+ return String.format(typeStr, token.getPrimaryKeyString(), "SkuDataTable", token.maxSkuCount);\r
+\r
+ }\r
+\r
+ private String getDataTypeInstantiationForSkuEnabled (Token token) {\r
+ String str = "";\r
+\r
+ if (token.datumType == Token.DATUM_TYPE.POINTER) {\r
+ return String.format("UINT8 %s_s[%d]", token.getPrimaryKeyString(), "SkuDataTable", token.datumSize * token.maxSkuCount);\r
+ } else {\r
+ str = "{ ";\r
+ for (int idx = 0; idx < token.maxSkuCount; idx++) {\r
+ str += token.skuData.get(idx).toString();\r
+ if (idx != token.maxSkuCount - 1) {\r
+ str += ", ";\r
+ }\r
+ }\r
+ str += "}";\r
+\r
+ return str;\r
+ }\r
+\r
+ }\r
+\r
+ private String getDataTypeInstantiation (Token token) {\r
+\r
+ String typeStr = "";\r
+\r
+ if (token.datumType == Token.DATUM_TYPE.POINTER) {\r
+ return String.format("%s /* %s */", token.datum.toString(), token.getPrimaryKeyString());\r
+ } else {\r
+ return String.format("%s /* %s */", token.datum.toString(), token.getPrimaryKeyString());\r
+ }\r
+ }\r
+\r
+\r
+ private String getDataTypeDeclaration (Token token) {\r
+\r
+ String typeStr = "";\r
+\r
+ if (token.datumType == Token.DATUM_TYPE.UINT8) {\r
+ typeStr = "UINT8";\r
+ } else if (token.datumType == Token.DATUM_TYPE.UINT16) {\r
+ typeStr = "UINT16";\r
+ } else if (token.datumType == Token.DATUM_TYPE.UINT32) {\r
+ typeStr = "UINT32";\r
+ } else if (token.datumType == Token.DATUM_TYPE.UINT64) {\r
+ typeStr = "UINT64";\r
+ } else if (token.datumType == Token.DATUM_TYPE.BOOLEAN) {\r
+ typeStr = "BOOLEAN";\r
+ } else if (token.datumType == Token.DATUM_TYPE.POINTER) {\r
+ return String.format("UINT8 %s[%d]", token.getPrimaryKeyString(), token.datumSize);\r
+ } else {\r
+ }\r
+\r
+ return String.format("%s %s", typeStr, token.getPrimaryKeyString());\r
+ }\r
+\r
+ private String getVpdEnableTypeDeclaration (Token token) {\r
+ return String.format("VPD_HEAD %s", token.getPrimaryKeyString());\r
+ }\r
+\r
+ private String getVpdEnableTypeInstantiation (Token token) {\r
+ return String.format("{ %d } /* %s */", token.vpdOffset,\r
+ token.getPrimaryKeyString());\r
+ }\r
+\r
+ private String getStringTypeDeclaration (Token token) {\r
+ return String.format("UINT16 %s", token.getPrimaryKeyString());\r
+ }\r
+\r
+ private String getStringTypeInstantiation (int StringTableIdx, Token token) {\r
+ return String.format ("%d /* %s */", StringTableIdx,\r
+ token.getPrimaryKeyString()); \r
+ }\r
+\r
+\r
+ private String getVariableEnableTypeDeclaration (Token token) {\r
+ return String.format("VARIABLE_HEAD %s", token.getPrimaryKeyString());\r
+ }\r
+\r
+ private String getVariableEnableInstantiation (Token token) {\r
+ return String.format("{ %d, %d, %d } /* %s */", guidTable.add(token.variableGuid, token.getPrimaryKeyString()),\r
+ stringTable.add(token.variableName, token),\r
+ token.variableOffset, \r
+ token.getPrimaryKeyString());\r
+ }\r
+\r
+ public int getTotalTokenNumber () {\r
+ return sizeTable.getTableLen();\r
+ }\r