]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Update English Module to selectively install Unicode Collation and Unicode Collation...
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 9 Oct 2007 03:11:08 +0000 (03:11 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 9 Oct 2007 03:11:08 +0000 (03:11 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4049 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/UnicodeCollationEng.c
MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/UnicodeCollationEng.h

index 845822557c55edad7ad8abf2bd527f48e898dec6..8f33c3b47d03eaac78f4dfa340689c5ab94e471b 100644 (file)
 \r
 [Packages]\r
   MdePkg/MdePkg.dec\r
+  MdeModulePkg/MdeModulePkg.dec\r
 \r
 [LibraryClasses]\r
   UefiBootServicesTableLib\r
   UefiDriverEntryPoint\r
   DebugLib\r
+  PcdLib\r
 \r
+[FeaturePcd]\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdUnicodeCollationSupport\r
+  gEfiMdeModulePkgTokenSpaceGuid.PcdUnicodeCollation2Support\r
 \r
 [Protocols]\r
   gEfiUnicodeCollationProtocolGuid              # PROTOCOL ALWAYS_PRODUCED\r
+  gEfiUnicodeCollation2ProtocolGuid             # PROTOCOL ALWAYS_PRODUCED\r
 \r
index 5b543e939ed9d56088596aef7105dcc56c830588..555ad900163148b162a790d88dbfa8176aa8eed4 100644 (file)
@@ -60,9 +60,12 @@ CHAR8 mOtherChars[] = {
   '\0'\r
 };\r
 \r
-EFI_HANDLE  mHandle = NULL;\r
+STATIC EFI_HANDLE  mHandle = NULL;\r
 \r
-EFI_UNICODE_COLLATION_PROTOCOL  UnicodeEng = {\r
+//\r
+// EFI Unicode Collation Protocol supporting ISO 639-2 language code\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_COLLATION_PROTOCOL  UnicodeEng = {\r
   EngStriColl,\r
   EngMetaiMatch,\r
   EngStrLwr,\r
@@ -73,9 +76,23 @@ EFI_UNICODE_COLLATION_PROTOCOL  UnicodeEng = {
 };\r
 \r
 //\r
+// EFI Unicode Collation2 Protocol supporting RFC 3066 language code\r
+//\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_UNICODE_COLLATION_PROTOCOL  Unicode2Eng = {\r
+  EngStriColl,\r
+  EngMetaiMatch,\r
+  EngStrLwr,\r
+  EngStrUpr,\r
+  EngFatToStr,\r
+  EngStrToFat,\r
+  "en"\r
+};\r
+\r
 //\r
+// Driver entry point.\r
 //\r
 EFI_STATUS\r
+EFIAPI\r
 InitializeUnicodeCollationEng (\r
   IN EFI_HANDLE       ImageHandle,\r
   IN EFI_SYSTEM_TABLE *SystemTable\r
@@ -99,6 +116,7 @@ Returns:
 \r
 --*/\r
 {\r
+  EFI_STATUS  Status;\r
   UINTN       Index;\r
   UINTN       Index2;\r
 \r
@@ -125,15 +143,47 @@ Returns:
     Index2 = mOtherChars[Index];\r
     mEngInfoMap[Index2] |= CHAR_FAT_VALID;\r
   }\r
-  //\r
-  // Create a handle for the device\r
-  //\r
-  return gBS->InstallProtocolInterface (\r
-                &mHandle,\r
-                &gEfiUnicodeCollationProtocolGuid,\r
-                EFI_NATIVE_INTERFACE,\r
-                &UnicodeEng\r
-                );\r
+\r
+  if (FeaturePcdGet (PcdUnicodeCollation2Support)) {\r
+    if (FeaturePcdGet (PcdUnicodeCollationSupport)) {\r
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mHandle,\r
+                      &gEfiUnicodeCollationProtocolGuid,\r
+                      &UnicodeEng,\r
+                      &gEfiUnicodeCollation2ProtocolGuid,\r
+                      &Unicode2Eng,\r
+                      NULL\r
+                      );\r
+      ASSERT_EFI_ERROR (Status);\r
+    } else {\r
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mHandle,\r
+                      &gEfiUnicodeCollation2ProtocolGuid,\r
+                      &Unicode2Eng,\r
+                      NULL\r
+                      );\r
+      ASSERT_EFI_ERROR (Status);\r
+    }\r
+  } else {\r
+    if (FeaturePcdGet (PcdUnicodeCollationSupport)) {\r
+      Status = gBS->InstallMultipleProtocolInterfaces (\r
+                      &mHandle,\r
+                      &gEfiUnicodeCollationProtocolGuid,\r
+                      &UnicodeEng,\r
+                      NULL\r
+                      );\r
+      ASSERT_EFI_ERROR (Status);\r
+    } else {\r
+      //\r
+      // This module must support to produce at least one of Unicode Collation Protocol\r
+      // and Unicode Collation 2 Protocol.\r
+      //\r
+      ASSERT (FALSE);\r
+      Status = EFI_UNSUPPORTED;\r
+    }\r
+  }\r
+\r
+  return Status;\r
 }\r
 \r
 INTN\r
index cdab4090c7329ecdb5d048820c8a0d34f1f24108..668652871aafb382fb7e5da4399d3cf576e96e7b 100644 (file)
@@ -34,6 +34,7 @@ Revision History
 #include <Library/DebugLib.h>\r
 #include <Library/UefiDriverEntryPoint.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/PcdLib.h>\r
 \r
 //\r
 // Defines\r