public class FpdFileContents {\r
\r
static final String xmlNs = "http://www.TianoCore.org/2006/Edk2.0";\r
+ static final String regNewLineAndSpaces = "((\n)|(\r\n)|(\r)|(\u0085)|(\u2028)|(\u2029))(\\s)*";\r
\r
private PlatformSurfaceAreaDocument fpdd = null;\r
\r
\r
private HashMap<String, String> defaultPcdValue = new HashMap<String, String>();\r
\r
+ private String itemType (String pcdInfo) {\r
+ \r
+ return pcdInfo.substring(pcdInfo.lastIndexOf(" ") + 1);\r
+ }\r
+ \r
/**\r
* look through all pcd data in all ModuleSA, create pcd -> ModuleSA mappings.\r
*/\r
}\r
\r
public ModuleSADocument.ModuleSA getModuleSA(String key) {\r
- String[] s = key.split(" ");\r
+ \r
if (getfpdFrameworkModules().getModuleSAList() == null || getfpdFrameworkModules().getModuleSAList().size() == 0) {\r
removeElement(getfpdFrameworkModules());\r
fpdFrameworkModules = null;\r
return null;\r
}\r
+ String[] s = key.split(" ");\r
+ String archsInKey = "";\r
+ if (s.length > 4) {\r
+ for (int i = 4; i < s.length; ++i) {\r
+ archsInKey += s[i];\r
+ archsInKey += " ";\r
+ }\r
+ archsInKey = archsInKey.trim();\r
+ }\r
+ \r
ListIterator li = getfpdFrameworkModules().getModuleSAList().listIterator();\r
while(li.hasNext()) {\r
ModuleSADocument.ModuleSA moduleSa = (ModuleSADocument.ModuleSA)li.next();\r
continue;\r
}\r
}\r
- //ToDo add arch check for s[4]\r
+ //ToDo add arch check .\r
if (moduleSa.getSupArchList() != null) {\r
- if (!listToString(moduleSa.getSupArchList()).equals(s[4])) {\r
- continue;\r
+ if (listToString(moduleSa.getSupArchList()).equals(archsInKey)) {\r
+ return moduleSa;\r
+ }\r
+ }\r
+ else {\r
+ if (archsInKey.length() == 0) {\r
+ return moduleSa;\r
}\r
}\r
- return moduleSa;\r
}\r
}\r
return null;\r
}\r
\r
cursor.push();\r
- cursor.toPrevToken();\r
+ while (cursor.hasPrevToken()) {\r
+ cursor.toPrevToken();\r
+ if (!cursor.isText()) {\r
+ break;\r
+ }\r
+ String s = cursor.getTextValue();\r
+ if (s.matches(regNewLineAndSpaces)) {\r
+ continue;\r
+ }\r
+ }\r
+\r
if (cursor.isComment()) {\r
cursor.removeXml();\r
}\r
+ \r
cursor.pop();\r
cursor.removeXml();\r
if (getFrameworkModulesCount() == 0) {\r
do {\r
PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData pcdData = (PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData)cursor.getObject();\r
if (pcdData.getCName().equals(cName) && pcdData.getTokenSpaceGuidCName().equals(tsGuid)) {\r
+ //\r
+ // change item type while not updating dynPcdData????\r
+ //\r
pcdData.setItemType(PcdItemTypes.Enum.forString(itemType));\r
if(pcdData.getDatumType().equals("VOID*")) {\r
pcdData.setMaxDatumSize(new Integer(maxSize));\r
//\r
sa[0] = spdPcd.getHelpText() + msaPcd.getHelpText();\r
sa[1] = msaPcd.getPcdItemType()+"";\r
+ sa[2] = msa.getModuleDefinitions().getBinaryModule()+"";\r
return true;\r
}\r
\r
ModuleSADocument.ModuleSA moduleSA = getModuleSA(moduleKey);\r
if (moduleSA.getPcdBuildDefinition() != null) {\r
XmlCursor cursor = moduleSA.getPcdBuildDefinition().newCursor();\r
+ cursor.push();\r
if (cursor.toFirstChild()) {\r
do {\r
PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData pcdData = (PcdBuildDefinitionDocument.PcdBuildDefinition.PcdData) cursor\r
}\r
} while (cursor.toNextSibling());\r
}\r
+ \r
+ cursor.pop();\r
+ if (moduleSA.getPcdBuildDefinition().getPcdDataList().size() == 0) {\r
+ cursor.removeXml();\r
+ }\r
cursor.dispose();\r
}\r
}\r
cursor.toNextSibling();\r
}\r
cursor.push();\r
- cursor.toPrevToken();\r
+ while (cursor.hasPrevToken()) {\r
+ cursor.toPrevToken();\r
+ if (!cursor.isText()) {\r
+ break;\r
+ }\r
+ String s = cursor.getTextValue();\r
+ if (s.matches(regNewLineAndSpaces)) {\r
+ continue;\r
+ }\r
+ }\r
+ \r
if (cursor.isComment()) {\r
cursor.removeXml();\r
}\r
// Using existing Pcd type, if this pcd already exists in other ModuleSA\r
//\r
if (pcdConsumer.size() > 0) {\r
- String[] valPart = pcdConsumer.get(0).split(" ");\r
- itemType = valPart[5];\r
+ \r
+ itemType = itemType (pcdConsumer.get(0));\r
}\r
String listValue = moduleSa.getModuleGuid() + " " + moduleSa.getModuleVersion() \r
+ " " + moduleSa.getPackageGuid() + " " + moduleSa.getPackageVersion() + " " + listToString(moduleSa.getSupArchList())\r