]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/Language.c
Update HiiGetBrowserData API
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / Language.c
index 5b154e98ee18c958fda8117b85799881da737f1a..ae64c7252b9e587ce596fd9c1ba965ed2a6dadd8 100644 (file)
@@ -15,6 +15,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include "Language.h"\r
 #include "FrontPage.h"\r
 \r
+EFI_GUID  mFontPackageGuid = {\r
+  0x78941450, 0x90ab, 0x4fb1, {0xb7, 0x5f, 0x58, 0x92, 0x14, 0xe2, 0x4a, 0xc}\r
+};\r
+\r
 //\r
 // Lookup table of ISO639-2 3 character language codes to ISO 639-1 2 character language codes\r
 // Each entry is 5 CHAR8 values long.  The first 3 CHAR8 values are the ISO 639-2 code.\r
@@ -162,10 +166,6 @@ zulzu\
 #define NARROW_GLYPH_NUMBER 8\r
 #define WIDE_GLYPH_NUMBER   75\r
 \r
-EFI_GUID  mFontPackageGuid = {\r
-  0x78941450, 0x90ab, 0x4fb1, {0xb7, 0x5f, 0x58, 0x92, 0x14, 0xe2, 0x4a, 0xc}\r
-};\r
-\r
 typedef struct {\r
   ///\r
   /// This 4-bytes total array length is required by HiiAddPackages()\r
@@ -448,6 +448,47 @@ ConvertRfc3066LanguageToIso639Language (
   return EFI_NOT_FOUND;\r
 }\r
 \r
+/**\r
+  Get next language from language code list (with separator ';').\r
+\r
+  If LangCode is NULL, then ASSERT.\r
+  If Lang is NULL, then ASSERT.\r
+\r
+  @param  LangCode    On input: point to first language in the list. On\r
+                                 output: point to next language in the list, or\r
+                                 NULL if no more language in the list.\r
+  @param  Lang           The first language in the list.\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+GetNextLanguage (\r
+  IN OUT CHAR8      **LangCode,\r
+  OUT CHAR8         *Lang\r
+  )\r
+{\r
+  UINTN  Index;\r
+  CHAR8  *StringPtr;\r
+\r
+  ASSERT (LangCode != NULL);\r
+  ASSERT (*LangCode != NULL);\r
+  ASSERT (Lang != NULL);\r
+\r
+  Index = 0;\r
+  StringPtr = *LangCode;\r
+  while (StringPtr[Index] != 0 && StringPtr[Index] != ';') {\r
+    Index++;\r
+  }\r
+\r
+  CopyMem (Lang, StringPtr, Index);\r
+  Lang[Index] = 0;\r
+\r
+  if (StringPtr[Index] == ';') {\r
+    Index++;\r
+  }\r
+  *LangCode = StringPtr + Index;\r
+}\r
+\r
 /**\r
   Determine the current language that will be used\r
   based on language related EFI Variables.\r