+\r
+ public final boolean addLibraryClass (String name, UsageTypes.Enum usage) {\r
+ Iterator<LibraryClassDocument.LibraryClass> classit = libclassdefs.getLibraryClassList().iterator();\r
+ while (classit.hasNext()) {\r
+ if (classit.next().getKeyword() == name) {\r
+ MigrationTool.ui.println ("Warning: Duplicate LibraryClass");\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ LibraryClassDocument.LibraryClass classname;\r
+ List<UsageTypes.Enum> arch = new ArrayList<UsageTypes.Enum>();\r
+ classname = libclassdefs.addNewLibraryClass();\r
+ classname.setKeyword(name);\r
+ arch.add(usage);\r
+ classname.setSupArchList(arch);\r
+ return true;\r
+ }\r
+ \r
+ public final boolean addGuid (String guidname, UsageTypes.Enum usage) {\r
+ if (guids == null) {\r
+ guids = msa.addNewGuids();\r
+ }\r
+ \r
+ Iterator<GuidsDocument.Guids.GuidCNames> guidit = guids.getGuidCNamesList().iterator();\r
+ while (guidit.hasNext()) {\r
+ if (guidit.next().getGuidCName() == guidname) {\r
+ MigrationTool.ui.println ("Warning: Duplicate Guid");\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ GuidsDocument.Guids.GuidCNames guid;\r
+ List<UsageTypes.Enum> arch = new ArrayList<UsageTypes.Enum>();\r
+ guid = guids.addNewGuidCNames();\r
+ guid.setGuidCName(guidname);\r
+ arch.add(usage);\r
+ guid.setSupArchList(arch);\r
+ return true;\r
+ }\r
+ \r
+ \r
+ public final boolean addPpi (String ppiname, UsageTypes.Enum usage) {\r
+ if (ppis == null) {\r
+ ppis = msa.addNewPPIs();\r
+ }\r
+ \r
+ Iterator<PPIsDocument.PPIs.Ppi> ppiit = ppis.getPpiList().iterator();\r
+ while (ppiit.hasNext()) {\r
+ if (ppiit.next().getPpiCName() == ppiname) {\r
+ MigrationTool.ui.println ("Warning: Duplicate Ppi");\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ PPIsDocument.PPIs.Ppi ppi;\r
+ List<UsageTypes.Enum> arch = new ArrayList<UsageTypes.Enum>();\r
+ ppi = ppis.addNewPpi();\r
+ ppi.setPpiCName(ppiname);\r
+ arch.add(usage);\r
+ ppi.setSupArchList(arch);\r
+ return true;\r
+ }\r
+ \r
+ /*\r
+ private final boolean installProtocols () {\r
+ if (mapprotocols.isEmpty()) {\r
+ return false;\r
+ }\r
+ Set<String> setprotocols = mapprotocols.keySet();\r
+ ProtocolsDocument.Protocols.Protocol protocol;\r
+ Iterator<String> it = setprotocols.iterator();\r
+ while (it.hasNext()) {\r
+ protocol = protocols.addNewProtocol();\r
+ protocol.setProtocolCName(it.next());\r
+ protocol.setUsage(mapprotocols.get(protocol.getProtocolCName()));\r
+ }\r
+ return true;\r
+ }\r
+ \r
+ public final boolean addProtocols (String protocol, UsageTypes.Enum usage) {\r
+ if (mapprotocols.containsKey(protocol)) {\r
+ return false;\r
+ } else {\r
+ mapprotocols.put(protocol, usage);\r
+ return true;\r
+ }\r
+ }\r
+ */\r
+ public final boolean addProtocol (String proname, UsageTypes.Enum usage) {\r
+ if (protocols == null) {\r
+ protocols = msa.addNewProtocols();\r
+ }\r
+ \r
+ Iterator<ProtocolsDocument.Protocols.Protocol> proit = protocols.getProtocolList().iterator();\r
+ while (proit.hasNext()) {\r
+ if (proit.next().getProtocolCName() == proname) {\r
+ MigrationTool.ui.println ("Warning: Duplicate Protocol");\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ ProtocolsDocument.Protocols.Protocol protocol;\r
+ List<UsageTypes.Enum> arch = new ArrayList<UsageTypes.Enum>();\r
+ protocol = protocols.addNewProtocol();\r
+ protocol.setProtocolCName(proname);\r
+ arch.add(usage);\r
+ protocol.setSupArchList(arch);\r
+ return true;\r
+ }\r
+ \r
+ /*\r
+ private final boolean installHashFilename () {\r
+ if (mapfilenames.isEmpty()) {\r
+ return false;\r
+ }\r
+ Set<String> setfilename = mapfilenames.keySet();\r
+ FilenameDocument.Filename filename;\r
+ List<Enum> arch = new ArrayList<Enum>();\r
+ Iterator<String> it = setfilename.iterator();\r
+ while (it.hasNext()) {\r
+ filename = sourcefiles.addNewFilename();\r
+ filename.setStringValue(it.next());\r
+ arch.add(mapfilenames.get(filename.getStringValue()));\r
+ filename.setSupArchList(arch);\r
+ }\r
+ return true;\r
+ }\r
+ \r
+ public final boolean addSourceFile (String filename, Enum arch) { // dummy & null how to imply?\r
+ if (mapfilenames.containsKey(filename)) {\r
+ return false;\r
+ } else {\r
+ mapfilenames.put(filename, arch);\r
+ return true;\r
+ }\r
+ }\r
+ */\r
+ public final boolean addSourceFile (String name, Enum en) {\r
+ Iterator<FilenameDocument.Filename> fileit = sourcefiles.getFilenameList().iterator();\r
+ while (fileit.hasNext()) {\r
+ if (fileit.next().getStringValue() == name) {\r
+ MigrationTool.ui.println ("Warning: Duplicate SourceFileName");\r
+ return false;\r
+ }\r
+ }\r
+ \r
+ FilenameDocument.Filename filename;\r
+ List<Enum> arch = new ArrayList<Enum>();\r
+ filename = sourcefiles.addNewFilename();\r
+ filename.setStringValue(name);\r
+ arch.add(en);\r
+ filename.setSupArchList(arch);\r
+ return true;\r
+ }\r
+ \r
+ // entry point todo\r
+ \r
+ public final boolean setupExternSpecification () {\r
+ addExternSpecification("EFI_SPECIFICATION_VERSION 0x00020000");\r
+ addExternSpecification("EDK_RELEASE_VERSION 0x00020000");\r
+ return true;\r
+ }\r
+ \r
+ public final boolean addExternSpecification (String specification) {\r
+ if (externs.getSpecificationList().contains(specification)) {\r
+ return false;\r
+ } else {\r
+ externs.addSpecification(specification);\r
+ return true;\r
+ }\r
+ }\r
+ \r
+ public final boolean setupPackageDependencies() {\r
+ addPackage("5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec");\r
+ addPackage("68169ab0-d41b-4009-9060-292c253ac43d");\r
+ return true;\r
+ }\r
+ \r
+ public final boolean addPackage (String guid) {\r
+ if (packagedependencies.getPackageList().contains(guid)) {\r
+ return false;\r
+ } else {\r
+ packagedependencies.addNewPackage().setPackageGuid(guid);\r
+ return true;\r
+ }\r
+ }\r
+ \r
+ public final boolean setupModuleDefinitions () { //????????? give this job to moduleinfo\r
+ moduledefinitions.setBinaryModule(false);\r
+ moduledefinitions.setOutputFileBasename(msaheader.getModuleName());\r
+ return true;\r
+ }\r
+ public final boolean addSupportedArchitectures (Enum arch) {\r
+ if (listarch.contains(arch)) {\r
+ return false;\r
+ } else {\r
+ listarch.add(arch);\r
+ return true;\r
+ }\r
+ }\r
+ \r