/** @file\r
Unicode Collation protocol that follows the UEFI 2.0 specification.\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+ This protocol is used to allow code running in the boot services environment \r
+ to perform lexical comparison functions on Unicode strings for given languages.\r
+\r
+Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution. \r
+The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php. \r
+ \r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
\r
**/\r
\r
typedef struct _EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL;\r
\r
\r
-//\r
-// Protocol GUID name defined in EFI1.1.\r
-// \r
+///\r
+/// Protocol GUID name defined in EFI1.1.\r
+/// \r
#define UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL_GUID\r
\r
-//\r
-// Protocol defined in EFI1.1.\r
-// \r
+///\r
+/// Protocol defined in EFI1.1.\r
+/// \r
typedef EFI_UNICODE_COLLATION_PROTOCOL UNICODE_COLLATION_INTERFACE;\r
\r
-//\r
-// Protocol data structures and defines\r
-//\r
+///\r
+/// Protocol data structures and defines\r
+///\r
#define EFI_UNICODE_BYTE_ORDER_MARK (CHAR16) (0xfeff)\r
\r
//\r
// Protocol member functions\r
//\r
/**\r
- Performs a case-insensitive comparison of two Null-terminated Unicode \r
- strings.\r
+ Performs a case-insensitive comparison of two Null-terminated strings.\r
\r
- @param This Protocol instance pointer.\r
- @param Str1 A pointer to a Null-terminated Unicode string.\r
- @param Str2 A pointer to a Null-terminated Unicode string.\r
+ @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance.\r
+ @param Str1 A pointer to a Null-terminated string.\r
+ @param Str2 A pointer to a Null-terminated string.\r
\r
- @retval 0 Str1 is equivalent to Str2\r
- @retval >_0 Str1 is lexically greater than Str2\r
- @retval <_0 Str1 is lexically less than Str2\r
+ @retval 0 Str1 is equivalent to Str2.\r
+ @retval >0 Str1 is lexically greater than Str2.\r
+ @retval <0 Str1 is lexically less than Str2.\r
\r
**/\r
typedef\r
INTN\r
-(EFIAPI *EFI_UNICODE_COLLATION_STRICOLL) (\r
+(EFIAPI *EFI_UNICODE_COLLATION_STRICOLL)(\r
IN EFI_UNICODE_COLLATION_PROTOCOL *This,\r
IN CHAR16 *Str1,\r
IN CHAR16 *Str2\r
- )\r
-;\r
+ );\r
\r
/**\r
- Performs a case-insensitive comparison of a Null-terminated Unicode \r
- pattern string and a Null-terminated Unicode string.\r
+ Performs a case-insensitive comparison of a Null-terminated \r
+ pattern string and a Null-terminated string.\r
\r
- @param This Protocol instance pointer.\r
- @param String A pointer to a Null-terminated Unicode string.\r
- @param Pattern A pointer to a Null-terminated Unicode pattern string.\r
+ @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance.\r
+ @param String A pointer to a Null-terminated string.\r
+ @param Pattern A pointer to a Null-terminated pattern string.\r
\r
@retval TRUE Pattern was found in String.\r
@retval FALSE Pattern was not found in String.\r
**/\r
typedef\r
BOOLEAN\r
-(EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH) (\r
+(EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH)(\r
IN EFI_UNICODE_COLLATION_PROTOCOL *This,\r
IN CHAR16 *String,\r
IN CHAR16 *Pattern\r
- )\r
-;\r
+ );\r
\r
/**\r
- Converts all the Unicode characters in a Null-terminated Unicode string to \r
- lower case Unicode characters.\r
-\r
- @param This Protocol instance pointer.\r
- @param String A pointer to a Null-terminated Unicode string.\r
+ Converts all the characters in a Null-terminated string to \r
+ lower case characters.\r
\r
- NONE\r
+ @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance.\r
+ @param String A pointer to a Null-terminated string.\r
\r
**/\r
typedef\r
VOID\r
-(EFIAPI *EFI_UNICODE_COLLATION_STRLWR) (\r
+(EFIAPI *EFI_UNICODE_COLLATION_STRLWR)(\r
IN EFI_UNICODE_COLLATION_PROTOCOL *This,\r
IN OUT CHAR16 *Str\r
- )\r
-;\r
+ );\r
\r
/**\r
- Converts all the Unicode characters in a Null-terminated Unicode string to upper\r
- case Unicode characters.\r
+ Converts all the characters in a Null-terminated string to upper\r
+ case characters.\r
\r
- @param This Protocol instance pointer.\r
- @param String A pointer to a Null-terminated Unicode string.\r
-\r
- NONE\r
+ @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance.\r
+ @param String A pointer to a Null-terminated string.\r
\r
**/\r
typedef\r
VOID\r
-(EFIAPI *EFI_UNICODE_COLLATION_STRUPR) (\r
+(EFIAPI *EFI_UNICODE_COLLATION_STRUPR)(\r
IN EFI_UNICODE_COLLATION_PROTOCOL *This,\r
IN OUT CHAR16 *Str\r
- )\r
-;\r
+ );\r
\r
/**\r
Converts an 8.3 FAT file name in an OEM character set to a Null-terminated \r
- Unicode string.\r
+ string.\r
\r
- @param This Protocol instance pointer.\r
+ @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance.\r
@param FatSize The size of the string Fat in bytes.\r
@param Fat A pointer to a Null-terminated string that contains an 8.3 file\r
- name using an OEM character set.\r
- @param String A pointer to a Null-terminated Unicode string. The string must\r
- be preallocated to hold FatSize Unicode characters.\r
-\r
- NONE\r
+ name using an 8-bit OEM character set.\r
+ @param String A pointer to a Null-terminated string. The string must\r
+ be allocated in advance to hold FatSize characters.\r
\r
**/\r
typedef\r
VOID\r
-(EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR) (\r
+(EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR)(\r
IN EFI_UNICODE_COLLATION_PROTOCOL *This,\r
IN UINTN FatSize,\r
IN CHAR8 *Fat,\r
OUT CHAR16 *String\r
- )\r
-;\r
+ );\r
\r
/**\r
- Converts a Null-terminated Unicode string to legal characters in a FAT \r
+ Converts a Null-terminated string to legal characters in a FAT \r
filename using an OEM character set. \r
\r
- @param This Protocol instance pointer.\r
- @param String A pointer to a Null-terminated Unicode string. The string must\r
- be preallocated to hold FatSize Unicode characters.\r
+ @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance.\r
+ @param String A pointer to a Null-terminated string.\r
@param FatSize The size of the string Fat in bytes.\r
- @param Fat A pointer to a Null-terminated string that contains an 8.3 file\r
- name using an OEM character set.\r
+ @param Fat A pointer to a string that contains the converted version of \r
+ String using legal FAT characters from an OEM character set.\r
\r
- @retval TRUE Fat is a Long File Name\r
- @retval FALSE Fat is an 8.3 file name\r
+ @retval TRUE One or more conversions failed and were substituted with '_'\r
+ @retval FALSE None of the conversions failed.\r
\r
**/\r
typedef\r
BOOLEAN\r
-(EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT) (\r
+(EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT)(\r
IN EFI_UNICODE_COLLATION_PROTOCOL *This,\r
IN CHAR16 *String,\r
IN UINTN FatSize,\r
OUT CHAR8 *Fat\r
- )\r
-;\r
+ );\r
\r
+///\r
+/// The EFI_UNICODE_COLLATION_PROTOCOL is used to perform case-insensitive \r
+/// comparisons of strings. \r
+///\r
struct _EFI_UNICODE_COLLATION_PROTOCOL {\r
- //\r
- // general\r
- //\r
EFI_UNICODE_COLLATION_STRICOLL StriColl;\r
EFI_UNICODE_COLLATION_METAIMATCH MetaiMatch;\r
EFI_UNICODE_COLLATION_STRLWR StrLwr;\r
//\r
EFI_UNICODE_COLLATION_FATTOSTR FatToStr;\r
EFI_UNICODE_COLLATION_STRTOFAT StrToFat;\r
-\r
+ \r
+ ///\r
+ /// A Null-terminated ASCII string array that contains one or more language codes.\r
+ /// When this field is used for UnicodeCollation2, it is specified in RFC 4646 format.\r
+ /// When it is used for UnicodeCollation, it is specified in ISO 639-2 format.\r
+ ///\r
CHAR8 *SupportedLanguages;\r
};\r
\r