git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10403 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			192 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @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 - 2010, 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 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. This array is specified in RFC 4646 format.
 | 
						|
  ///
 | 
						|
  CHAR8                             *SupportedLanguages;
 | 
						|
};
 | 
						|
 | 
						|
extern EFI_GUID gEfiUnicodeCollationProtocolGuid;
 | 
						|
extern EFI_GUID gEfiUnicodeCollation2ProtocolGuid;
 | 
						|
 | 
						|
#endif
 |