/** @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 - 2011, Intel Corporation. All rights reserved.<BR> | |
This program and the accompanying materials are licensed and made available under | |
the terms and conditions of the BSD License that accompanies this distribution. | |
The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php. | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
**/ | |
#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 |