2007-06-19 12:12:02 +02:00
|
|
|
/** @file
|
2007-11-22 07:00:39 +01:00
|
|
|
Unicode Collation protocol that follows the UEFI 2.0 specification.
|
2018-06-27 15:11:33 +02:00
|
|
|
This protocol is used to allow code running in the boot services environment
|
2008-07-25 12:37:15 +02:00
|
|
|
to perform lexical comparison functions on Unicode strings for given languages.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2018-06-27 15:11:33 +02:00
|
|
|
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
|
2019-04-04 01:06:00 +02:00
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
#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 } \
|
|
|
|
}
|
|
|
|
|
2007-10-09 05:10:06 +02:00
|
|
|
#define EFI_UNICODE_COLLATION_PROTOCOL2_GUID \
|
|
|
|
{ \
|
|
|
|
0xa4c751fc, 0x23ae, 0x4c3e, {0x92, 0xe9, 0x49, 0x64, 0xcf, 0x63, 0xf3, 0x49 } \
|
|
|
|
}
|
|
|
|
|
2007-06-21 09:16:27 +02:00
|
|
|
typedef struct _EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL;
|
|
|
|
|
|
|
|
|
2008-08-14 06:29:48 +02:00
|
|
|
///
|
|
|
|
/// Protocol GUID name defined in EFI1.1.
|
2018-06-27 15:11:33 +02:00
|
|
|
///
|
2007-06-21 09:16:27 +02:00
|
|
|
#define UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL_GUID
|
|
|
|
|
2008-08-14 06:29:48 +02:00
|
|
|
///
|
|
|
|
/// Protocol defined in EFI1.1.
|
2018-06-27 15:11:33 +02:00
|
|
|
///
|
2007-06-21 09:16:27 +02:00
|
|
|
typedef EFI_UNICODE_COLLATION_PROTOCOL UNICODE_COLLATION_INTERFACE;
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2008-08-14 06:29:48 +02:00
|
|
|
///
|
|
|
|
/// Protocol data structures and defines
|
|
|
|
///
|
2007-06-19 12:12:02 +02:00
|
|
|
#define EFI_UNICODE_BYTE_ORDER_MARK (CHAR16) (0xfeff)
|
|
|
|
|
|
|
|
//
|
|
|
|
// Protocol member functions
|
|
|
|
//
|
|
|
|
/**
|
2009-09-24 10:56:33 +02:00
|
|
|
Performs a case-insensitive comparison of two Null-terminated strings.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2009-09-24 10:56:33 +02:00
|
|
|
@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.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2010-03-12 23:19:12 +01:00
|
|
|
@retval 0 Str1 is equivalent to Str2.
|
|
|
|
@retval >0 Str1 is lexically greater than Str2.
|
|
|
|
@retval <0 Str1 is lexically less than Str2.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
**/
|
|
|
|
typedef
|
|
|
|
INTN
|
2008-06-24 09:14:18 +02:00
|
|
|
(EFIAPI *EFI_UNICODE_COLLATION_STRICOLL)(
|
2007-06-19 12:12:02 +02:00
|
|
|
IN EFI_UNICODE_COLLATION_PROTOCOL *This,
|
|
|
|
IN CHAR16 *Str1,
|
|
|
|
IN CHAR16 *Str2
|
2008-09-04 11:37:28 +02:00
|
|
|
);
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
/**
|
2018-06-27 15:11:33 +02:00
|
|
|
Performs a case-insensitive comparison of a Null-terminated
|
2009-09-24 10:56:33 +02:00
|
|
|
pattern string and a Null-terminated string.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2009-09-24 10:56:33 +02:00
|
|
|
@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.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
@retval TRUE Pattern was found in String.
|
|
|
|
@retval FALSE Pattern was not found in String.
|
|
|
|
|
|
|
|
**/
|
|
|
|
typedef
|
|
|
|
BOOLEAN
|
2008-06-24 09:14:18 +02:00
|
|
|
(EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH)(
|
2007-06-19 12:12:02 +02:00
|
|
|
IN EFI_UNICODE_COLLATION_PROTOCOL *This,
|
|
|
|
IN CHAR16 *String,
|
|
|
|
IN CHAR16 *Pattern
|
2008-09-04 11:37:28 +02:00
|
|
|
);
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
/**
|
2018-06-27 15:11:33 +02:00
|
|
|
Converts all the characters in a Null-terminated string to
|
2009-09-24 10:56:33 +02:00
|
|
|
lower case characters.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2009-09-24 10:56:33 +02:00
|
|
|
@param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance.
|
|
|
|
@param String A pointer to a Null-terminated string.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
**/
|
|
|
|
typedef
|
|
|
|
VOID
|
2008-06-24 09:14:18 +02:00
|
|
|
(EFIAPI *EFI_UNICODE_COLLATION_STRLWR)(
|
2007-06-19 12:12:02 +02:00
|
|
|
IN EFI_UNICODE_COLLATION_PROTOCOL *This,
|
|
|
|
IN OUT CHAR16 *Str
|
2008-09-04 11:37:28 +02:00
|
|
|
);
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
/**
|
2009-09-24 10:56:33 +02:00
|
|
|
Converts all the characters in a Null-terminated string to upper
|
|
|
|
case characters.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2009-09-24 10:56:33 +02:00
|
|
|
@param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance.
|
|
|
|
@param String A pointer to a Null-terminated string.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
**/
|
|
|
|
typedef
|
|
|
|
VOID
|
2008-06-24 09:14:18 +02:00
|
|
|
(EFIAPI *EFI_UNICODE_COLLATION_STRUPR)(
|
2007-06-19 12:12:02 +02:00
|
|
|
IN EFI_UNICODE_COLLATION_PROTOCOL *This,
|
|
|
|
IN OUT CHAR16 *Str
|
2008-09-04 11:37:28 +02:00
|
|
|
);
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
/**
|
2018-06-27 15:11:33 +02:00
|
|
|
Converts an 8.3 FAT file name in an OEM character set to a Null-terminated
|
2009-09-24 10:56:33 +02:00
|
|
|
string.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2009-09-24 10:56:33 +02:00
|
|
|
@param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance.
|
2007-06-19 12:12:02 +02:00
|
|
|
@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
|
2011-06-08 07:53:18 +02:00
|
|
|
name using an 8-bit OEM character set.
|
2009-09-24 10:56:33 +02:00
|
|
|
@param String A pointer to a Null-terminated string. The string must
|
|
|
|
be allocated in advance to hold FatSize characters.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
**/
|
|
|
|
typedef
|
|
|
|
VOID
|
2008-06-24 09:14:18 +02:00
|
|
|
(EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR)(
|
2007-06-19 12:12:02 +02:00
|
|
|
IN EFI_UNICODE_COLLATION_PROTOCOL *This,
|
|
|
|
IN UINTN FatSize,
|
|
|
|
IN CHAR8 *Fat,
|
|
|
|
OUT CHAR16 *String
|
2008-09-04 11:37:28 +02:00
|
|
|
);
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
/**
|
2018-06-27 15:11:33 +02:00
|
|
|
Converts a Null-terminated string to legal characters in a FAT
|
|
|
|
filename using an OEM character set.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2009-09-24 10:56:33 +02:00
|
|
|
@param This A pointer to the EFI_UNICODE_COLLATION_PROTOCOL instance.
|
|
|
|
@param String A pointer to a Null-terminated string.
|
2007-06-19 12:12:02 +02:00
|
|
|
@param FatSize The size of the string Fat in bytes.
|
2018-06-27 15:11:33 +02:00
|
|
|
@param Fat A pointer to a string that contains the converted version of
|
2009-09-24 10:56:33 +02:00
|
|
|
String using legal FAT characters from an OEM character set.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2009-09-24 10:56:33 +02:00
|
|
|
@retval TRUE One or more conversions failed and were substituted with '_'
|
|
|
|
@retval FALSE None of the conversions failed.
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
**/
|
|
|
|
typedef
|
|
|
|
BOOLEAN
|
2008-06-24 09:14:18 +02:00
|
|
|
(EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT)(
|
2007-06-19 12:12:02 +02:00
|
|
|
IN EFI_UNICODE_COLLATION_PROTOCOL *This,
|
|
|
|
IN CHAR16 *String,
|
|
|
|
IN UINTN FatSize,
|
|
|
|
OUT CHAR8 *Fat
|
2008-09-04 11:37:28 +02:00
|
|
|
);
|
2007-06-19 12:12:02 +02:00
|
|
|
|
2008-10-13 04:54:29 +02:00
|
|
|
///
|
2018-06-27 15:11:33 +02:00
|
|
|
/// The EFI_UNICODE_COLLATION_PROTOCOL is used to perform case-insensitive
|
|
|
|
/// comparisons of strings.
|
2008-10-13 04:54:29 +02:00
|
|
|
///
|
2007-06-19 12:12:02 +02:00
|
|
|
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;
|
2018-06-27 15:11:33 +02:00
|
|
|
|
2008-10-09 21:24:37 +02:00
|
|
|
///
|
2011-12-07 02:35:05 +01:00
|
|
|
/// 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.
|
2008-10-09 21:24:37 +02:00
|
|
|
///
|
2007-06-19 12:12:02 +02:00
|
|
|
CHAR8 *SupportedLanguages;
|
|
|
|
};
|
|
|
|
|
|
|
|
extern EFI_GUID gEfiUnicodeCollationProtocolGuid;
|
2007-07-20 15:46:48 +02:00
|
|
|
extern EFI_GUID gEfiUnicodeCollation2ProtocolGuid;
|
2007-06-19 12:12:02 +02:00
|
|
|
|
|
|
|
#endif
|