]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Java/Source/GenBuild/org/tianocore/build/autogen/AutogenLibOrder.java
Corrected some comments for the changed code.
[mirror_edk2.git] / Tools / Java / Source / GenBuild / org / tianocore / build / autogen / AutogenLibOrder.java
index 6d6794d474e0931e460669c37ee194c50d43724c..11469a6c49c13194e13e57c64d932f054a5457dd 100644 (file)
@@ -76,12 +76,11 @@ public class AutogenLibOrder {
         String[]       libClassDeclList = null;\r
         String[]       libClassConsmList = null;\r
 \r
-        libInstanceList = new ModuleIdentification[libraryList.length];\r
+        libInstanceList = libraryList;\r
         for (int i = 0; i < libraryList.length; i++) {\r
             libInstance = libraryList[i];\r
-            libInstanceList[i] = libInstance;\r
             //\r
-            // Add libraryInstance in to libInstanceList.\r
+            // Fetch the constructor & destructor.\r
             // \r
             Map<String, XmlObject> libDoc = GlobalData.getDoc(libInstance, arch);\r
             SurfaceAreaQuery saq = new SurfaceAreaQuery(libDoc);\r
@@ -89,17 +88,10 @@ public class AutogenLibOrder {
             libInstance.setDestructor(saq.getLibDestructorName());\r
             \r
             //\r
-            // Add library instance and consumed library class list to\r
-            // libInstanceConsumes.\r
+            // Create library class consume database.\r
             //\r
             libClassConsmList = saq.getLibraryClasses(CommonDefinition.ALWAYSCONSUMED, arch);\r
             if (libClassConsmList != null) {\r
-                /*\r
-                String[] classStr = new String[libClassConsmList.length];\r
-                for (int k = 0; k < libClassConsmList.length; k++) {\r
-                    classStr[k] = libClassConsmList[k];\r
-                }\r
-                */\r
                 if (this.libInstanceConsumes.containsKey(libInstance)) {\r
                     throw new AutoGenException(\r
                             libraryList[i].getName()\r
@@ -110,7 +102,7 @@ public class AutogenLibOrder {
             }\r
 \r
             //\r
-            // Add library class and library instance map.\r
+            // Create library class implementer database\r
             //\r
             libClassDeclList = saq.getLibraryClasses(CommonDefinition.ALWAYSPRODUCED, arch);\r
             if (libClassDeclList != null) {\r
@@ -129,6 +121,9 @@ public class AutogenLibOrder {
             }\r
         }\r
 \r
+        //\r
+        // Create a consumed-by database \r
+        // \r
         for (Iterator it = libClassProducer.keySet().iterator(); it.hasNext();) {\r
             String className = (String)it.next();\r
             libInstance = libClassProducer.get(className);\r
@@ -151,7 +146,7 @@ public class AutogenLibOrder {
       orderLibInstance\r
 \r
       This function reorder the library instance according the library class \r
-      dependency.\r
+      dependency, using DAG anaylysis algothim\r
 \r
       @return     List which content the ordered library instance.\r
     **/\r
@@ -159,6 +154,9 @@ public class AutogenLibOrder {
         LinkedList<ModuleIdentification> orderList = new LinkedList<ModuleIdentification>();\r
         LinkedList<ModuleIdentification> noConsumerList = new LinkedList<ModuleIdentification>();\r
 \r
+        //\r
+        // First, add the library instance without consumers to the Q\r
+        // \r
         for (int i = 0; i < libInstanceList.length; ++i) {\r
             if (libInstanceConsumedBy.get(libInstanceList[i]).size() == 0) {\r
                 noConsumerList.add(libInstanceList[i]);\r
@@ -221,6 +219,9 @@ public class AutogenLibOrder {
             }\r
         }\r
 \r
+        //\r
+        // Append the remaining library instance to the end of sorted list\r
+        // \r
         for (int i = 0; i < libInstanceList.length; ++i) {\r
             if (!orderList.contains(libInstanceList[i])) {\r
                 orderList.add(libInstanceList[i]);\r