]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/MigrationTools/org/tianocore/migration/ModuleReader.java
Many Many Modifies
[mirror_edk2.git] / Tools / Source / MigrationTools / org / tianocore / migration / ModuleReader.java
index f4cebdec2bffd155704a38e3181447aac822373b..b8bde6fef0fc445d46636ba1dc7409749ede0057 100644 (file)
@@ -17,20 +17,24 @@ import java.util.*;
 import java.util.regex.*;\r
 import org.tianocore.*;\r
 \r
-public class ModuleReader {\r
-       ModuleReader(String path, ModuleInfo moduleinfo, Database database) {\r
-               modulepath = path;\r
-               mi = moduleinfo;\r
+public final class ModuleReader {\r
+       ModuleReader(String path, ModuleInfo moduleinfo, Database database, UI u) {\r
+               //modulepath = path;\r
+               //mi = moduleinfo;\r
                db = database;\r
+               ui = u;\r
        }\r
-       private String modulepath;\r
-       private ModuleInfo mi;\r
-       private Database db;\r
+       //private static String modulepath;\r
+       //private static ModuleInfo mi;\r
+       private static Database db;\r
+       private static UI ui;\r
        \r
-       private static Pattern ptninfequation = Pattern.compile("([^ ]*) *= *([^ ]*)");\r
+       private static final Pattern ptninfequation = Pattern.compile("([^\\s]*)\\s*=\\s*([^\\s]*)");\r
+       private static final Pattern ptnsection = Pattern.compile("\\[([^\\[\\]]*)\\]([^\\[\\]]*)\\n", Pattern.MULTILINE);\r
+       private static final Pattern ptnfilename = Pattern.compile("[^\\s]+");\r
        \r
-       public void readMsa(String name) throws Exception {\r
-               ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(new File(modulepath + File.separator + name));\r
+       public static final void readMsa(String name, ModuleInfo mi) throws Exception {\r
+               ModuleSurfaceAreaDocument msadoc = ModuleSurfaceAreaDocument.Factory.parse(new File(mi.modulepath + File.separator + name));\r
                ModuleSurfaceAreaDocument.ModuleSurfaceArea msa = msadoc.getModuleSurfaceArea();\r
                MsaHeaderDocument.MsaHeader msaheader = msa.getMsaHeader();\r
                \r
@@ -44,52 +48,56 @@ public class ModuleReader {
                Iterator<FilenameDocument.Filename> li = sourcefiles.getFilenameList().iterator();\r
                while (li.hasNext()) {\r
                        if (!mi.localmodulesources.contains(temp = li.next().toString())) {\r
-                               System.out.println("Source File Missing ! : " + temp);\r
+                               System.out.println("Source File Missing! : " + temp);\r
                        }\r
                }\r
        }\r
        \r
-       public void readInf(String name) throws Exception {\r
-               System.out.println("Reading From Inf : " + name);\r
-               BufferedReader rd = new BufferedReader(new FileReader(modulepath + File.separator + name));\r
-               String line;\r
-               String[] linecontext;\r
-               boolean inSrc = false;\r
+       public static final void readInf(String name, ModuleInfo mi) throws Exception {\r
+               System.out.println("\nParsing INF file: " + name);\r
+               String wholeline;\r
                Matcher mtrinfequation;\r
+               Matcher mtrsection;\r
+               Matcher mtrfilename;\r
 \r
-               while ((line = rd.readLine()) != null) {\r
-                       if (line.length() != 0) {\r
-                               if (inSrc) {\r
-                                       if (line.contains("[")) {\r
-                                               inSrc = false;\r
-                                       } else {\r
-                                               linecontext = line.split(" ");\r
-                                               if (linecontext[2].length() != 0) {\r
-                                                       if (!mi.localmodulesources.contains(linecontext[2])) {\r
-                                                               System.out.println("Source File Missing ! : " + linecontext[2]);\r
-                                                       }\r
-                                               }\r
+               wholeline = Common.file2string(mi.modulepath + File.separator + name);\r
+               mtrsection = ptnsection.matcher(wholeline);\r
+               while (mtrsection.find()) {\r
+                       if (mtrsection.group(1).matches("defines")) {\r
+                               mtrinfequation = ptninfequation.matcher(mtrsection.group(2));\r
+                               while (mtrinfequation.find()) {\r
+                                       if (mtrinfequation.group(1).matches("BASE_NAME")) {\r
+                                               mi.modulename = mtrinfequation.group(2);\r
                                        }\r
-                               } else {\r
-                                       if ((mtrinfequation = ptninfequation.matcher(line)).find()) {\r
-                                               if (mtrinfequation.group(1).matches("BASE_NAME")) {\r
-                                                       mi.modulename = mtrinfequation.group(2);\r
-                                               }\r
-                                               if (mtrinfequation.group(1).matches("FILE_GUID")) {\r
-                                                       mi.guidvalue = mtrinfequation.group(2);\r
-                                               }\r
-                                               if (mtrinfequation.group(1).matches("COMPONENT_TYPE")) {\r
-                                                       mi.moduletype = mtrinfequation.group(2);\r
-                                               }\r
-                                               if (mtrinfequation.group(1).matches("IMAGE_ENTRY_POINT")) {\r
-                                                       mi.entrypoint = mtrinfequation.group(2);\r
+                                       if (mtrinfequation.group(1).matches("FILE_GUID")) {\r
+                                               mi.guidvalue = mtrinfequation.group(2);\r
+                                       }\r
+                                       if (mtrinfequation.group(1).matches("COMPONENT_TYPE")) {\r
+                                               mi.moduletype = mtrinfequation.group(2);\r
+                                       }\r
+                               }\r
+                       }\r
+                       if (mtrsection.group(1).matches("nmake.common")) {\r
+                               mtrinfequation = ptninfequation.matcher(mtrsection.group(2));\r
+                               while (mtrinfequation.find()) {\r
+                                       if (mtrinfequation.group(1).matches("IMAGE_ENTRY_POINT")) {\r
+                                               mi.entrypoint = mtrinfequation.group(2);\r
+                                       }\r
+                                       if (mtrinfequation.group(1).matches("DPX_SOURCE")) {\r
+                                               if (!mi.localmodulesources.contains(mtrinfequation.group(2))) {\r
+                                                       ui.println("DPX File Missing! : " + mtrinfequation.group(2));\r
                                                }\r
                                        }\r
-                                       if (line.contains("sources")) {\r
-                                               inSrc = true;\r
+                               }\r
+                       }\r
+                       if (mtrsection.group(1).contains("sources.")) {\r
+                               mtrfilename = ptnfilename.matcher(mtrsection.group(2));\r
+                               while (mtrfilename.find()) {\r
+                                       if (!mi.localmodulesources.contains(mtrfilename.group())) {\r
+                                               ui.println("Source File Missing! : " + mtrfilename.group());\r
                                        }\r
                                }\r
                        }\r
                }\r
        }\r
-}
\ No newline at end of file
+}\r