diff options
Diffstat (limited to 'EDK/Foundation/Efi/Protocol/UnicodeCollation')
-rw-r--r-- | EDK/Foundation/Efi/Protocol/UnicodeCollation/UnicodeCollation.c | 27 | ||||
-rw-r--r-- | EDK/Foundation/Efi/Protocol/UnicodeCollation/UnicodeCollation.h | 211 |
2 files changed, 238 insertions, 0 deletions
diff --git a/EDK/Foundation/Efi/Protocol/UnicodeCollation/UnicodeCollation.c b/EDK/Foundation/Efi/Protocol/UnicodeCollation/UnicodeCollation.c new file mode 100644 index 0000000..dfe0870 --- /dev/null +++ b/EDK/Foundation/Efi/Protocol/UnicodeCollation/UnicodeCollation.c @@ -0,0 +1,27 @@ +/*++ + +Copyright (c) 2004, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which 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. + +Module Name: + + UnicodeCollation.c + +Abstract: + + Unicode Collation protocol that follows the EFI 1.0 specification. + +--*/ + +#include "EfiSpec.h" +#include EFI_PROTOCOL_DEFINITION (UnicodeCollation) + +EFI_GUID gEfiUnicodeCollationProtocolGuid = EFI_UNICODE_COLLATION_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiUnicodeCollationProtocolGuid, "Unicode Collation Protocol", "EFI 1.0 Unicode Collation Protocol"); diff --git a/EDK/Foundation/Efi/Protocol/UnicodeCollation/UnicodeCollation.h b/EDK/Foundation/Efi/Protocol/UnicodeCollation/UnicodeCollation.h new file mode 100644 index 0000000..211d6c4 --- /dev/null +++ b/EDK/Foundation/Efi/Protocol/UnicodeCollation/UnicodeCollation.h @@ -0,0 +1,211 @@ +/*++ + +Copyright (c) 2004, Intel Corporation +All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which 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. + +Module Name: + + UnicodeCollation.h + +Abstract: + + Unicode Collation protocol that follows the EFI 1.0 specification. + +--*/ + +#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 \ + } + +EFI_FORWARD_DECLARATION (EFI_UNICODE_COLLATION_PROTOCOL); + +// +// Protocol data structures and defines +// +#define EFI_UNICODE_BYTE_ORDER_MARK ((CHAR16)(0xfeff)) +#define EFI_UNICODE_BYTE_ORDER_MARK_REVERSE ((CHAR16)(0xfffe)) + +// +// Protocol member functions +// +typedef +INTN +(EFIAPI *EFI_UNICODE_COLLATION_STRICOLL) ( + IN EFI_UNICODE_COLLATION_PROTOCOL * This, + IN CHAR16 *Str1, + IN CHAR16 *Str2 + ) +/*++ + + Routine Description: + Performs a case-insensitive comparison of two Null-terminated Unicode + strings. + + Arguments: + This - Protocol instance pointer. + Str1 - A pointer to a Null-terminated Unicode string. + Str2 - A pointer to a Null-terminated Unicode string. + + Returns: + 0 - Str1 is equivalent to Str2 + > 0 - Str1 is lexically greater than Str2 + < 0 - Str1 is lexically less than Str2 + +--*/ +; + +typedef +BOOLEAN +(EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH) ( + IN EFI_UNICODE_COLLATION_PROTOCOL * This, + IN CHAR16 *String, + IN CHAR16 *Pattern + ) +/*++ + + Routine Description: + Performs a case-insensitive comparison of a Null-terminated Unicode + pattern string and a Null-terminated Unicode string. + + Arguments: + This - Protocol instance pointer. + String - A pointer to a Null-terminated Unicode string. + Pattern - A pointer to a Null-terminated Unicode pattern string. + + Returns: + TRUE - Pattern was found in String. + FALSE - Pattern was not found in String. + +--*/ +; + +typedef +VOID +(EFIAPI *EFI_UNICODE_COLLATION_STRLWR) ( + IN EFI_UNICODE_COLLATION_PROTOCOL * This, + IN OUT CHAR16 *Str + ) +/*++ + + Routine Description: + Converts all the Unicode characters in a Null-terminated Unicode string to + lower case Unicode characters. + + Arguments: + This - Protocol instance pointer. + String - A pointer to a Null-terminated Unicode string. + + Returns: + NONE + +--*/ +; + +typedef +VOID +(EFIAPI *EFI_UNICODE_COLLATION_STRUPR) ( + IN EFI_UNICODE_COLLATION_PROTOCOL * This, + IN OUT CHAR16 *Str + ) +/*++ + + Routine Description: + Converts all the Unicode characters in a Null-terminated Unicode string to upper + case Unicode characters. + + Arguments: + This - Protocol instance pointer. + String - A pointer to a Null-terminated Unicode string. + + Returns: + NONE + +--*/ +; + +typedef +VOID +(EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR) ( + IN EFI_UNICODE_COLLATION_PROTOCOL * This, + IN UINTN FatSize, + IN CHAR8 *Fat, + OUT CHAR16 *String + ) +/*++ + + Routine Description: + Converts an 8.3 FAT file name in an OEM character set to a Null-terminated + Unicode string. + + Arguments: + This - Protocol instance pointer. + FatSize - The size of the string Fat in bytes. + Fat - A pointer to a Null-terminated string that contains an 8.3 file + name using an OEM character set. + String - A pointer to a Null-terminated Unicode string. The string must + be preallocated to hold FatSize Unicode characters. + Returns: + NONE + +--*/ +; + +typedef +BOOLEAN +(EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT) ( + IN EFI_UNICODE_COLLATION_PROTOCOL * This, + IN CHAR16 *String, + IN UINTN FatSize, + OUT CHAR8 *Fat + ) +/*++ + + Routine Description: + Converts a Null-terminated Unicode string to legal characters in a FAT + filename using an OEM character set. + + Arguments: + This - Protocol instance pointer. + String - A pointer to a Null-terminated Unicode string. The string must + be preallocated to hold FatSize Unicode characters. + FatSize - The size of the string Fat in bytes. + Fat - A pointer to a Null-terminated string that contains an 8.3 file + name using an OEM character set. + Returns: + TRUE - Fat is a Long File Name + FALSE - Fat is an 8.3 file name + +--*/ +; + +typedef struct _EFI_UNICODE_COLLATION_PROTOCOL { + // + // general + // + 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; + + CHAR8 *SupportedLanguages; +} EFI_UNICODE_COLLATION_PROTOCOL; + +extern EFI_GUID gEfiUnicodeCollationProtocolGuid; + +#endif |