**/\r
package org.tianocore.migration;\r
\r
-import java.io.*;\r
-import java.util.*;\r
+import java.io.File;\r
+import java.util.HashSet;\r
+import java.util.Set;\r
\r
import org.tianocore.UsageTypes;\r
import org.tianocore.SupportedArchitectures.Enum;\r
\r
/*\r
- Class ModuleInfo is built for scanning the source files, it contains all the needed\r
-information and all the temporary data.\r
-*/\r
+ * Class ModuleInfo is built for scanning the source files, it contains all the\r
+ * needed information and all the temporary data.\r
+ */\r
public final class ModuleInfo {\r
- ModuleInfo(String modulepath) throws Exception {\r
- this.modulepath = modulepath;\r
- this.temppath = MigrationTool.getTempDir(this.modulepath);\r
- }\r
-\r
- public final String modulepath;\r
- public final String temppath;\r
- \r
- private MsaOwner msaowner = MsaOwner.initNewMsaOwner();\r
- \r
- public String modulename = null;\r
- public String guidvalue = null;\r
- public String moduletype = null;\r
- public String entrypoint = null;\r
- public String license = null;\r
- \r
- public final Set<String> localmodulesources = new HashSet<String>(); //contains both .c and .h\r
- public final Set<String> preprocessedccodes = new HashSet<String>();\r
- public final Set<String> msaorinf = new HashSet<String>(); //only a little, hash may be too big for this\r
- public final Set<String> infincludes = new HashSet<String>();\r
- public final Set<String> infsources = new HashSet<String>();\r
- \r
- public final Set<String> hashfuncc = new HashSet<String>();\r
- public final Set<String> hashfuncd = new HashSet<String>();\r
- public final Set<String> hashnonlocalfunc = new HashSet<String>();\r
- public final Set<String> hashnonlocalmacro = new HashSet<String>();\r
- public final Set<String> hashEFIcall = new HashSet<String>();\r
- public final Set<String> hashr8only = new HashSet<String>();\r
- public final Set<String> hashmacro = new HashSet<String>();\r
- \r
- public final Set<String> hashrequiredr9libs = new HashSet<String>(); // hashrequiredr9libs is now all added in SourceFileReplacer \r
- public final Set<String> guids = new HashSet<String>();\r
- public final Set<String> protocols = new HashSet<String>();\r
- public final Set<String> ppis = new HashSet<String>();\r
-\r
- //-----------------------------------------------------------------------------------//\r
-\r
- //addModuleType\r
- //addGuidValue\r
- //addModuleName\r
- \r
- public final boolean addSourceFile (String filename, Enum en) {\r
- localmodulesources.add(filename);\r
- return msaowner.addSourceFile(filename, en);\r
- }\r
- \r
- public final boolean addProtocol (String proname, UsageTypes.Enum usage) {\r
- protocols.add(proname);\r
- return msaowner.addProtocol(proname, usage);\r
- }\r
- \r
- public final boolean addPpi (String ppiname, UsageTypes.Enum usage) {\r
- ppis.add(ppiname);\r
- return msaowner.addPpi(ppiname, usage);\r
- }\r
- \r
- public final boolean addGuid (String guidname, UsageTypes.Enum usage) {\r
- guids.add(guidname);\r
- return msaowner.addGuid(guidname, usage);\r
- }\r
- \r
- public final boolean addLibraryClass(String name, UsageTypes.Enum usage) {\r
- //\r
- // This section is only for adding library classes, this functionality should be inside MsaOwner!!!\r
- //\r
- //if (!hashrequiredr9libs.contains(name)) {\r
- msaowner.addLibraryClass(name, usage);\r
- //}\r
- //\r
- hashrequiredr9libs.add(name);\r
- return true;\r
- }\r
- \r
- //-----------------------------------------------------------------------------------//\r
- \r
- public final String getModuleType() {\r
- if (moduletype.contains("PEI")) {\r
- return "PEIM";\r
- } else {\r
- return "DXE_DRIVER";\r
- }\r
- }\r
- \r
- public final void enroll(String filepath) throws Exception {\r
- String temp = null;\r
- if (filepath.contains(".inf") || filepath.contains(".msa")) {\r
- temp = filepath.replace(modulepath + File.separator, "");\r
- if (!temp.contains(File.separator)) { // .inf in subdirectory is not regarded\r
- msaorinf.add(temp);\r
- }\r
- } else if (filepath.contains(".c") || filepath.contains(".C") || filepath.contains(".h") || \r
- filepath.contains(".H") || filepath.contains(".dxs") || filepath.contains(".uni") ||\r
- filepath.contains(".s") || filepath.contains(".S") || filepath.contains(".i") ||\r
- filepath.contains(".asm")) {\r
- addSourceFile(filepath.replace(modulepath + File.separator, ""), null);\r
- } \r
- }\r
-\r
- public static final boolean isModule(String path) {\r
- String[] list = new File(path).list();\r
- for (int i = 0 ; i < list.length ; i++) {\r
- if (!new File(list[i]).isDirectory()) {\r
- if (list[i].contains(".inf") || list[i].contains(".msa")) {\r
- return true;\r
- }\r
- }\r
- }\r
- return false;\r
- }\r
- \r
- public final MsaOwner getMsaOwner() {\r
- return msaowner;\r
- }\r
+ ModuleInfo(String modulepath) throws Exception {\r
+ this.modulepath = modulepath;\r
+ this.temppath = MigrationTool.getTempDir(this.modulepath);\r
+ }\r
+\r
+ public final String modulepath;\r
+\r
+ public final String temppath;\r
+\r
+ private MsaOwner msaowner = MsaOwner.initNewMsaOwner();\r
+\r
+ public String modulename = null;\r
+\r
+ public String guidvalue = null;\r
+\r
+ public String moduletype = null;\r
+\r
+ public String entrypoint = null;\r
+\r
+ public String license = null;\r
+\r
+ public final Set<String> localmodulesources = new HashSet<String>(); // contains\r
+ // both\r
+ // .c\r
+ // and\r
+ // .h\r
+\r
+ public final Set<String> preprocessedccodes = new HashSet<String>();\r
+\r
+ public final Set<String> msaorinf = new HashSet<String>(); // only a\r
+ // little, hash\r
+ // may be too\r
+ // big for this\r
+\r
+ public final Set<String> infincludes = new HashSet<String>();\r
+\r
+ public final Set<String> infsources = new HashSet<String>();\r
+\r
+ public final Set<String> hashfuncc = new HashSet<String>();\r
+\r
+ public final Set<String> hashfuncd = new HashSet<String>();\r
+\r
+ public final Set<String> hashnonlocalfunc = new HashSet<String>();\r
+\r
+ public final Set<String> hashnonlocalmacro = new HashSet<String>();\r
+\r
+ public final Set<String> hashEFIcall = new HashSet<String>();\r
+\r
+ public final Set<String> hashr8only = new HashSet<String>();\r
+\r
+ public final Set<String> hashmacro = new HashSet<String>();\r
+\r
+ public final Set<String> hashrequiredr9libs = new HashSet<String>(); // hashrequiredr9libs\r
+ // is\r
+ // now\r
+ // all\r
+ // added\r
+ // in\r
+ // SourceFileReplacer\r
+\r
+ public final Set<String> guids = new HashSet<String>();\r
+\r
+ public final Set<String> protocols = new HashSet<String>();\r
+\r
+ public final Set<String> ppis = new HashSet<String>();\r
+\r
+ // -----------------------------------------------------------------------------------//\r
+\r
+ // addModuleType\r
+ // addGuidValue\r
+ // addModuleName\r
+\r
+ public final boolean addSourceFile(String filename, Enum en) {\r
+ localmodulesources.add(filename);\r
+ return msaowner.addSourceFile(filename, en);\r
+ }\r
+\r
+ public final boolean addProtocol(String proname, UsageTypes.Enum usage) {\r
+ protocols.add(proname);\r
+ return msaowner.addProtocol(proname, usage);\r
+ }\r
+\r
+ public final boolean addPpi(String ppiname, UsageTypes.Enum usage) {\r
+ ppis.add(ppiname);\r
+ return msaowner.addPpi(ppiname, usage);\r
+ }\r
+\r
+ public final boolean addGuid(String guidname, UsageTypes.Enum usage) {\r
+ guids.add(guidname);\r
+ return msaowner.addGuid(guidname, usage);\r
+ }\r
+\r
+ public final boolean addLibraryClass(String name, UsageTypes.Enum usage) {\r
+ //\r
+ // This section is only for adding library classes, this functionality\r
+ // should be inside MsaOwner!!!\r
+ //\r
+ // if (!hashrequiredr9libs.contains(name)) {\r
+ msaowner.addLibraryClass(name, usage);\r
+ // }\r
+ //\r
+ hashrequiredr9libs.add(name);\r
+ return true;\r
+ }\r
+\r
+ // -----------------------------------------------------------------------------------//\r
+\r
+ public final String getModuleType() {\r
+ if (moduletype.contains("PEI")) {\r
+ return "PEIM";\r
+ } else {\r
+ return "DXE_DRIVER";\r
+ }\r
+ }\r
+\r
+ public final void enroll(String filepath) throws Exception {\r
+ String temp = null;\r
+ if (filepath.contains(".inf") || filepath.contains(".msa")) {\r
+ temp = filepath.replace(modulepath + File.separator, "");\r
+ if (!temp.contains(File.separator)) { // .inf in subdirectory is\r
+ // not regarded\r
+ msaorinf.add(temp);\r
+ }\r
+ } else if (filepath.contains(".c") || filepath.contains(".C")\r
+ || filepath.contains(".h") || filepath.contains(".H")\r
+ || filepath.contains(".dxs") || filepath.contains(".uni")\r
+ || filepath.contains(".s") || filepath.contains(".S")\r
+ || filepath.contains(".i") || filepath.contains(".asm")) {\r
+ addSourceFile(filepath.replace(modulepath + File.separator, ""),\r
+ null);\r
+ }\r
+ }\r
+\r
+ public static final boolean isModule(String path) {\r
+ String[] list = new File(path).list();\r
+ for (int i = 0; i < list.length; i++) {\r
+ if (!new File(list[i]).isDirectory()) {\r
+ if (list[i].contains(".inf") || list[i].contains(".msa")) {\r
+ return true;\r
+ }\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+\r
+ public final MsaOwner getMsaOwner() {\r
+ return msaowner;\r
+ }\r
}
\ No newline at end of file