| /** @file |
| Unicode Collation protocol that follows the UEFI 2.0 specification. |
| This protocol is used to allow code running in the boot services environment |
| to perform lexical comparison functions on Unicode strings for given languages. |
| |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| **/ |
| |
| #ifndef __UNICODE_COLLATION_H__ |
| #define __UNICODE_COLLATION_H__ |
| |
| #define EFI_UNICODE_COLLATION_PROTOCOL_GUID \ |
| { \ |
| 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \ |
| } |
| |
| #define EFI_UNICODE_COLLATION_PROTOCOL2_GUID \ |
| { \ |
| 0xa4c751fc, 0x23ae, 0x4c3e, {0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49 } \ |
| } |
| |
| typedef struct _EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL; |
| |
| |
| /// |
| /// Protocol GUID name defined in EFI1.1. |
| /// |
| #define UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL_GUID |
| |
| /// |
| /// Protocol defined in EFI1.1. |
| /// |
| typedef EFI_UNICODE_COLLATION_PROTOCOL UNICODE_COLLATION_INTERFACE; |
| |
| /// |
| /// Protocol data structures and defines |
| /// |
| #define EFI_UNICODE_BYTE_ORDER_MARK (CHAR16) (0xfeff) |
| |
| // |
| // Protocol member functions |
| // |
| /** |
| Performs a case-insensitive comparison of two Null-terminated strings. |
| |
| @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance. |
| @param Str1 A pointer to a Null-terminated string. |
| @param Str2 A pointer to a Null-terminated string. |
| |
| @retval 0 Str1 is equivalent to Str2. |
| @retval >0 Str1 is lexically greater than Str2. |
| @retval <0 Str1 is lexically less than Str2. |
| |
| **/ |
| typedef |
| INTN |
| (EFIAPI *EFI_UNICODE_COLLATION_STRICOLL)( |
| IN EFI_UNICODE_COLLATION_PROTOCOL *This, |
| IN CHAR16 *Str1, |
| IN CHAR16 *Str2 |
| ); |
| |
| /** |
| Performs a case-insensitive comparison of a Null-terminated |
| pattern string and a Null-terminated string. |
| |
| @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance. |
| @param String A pointer to a Null-terminated string. |
| @param Pattern A pointer to a Null-terminated pattern string. |
| |
| @retval TRUE Pattern was found in String. |
| @retval FALSE Pattern was not found in String. |
| |
| **/ |
| typedef |
| BOOLEAN |
| (EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH)( |
| IN EFI_UNICODE_COLLATION_PROTOCOL *This, |
| IN CHAR16 *String, |
| IN CHAR16 *Pattern |
| ); |
| |
| /** |
| Converts all the characters in a Null-terminated string to |
| lower case characters. |
| |
| @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance. |
| @param String A pointer to a Null-terminated string. |
| |
| **/ |
| typedef |
| VOID |
| (EFIAPI *EFI_UNICODE_COLLATION_STRLWR)( |
| IN EFI_UNICODE_COLLATION_PROTOCOL *This, |
| IN OUT CHAR16 *Str |
| ); |
| |
| /** |
| Converts all the characters in a Null-terminated string to upper |
| case characters. |
| |
| @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance. |
| @param String A pointer to a Null-terminated string. |
| |
| **/ |
| typedef |
| VOID |
| (EFIAPI *EFI_UNICODE_COLLATION_STRUPR)( |
| IN EFI_UNICODE_COLLATION_PROTOCOL *This, |
| IN OUT CHAR16 *Str |
| ); |
| |
| /** |
| Converts an 8.3 FAT file name in an OEM character set to a Null-terminated |
| string. |
| |
| @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance. |
| @param FatSize The size of the string Fat in bytes. |
| @param Fat A pointer to a Null-terminated string that contains an 8.3 file |
| name using an 8-bit OEM character set. |
| @param String A pointer to a Null-terminated string. The string must |
| be allocated in advance to hold FatSize characters. |
| |
| **/ |
| typedef |
| VOID |
| (EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR)( |
| IN EFI_UNICODE_COLLATION_PROTOCOL *This, |
| IN UINTN FatSize, |
| IN CHAR8 *Fat, |
| OUT CHAR16 *String |
| ); |
| |
| /** |
| Converts a Null-terminated string to legal characters in a FAT |
| filename using an OEM character set. |
| |
| @param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance. |
| @param String A pointer to a Null-terminated string. |
| @param FatSize The size of the string Fat in bytes. |
| @param Fat A pointer to a string that contains the converted version of |
| String using legal FAT characters from an OEM character set. |
| |
| @retval TRUE One or more conversions failed and were substituted with '_' |
| @retval FALSE None of the conversions failed. |
| |
| **/ |
| typedef |
| BOOLEAN |
| (EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT)( |
| IN EFI_UNICODE_COLLATION_PROTOCOL *This, |
| IN CHAR16 *String, |
| IN UINTN FatSize, |
| OUT CHAR8 *Fat |
| ); |
| |
| /// |
| /// The EFI_UNICODE_COLLATION_PROTOCOL is used to perform case-insensitive |
| /// comparisons of strings. |
| /// |
| struct _EFI_UNICODE_COLLATION_PROTOCOL { |
| EFI_UNICODE_COLLATION_STRICOLL StriColl; |
| EFI_UNICODE_COLLATION_METAIMATCH MetaiMatch; |
| EFI_UNICODE_COLLATION_STRLWR StrLwr; |
| EFI_UNICODE_COLLATION_STRUPR StrUpr; |
| |
| // |
| // for supporting fat volumes |
| // |
| EFI_UNICODE_COLLATION_FATTOSTR FatToStr; |
| EFI_UNICODE_COLLATION_STRTOFAT StrToFat; |
| |
| /// |
| /// A Null-terminated ASCII string array that contains one or more language codes. |
| /// When this field is used for UnicodeCollation2, it is specified in RFC 4646 format. |
| /// When it is used for UnicodeCollation, it is specified in ISO 639-2 format. |
| /// |
| CHAR8 *SupportedLanguages; |
| }; |
| |
| extern EFI_GUID gEfiUnicodeCollationProtocolGuid; |
| extern EFI_GUID gEfiUnicodeCollation2ProtocolGuid; |
| |
| #endif |