]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/GenBuild/org/tianocore/build/global/SurfaceAreaQuery.java
Fix EDKT272.
[mirror_edk2.git] / Tools / Source / GenBuild / org / tianocore / build / global / SurfaceAreaQuery.java
index 373633521e85b084418330b6342f4a1ccc3be23a..9a1ca98d189bc175e9d6d5e3f011f6e56aa71781 100644 (file)
@@ -23,53 +23,25 @@ import java.util.Stack;
 import java.util.regex.Matcher;\r
 import java.util.regex.Pattern;\r
 \r
-import org.w3c.dom.Node;\r
-\r
+import org.tianocore.ExternsDocument.Externs.Extern;\r
 import org.apache.xmlbeans.XmlObject;\r
 import org.apache.xmlbeans.XmlString;\r
-\r
-import org.tianocore.BuildOptionsDocument;\r
-import org.tianocore.CNameType;\r
-import org.tianocore.ExternsDocument;\r
-import org.tianocore.FileNameConvention;\r
-import org.tianocore.FvImagesDocument;\r
-import org.tianocore.GuidDeclarationsDocument;\r
-import org.tianocore.GuidsDocument;\r
-import org.tianocore.LibrariesDocument;\r
-import org.tianocore.LibraryClassDeclarationsDocument;\r
-import org.tianocore.LibraryClassDocument;\r
-import org.tianocore.ModuleDefinitionsDocument;\r
-import org.tianocore.ModuleSADocument;\r
-import org.tianocore.ModuleSaBuildOptionsDocument;\r
-import org.tianocore.ModuleTypeDef;\r
-import org.tianocore.MsaFilesDocument;\r
-import org.tianocore.MsaHeaderDocument;\r
-import org.tianocore.OptionDocument;\r
-import org.tianocore.PPIsDocument;\r
-import org.tianocore.PackageDependenciesDocument;\r
-import org.tianocore.PackageHeadersDocument;\r
-import org.tianocore.PcdCodedDocument;\r
-import org.tianocore.PlatformDefinitionsDocument;\r
-import org.tianocore.PlatformHeaderDocument;\r
-import org.tianocore.PpiDeclarationsDocument;\r
-import org.tianocore.ProtocolDeclarationsDocument;\r
-import org.tianocore.Sentence;\r
-import org.tianocore.SpdHeaderDocument;\r
-import org.tianocore.UserExtensionsDocument;\r
+import org.tianocore.*;\r
+import org.tianocore.ExternsDocument.Externs;\r
 import org.tianocore.FilenameDocument.Filename;\r
+import org.tianocore.ModuleSurfaceAreaDocument.ModuleSurfaceArea;\r
 import org.tianocore.MsaHeaderDocument.MsaHeader;\r
 import org.tianocore.ProtocolsDocument.Protocols.Protocol;\r
 import org.tianocore.ProtocolsDocument.Protocols.ProtocolNotify;\r
-import org.tianocore.PcdDriverTypes;\r
-\r
-import org.tianocore.common.exception.EdkException;\r
-import org.tianocore.common.logger.EdkLog;\r
+import org.tianocore.build.autogen.CommonDefinition;\r
 import org.tianocore.build.id.FpdModuleIdentification;\r
 import org.tianocore.build.id.ModuleIdentification;\r
 import org.tianocore.build.id.PackageIdentification;\r
 import org.tianocore.build.id.PlatformIdentification;\r
 import org.tianocore.build.toolchain.ToolChainInfo;\r
-import org.tianocore.build.autogen.CommonDefinition;\r
+import org.tianocore.common.exception.EdkException;\r
+import org.tianocore.common.logger.EdkLog;\r
+import org.w3c.dom.Node;\r
 \r
 /**\r
  * SurfaceAreaQuery class is used to query Surface Area information from msa,\r
@@ -1251,6 +1223,62 @@ public class SurfaceAreaQuery {
         return getCNames("Externs", xPath);\r
     }\r
 \r
+    /**\r
+     * Retrive DriverBinding, ComponentName, DriverConfig,\r
+     * DriverDiag group array\r
+     * \r
+     * @returns DriverBinding group name list if elements are found\r
+     *        at the known xpath\r
+     * @returns null if nothing is there\r
+     */\r
+       public String[][] getExternProtocolGroup() {\r
+               String[] xPath = new String[] {"/Extern"};\r
+               Object[] returns = get("Externs",xPath);\r
+\r
+        if (returns == null) {\r
+                       return new String[0][4];\r
+               }\r
+               List<Extern> externList = new ArrayList<Extern>();\r
+               for (int i = 0; i < returns.length; i++) {\r
+                       org.tianocore.ExternsDocument.Externs.Extern extern = (org.tianocore.ExternsDocument.Externs.Extern)returns[i];\r
+                       if (extern.getDriverBinding() != null) {\r
+                               externList.add(extern);\r
+                       }\r
+               }\r
+\r
+               String[][] externGroup = new String[externList.size()][4];\r
+               for (int i = 0; i < externList.size(); i++) {\r
+            String driverBindingStr = externList.get(i).getDriverBinding();\r
+                       if ( driverBindingStr != null){\r
+                               externGroup[i][0] = driverBindingStr;\r
+                       } else {\r
+                               externGroup[i][0] = null;\r
+                       }\r
+\r
+                       String componentNameStr = externList.get(i).getComponentName();\r
+                       if (componentNameStr != null) {\r
+                               externGroup[i][1] = componentNameStr;\r
+                       } else {\r
+                               externGroup[i][1] = null;\r
+                       }\r
+\r
+                       String driverConfigStr = externList.get(i).getDriverConfig();\r
+                       if (driverConfigStr != null) {\r
+                               externGroup[i][2] = driverConfigStr;\r
+                       } else {\r
+                               externGroup[i][2] = null;\r
+                       }\r
+\r
+                       String driverDiagStr = externList.get(i).getDriverDiag();\r
+                       if (driverDiagStr != null) {\r
+                           externGroup[i][3] = driverDiagStr;\r
+                       } else {\r
+                               externGroup[i][3] = null;\r
+                       }\r
+               }\r
+               return externGroup;\r
+       }\r
+    \r
     /**\r
      * Retrive SetVirtualAddressMapCallBack names\r
      *\r