From 0f2685219d6acfbb308cd9c795e2fbb2f6b2371a Mon Sep 17 00:00:00 2001 From: rsun3 Date: Fri, 17 Apr 2009 02:38:11 +0000 Subject: Retire HiiLibGetNextLanguage() API from HII Library class. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8109 6f19259b-4bc3-4df7-8a09-765794883524 --- .../FrameworkHiiOnUefiHiiThunk/HiiDatabase.c | 4 +-- .../FrameworkHiiOnUefiHiiThunk/HiiDatabase.h | 20 +++++++++++ .../FrameworkHiiOnUefiHiiThunk/Strings.c | 41 ++++++++++++++++++++++ 3 files changed, 63 insertions(+), 2 deletions(-) (limited to 'EdkCompatibilityPkg') diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.c b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.c index 5a3df71aab..74ddad0130 100644 --- a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.c +++ b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.c @@ -334,7 +334,7 @@ LangCodes3066To639 ( Index = 0; AsciiLangCodes = LangCodes3066; while (AsciiStrLen (AsciiLangCodes) != 0) { - HiiLibGetNextLanguage (&AsciiLangCodes, Lang); + GetNextLanguage (&AsciiLangCodes, Lang); Index++; } @@ -352,7 +352,7 @@ LangCodes3066To639 ( AsciiLangCodes = LangCodes3066; for (Index = 0; Index < Count; Index++) { - HiiLibGetNextLanguage (&AsciiLangCodes, Lang); + GetNextLanguage (&AsciiLangCodes, Lang); Status = ConvertRfc3066LanguageToIso639Language (Lang, *LangCodes639 + Index * ISO_639_2_ENTRY_SIZE); ASSERT_EFI_ERROR (Status); } diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h index 1583745d80..8a999b315c 100644 --- a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h +++ b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h @@ -529,6 +529,26 @@ ConvertIso639LanguageToRfc3066Language ( ) ; +/** + Get next language from language code list (with separator ';'). + + If LangCode is NULL, then ASSERT. + If Lang is NULL, then ASSERT. + + @param LangCode On input: point to first language in the list. On + output: point to next language in the list, or + NULL if no more language in the list. + @param Lang The first language in the list. + +**/ +VOID +EFIAPI +GetNextLanguage ( + IN OUT CHAR8 **LangCode, + OUT CHAR8 *Lang + ) +; + #include "Utility.h" #include "ConfigAccess.h" diff --git a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/Strings.c b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/Strings.c index caa702d5dd..3fab323dc7 100644 --- a/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/Strings.c +++ b/EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/Strings.c @@ -267,6 +267,47 @@ ConvertIso639LanguageToRfc3066Language ( return NULL; } +/** + Get next language from language code list (with separator ';'). + + If LangCode is NULL, then ASSERT. + If Lang is NULL, then ASSERT. + + @param LangCode On input: point to first language in the list. On + output: point to next language in the list, or + NULL if no more language in the list. + @param Lang The first language in the list. + +**/ +VOID +EFIAPI +GetNextLanguage ( + IN OUT CHAR8 **LangCode, + OUT CHAR8 *Lang + ) +{ + UINTN Index; + CHAR8 *StringPtr; + + ASSERT (LangCode != NULL); + ASSERT (*LangCode != NULL); + ASSERT (Lang != NULL); + + Index = 0; + StringPtr = *LangCode; + while (StringPtr[Index] != 0 && StringPtr[Index] != ';') { + Index++; + } + + CopyMem (Lang, StringPtr, Index); + Lang[Index] = 0; + + if (StringPtr[Index] == ';') { + Index++; + } + *LangCode = StringPtr + Index; +} + /** Test if all of the characters in a string have corresponding font characters. -- cgit v1.2.3