]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/toolchain/ToolChainInfo.java
Added comments and polished the code.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / toolchain / ToolChainInfo.java
index 7bf9dd6b8fe50628459787864c531f7ea221af52..5fb15f3de0168467e61ebdc9eeb1a21f2de12d95 100644 (file)
@@ -1,5 +1,7 @@
 /** @file\r
-This file is to define  ToolChainInfo class.\r
+ToolChainInfo class\r
+\r
+This file is to define ToolChainInfo class.\r
 \r
 Copyright (c) 2006, Intel Corporation\r
 All rights reserved. This program and the accompanying materials\r
@@ -18,6 +20,10 @@ import java.util.LinkedHashSet;
 import java.util.Map;\r
 import java.util.Set;\r
 \r
+/**\r
+   ToolChainInfo collects valid build targets, tool chain tag, ARCHs and commands \r
+   information for real build use.\r
+ **/\r
 public class ToolChainInfo {\r
     //\r
     // build target set\r
@@ -35,10 +41,7 @@ public class ToolChainInfo {
     // build commands set\r
     // \r
     private Set<String> commands = new LinkedHashSet<String>();\r
-    //\r
-    // build commands for specific tool chain\r
-    // \r
-    private Map<String, Set<String>> commandMap = new HashMap<String, Set<String>>();\r
+\r
     /**\r
      Add a list of targets in the form of string separated by space\r
 \r
@@ -48,134 +51,164 @@ public class ToolChainInfo {
         //\r
         // targetList some targets separated by space " "\r
         //\r
-        if (targetList == null) {\r
+        if (targetList == null || targetList.length() == 0) {\r
             targets.add("*");\r
-            return ;\r
+        } else {\r
+            addTargets(targetList.split(" "));\r
         }\r
-        addTargets(targetList.split(" "));\r
     }\r
+\r
     /**\r
      Add a list of targets in the form of string array\r
      \r
      @param targetArray target string array\r
      **/\r
     public void addTargets(String[] targetArray) {\r
-        if (targetArray == null ) {\r
-            return ;\r
-        }\r
-        for (int i = 0; i < targetArray.length; i++) {\r
-            targets.add(targetArray[i]);\r
+        if (targetArray != null ) {\r
+            for (int i = 0; i < targetArray.length; i++) {\r
+                targets.add(targetArray[i]);\r
+            }\r
         }\r
     }\r
+\r
     /**\r
      Add a list of target in the form of set\r
      \r
      @param targetSet target string set\r
      **/\r
     public void addTargets(Set<String> targetSet) {\r
-        targets.addAll(targetSet);\r
+        if (targetSet != null) {\r
+            targets.addAll(targetSet);\r
+        }\r
     }\r
+\r
     /**\r
        Add a list of tool chain tag name in the form of string separated by space\r
 \r
-       @param tagnameList\r
+       @param tagnameList   Tool chain tag name list string\r
      **/\r
     public void addTagnames(String tagnameList) {\r
         //\r
         // tagnameList some tagnames separated by space " "\r
         //\r
-        if (tagnameList == null) {\r
+        if (tagnameList == null || tagnameList.length() == 0) {\r
             tagnames.add("*");\r
-            return ;\r
+        } else {\r
+            addTagnames(tagnameList.split(" "));\r
         }\r
-        addTagnames(tagnameList.split(" "));\r
     }\r
-    \r
+\r
+    /**\r
+       Add a list of tool chain tag name in the form of string array\r
+       \r
+       @param tagnameArray  Tool chain tag names array\r
+     **/\r
     public void addTagnames(String[] tagnameArray) {\r
-        if (tagnameArray == null ) {\r
-            return ;\r
-        }\r
-        for (int i = 0; i < tagnameArray.length; i++) {\r
-            tagnames.add(tagnameArray[i]);\r
+        if (tagnameArray != null ) {\r
+            for (int i = 0; i < tagnameArray.length; i++) {\r
+                tagnames.add(tagnameArray[i]);\r
+            }\r
         }\r
     }\r
-    \r
+\r
+    /**\r
+       Add a list of tool chain tag name in the form of Set\r
+       \r
+       @param tagnameSet    Tool chain tag names set\r
+     **/\r
     public void addTagnames(Set<String> tagnameSet) {\r
-        tagnames.addAll(tagnameSet);\r
+        if (tagnameSet != null) {\r
+            tagnames.addAll(tagnameSet);\r
+        }\r
     }\r
-    \r
+\r
+    /**\r
+       Add a list of ARCH in the form of string\r
+       \r
+       @param archList  ARCH string\r
+     **/\r
     public void addArchs(String archList) {\r
         //\r
         // archList some archs separated by space " "\r
         //\r
-        if (archList == null) {\r
+        if (archList == null || archList.length() == 0) {\r
             archs.add("*");\r
-            return ;\r
+        } else {\r
+            addArchs(archList.split(" "));\r
         }\r
-        addArchs(archList.split(" "));\r
     }\r
-    \r
+\r
+    /**\r
+       Add a list of ARCH in the form of string array\r
+       \r
+       @param archArray ARCH array\r
+     **/\r
     public void addArchs(String[] archArray) {\r
-        if (archArray == null ) {\r
-            return ;\r
-        }\r
-        for (int i = 0; i < archArray.length; i++) {\r
-            archs.add(archArray[i]);\r
+        if (archArray != null ) {\r
+            for (int i = 0; i < archArray.length; i++) {\r
+                archs.add(archArray[i]);\r
+            }\r
         }\r
     }\r
-    \r
+\r
+    /**\r
+       Add a list of ARCH in the form of set\r
+       \r
+       @param archSet   ARCH set\r
+     **/\r
     public void addArchs(Set<String> archSet) {\r
-        archs.addAll(archSet);\r
+        if (archSet != null) {\r
+            archs.addAll(archSet);\r
+        }\r
     }\r
-    \r
-    public void addCommands(String toolChain, String commandList) {\r
+\r
+    /**\r
+       Add a list of command in the form of string\r
+       \r
+       @param commandList   Command list string\r
+     **/\r
+    public void addCommands(String commandList) {\r
         //\r
         // archList some archs separated by space " "\r
         //\r
         if (commandList == null || commandList.length() == 0) {\r
-            return ;\r
+            commands.add("*");\r
+        } else {\r
+            addCommands(commandList.split(" "));\r
         }\r
-        addCommands(commandList.split(" "));\r
     }\r
-    \r
+\r
+    /**\r
+       Add a list of ARCH in the form of array\r
+       \r
+       @param commandArray  Commands array\r
+     **/\r
     public void addCommands(String[] commandArray) {\r
-        if (commandArray == null ) {\r
-            return ;\r
-        }\r
-        for (int i = 0; i < commandArray.length; i++) {\r
-            commands.add(commandArray[i]);\r
+        if (commandArray != null ) {\r
+            for (int i = 0; i < commandArray.length; i++) {\r
+                commands.add(commandArray[i]);\r
+            }\r
         }\r
     }\r
-    \r
-    public void addCommands(String toolChain, String[] commandArray) {\r
-        if (commandArray == null) {\r
-            return ;\r
-        }\r
 \r
-        Set<String> toolChainCommandSet = commandMap.get(toolChain);\r
-        if (toolChainCommandSet == null) {\r
-            toolChainCommandSet = new LinkedHashSet<String>();\r
-            commandMap.put(toolChain, toolChainCommandSet);\r
-        }\r
-        for (int i = 0; i < commandArray.length; i++) {\r
-            commands.add(commandArray[i]);\r
-            toolChainCommandSet.add(commandArray[i]);\r
-        }\r
-    }\r
-    \r
-    public void addCommands(String toolChain, Set<String> commandSet) {\r
-        if (commandSet == null) {\r
-            return;\r
-        }\r
-        Set<String> toolChainCommandSet = commandMap.get(toolChain);\r
-        if (toolChainCommandSet == null) {\r
-            toolChainCommandSet = new LinkedHashSet<String>();\r
-            commandMap.put(toolChain, toolChainCommandSet);\r
+    /**\r
+       Add a list of ARCH in the form of set\r
+       \r
+       @param commandSet    Commands set\r
+     **/\r
+    public void addCommands(Set<String> commandSet) {\r
+        if (commandSet != null) {\r
+            commands.addAll(commandSet);\r
         }\r
-        commands.addAll(commandSet);\r
-        toolChainCommandSet.addAll(commandSet);\r
     }\r
-    \r
+\r
+    /**\r
+       Make a union operation on this ToolChainInfo and the given one.\r
+\r
+       @param info  Another ToolChainInfo object to merge with\r
+       \r
+       @return ToolChainInfo    Merged ToolChainInfo object\r
+     **/\r
     public ToolChainInfo union(ToolChainInfo info) {\r
         ToolChainInfo result = new ToolChainInfo();\r
         result.addTargets(union(this.targets, info.targets));\r
@@ -183,7 +216,14 @@ public class ToolChainInfo {
         result.addArchs(union(this.archs, info.archs));\r
         return result;\r
     }\r
-    \r
+\r
+    /**\r
+       Make a intersection operation on this ToolChainInfo and the given one\r
+\r
+       @param info  Another ToolChainInfo object to intersect with\r
+       \r
+       @return ToolChainInfo    Intersected ToolChainInfo object\r
+     **/\r
     public ToolChainInfo intersection(ToolChainInfo info) {\r
         ToolChainInfo result = new ToolChainInfo();\r
         result.addTargets(intersection(this.targets, info.targets));\r
@@ -191,7 +231,15 @@ public class ToolChainInfo {
         result.addArchs(intersection(this.archs, info.archs));\r
         return result;\r
     }\r
-    \r
+\r
+    /**\r
+       Make a union operation on two Sets\r
+\r
+       @param set1  One Set\r
+       @param set2  Another Set\r
+       \r
+       @return Set<String>  Merged Set object\r
+     **/\r
     private Set<String> union(Set<String> set1, Set<String> set2) {\r
         Set<String> result = new LinkedHashSet<String>();\r
         result.addAll(set1);\r
@@ -199,51 +247,96 @@ public class ToolChainInfo {
         result.remove("*");\r
         return result;\r
     }\r
-    \r
+\r
+    /**\r
+       Make a intersection operation on two Sets with the consideration of wildcard.\r
+\r
+       @param set1  One Set\r
+       @param set2  Another Set\r
+       \r
+       @return Set<String>  The intersected Set object\r
+     **/\r
     private Set<String> intersection(Set<String> set1, Set<String> set2) {\r
         Set<String> result = new LinkedHashSet<String>();\r
         boolean set1HasWildcard = set1.contains("*");\r
         boolean set2HasWildcard = set2.contains("*");\r
 \r
         if (set1HasWildcard && set2HasWildcard) {\r
+            //\r
+            // Both Sets have wildcard, the result will have all elements in them\r
+            // \r
             result.addAll(set1);\r
             result.addAll(set2);\r
         } else if (set1HasWildcard) {\r
+            //\r
+            // Only set1 has wildcard, then result will have only set2 elements.\r
+            // \r
             result.addAll(set2);\r
         } else if (set2HasWildcard) {\r
+            //\r
+            // Only set2 has wildcard, then result will have only set1 elements.\r
+            // \r
             result.addAll(set1);\r
         } else {\r
+            //\r
+            // No wildcard in both Sets, the result will have the elements in both Sets.\r
+            // \r
             result.addAll(set1);\r
             result.retainAll(set2);\r
         }\r
 \r
         return result;\r
     }\r
-    \r
+\r
+    /**\r
+       Get target array.\r
+\r
+       @return String[]\r
+     **/\r
     public String[] getTargets() {\r
         return (String[])targets.toArray(new String[targets.size()]);\r
     }\r
-    \r
+\r
+    /**\r
+       Get tool chain tag name array.\r
+\r
+       @return String[]\r
+     **/\r
     public String[] getTagnames() {\r
         return (String[])tagnames.toArray(new String[tagnames.size()]);\r
     }\r
-    \r
+\r
+    /**\r
+       Get ARCH array.\r
+\r
+       @return String[]\r
+     **/\r
     public String[] getArchs() {\r
         return (String[])archs.toArray(new String[archs.size()]);\r
     }\r
 \r
+    /**\r
+       Get command name array.\r
+\r
+       @return String[]\r
+     **/\r
     public String[] getCommands() {\r
         return (String[])commands.toArray(new String[commands.size()]);\r
     }\r
 \r
-    public Set<String> getCommands(String toolChain) {\r
-        return commandMap.get(toolChain);\r
-    }\r
-    \r
+    /**\r
+       Override the Object's toString().\r
+\r
+       @return String\r
+     **/\r
     public String toString() {\r
         return targets + "\n" + tagnames + "\n" + archs + "\n" + commands;\r
     }\r
-    \r
+\r
+    /**\r
+       Remove the wildcard element in the tool chain information because they\r
+       are useless when retrieved.\r
+     **/\r
     public void normalize() {\r
         targets.remove("*");\r
         tagnames.remove("*");\r