--- /dev/null
+/** @file\r
+ Unicode Collation protocol that follows the EFI 1.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
+\r
+ Module Name: UnicodeCollation.h\r
+\r
+**/\r
+\r
+#ifndef __UNICODE_COLLATION_H__\r
+#define __UNICODE_COLLATION_H__\r
+\r
+#define EFI_UNICODE_COLLATION_PROTOCOL_GUID \\r
+ { \\r
+ 0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \\r
+ }\r
+\r
+typedef struct _EFI_UNICODE_COLLATION_PROTOCOL EFI_UNICODE_COLLATION_PROTOCOL;\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
+\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
+\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
+ IN EFI_UNICODE_COLLATION_PROTOCOL *This,\r
+ IN CHAR16 *Str1,\r
+ IN CHAR16 *Str2\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
+\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
+\r
+ @retval TRUE Pattern was found in String.\r
+ @retval FALSE Pattern was not found in String.\r
+\r
+**/\r
+typedef\r
+BOOLEAN\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
+ 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
+\r
+ NONE\r
+\r
+**/\r
+typedef\r
+VOID\r
+(EFIAPI *EFI_UNICODE_COLLATION_STRLWR) (\r
+ IN EFI_UNICODE_COLLATION_PROTOCOL *This,\r
+ IN OUT CHAR16 *Str\r
+ )\r
+;\r
+\r
+/**\r
+ Converts all the Unicode characters in a Null-terminated Unicode string to upper\r
+ case Unicode characters.\r
+\r
+ @param This Protocol instance pointer.\r
+ @param String A pointer to a Null-terminated Unicode string.\r
+\r
+ NONE\r
+\r
+**/\r
+typedef\r
+VOID\r
+(EFIAPI *EFI_UNICODE_COLLATION_STRUPR) (\r
+ IN EFI_UNICODE_COLLATION_PROTOCOL *This,\r
+ IN OUT CHAR16 *Str\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
+\r
+ @param This Protocol instance pointer.\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
+\r
+**/\r
+typedef\r
+VOID\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
+ Converts a Null-terminated Unicode 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 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
+\r
+ @retval TRUE Fat is a Long File Name\r
+ @retval FALSE Fat is an 8.3 file name\r
+\r
+**/\r
+typedef\r
+BOOLEAN\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
+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
+ EFI_UNICODE_COLLATION_STRUPR StrUpr;\r
+\r
+ //\r
+ // for supporting fat volumes\r
+ //\r
+ EFI_UNICODE_COLLATION_FATTOSTR FatToStr;\r
+ EFI_UNICODE_COLLATION_STRTOFAT StrToFat;\r
+\r
+ CHAR8 *SupportedLanguages;\r
+};\r
+\r
+extern EFI_GUID gEfiUnicodeCollationProtocolGuid;\r
+\r
+#endif\r