Home | History | Annotate | Download | only in UnicodeCollation
      1 /*++
      2 
      3 Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 Module Name:
     13 
     14   UnicodeCollation.h
     15 
     16 Abstract:
     17 
     18   Unicode Collation protocol that follows the EFI 1.0 specification.
     19 
     20 --*/
     21 
     22 #ifndef _UNICODE_COLLATION_H_
     23 #define _UNICODE_COLLATION_H_
     24 
     25 #define EFI_UNICODE_COLLATION_PROTOCOL_GUID \
     26   { \
     27     0x1d85cd7f, 0xf43d, 0x11d2, {0x9a, 0xc, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d} \
     28   }
     29 
     30 EFI_FORWARD_DECLARATION (EFI_UNICODE_COLLATION_PROTOCOL);
     31 
     32 //
     33 // Protocol data structures and defines
     34 //
     35 #define EFI_UNICODE_BYTE_ORDER_MARK          ((CHAR16)(0xfeff))
     36 #define EFI_UNICODE_BYTE_ORDER_MARK_REVERSE  ((CHAR16)(0xfffe))
     37 
     38 //
     39 // Protocol member functions
     40 //
     41 typedef
     42 INTN
     43 (EFIAPI *EFI_UNICODE_COLLATION_STRICOLL) (
     44   IN EFI_UNICODE_COLLATION_PROTOCOL         * This,
     45   IN CHAR16                                 *Str1,
     46   IN CHAR16                                 *Str2
     47   )
     48 /*++
     49 
     50   Routine Description:
     51     Performs a case-insensitive comparison of two Null-terminated Unicode
     52     strings.
     53 
     54   Arguments:
     55     This - Protocol instance pointer.
     56     Str1 - A pointer to a Null-terminated Unicode string.
     57     Str2 - A pointer to a Null-terminated Unicode string.
     58 
     59   Returns:
     60     0   - Str1 is equivalent to Str2
     61     > 0 - Str1 is lexically greater than Str2
     62     < 0 - Str1 is lexically less than Str2
     63 
     64 --*/
     65 ;
     66 
     67 typedef
     68 BOOLEAN
     69 (EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH) (
     70   IN EFI_UNICODE_COLLATION_PROTOCOL         * This,
     71   IN CHAR16                                 *String,
     72   IN CHAR16                                 *Pattern
     73   )
     74 /*++
     75 
     76   Routine Description:
     77     Performs a case-insensitive comparison of a Null-terminated Unicode
     78     pattern string and a Null-terminated Unicode string.
     79 
     80   Arguments:
     81     This - Protocol instance pointer.
     82     String  - A pointer to a Null-terminated Unicode string.
     83     Pattern - A pointer to a Null-terminated Unicode pattern string.
     84 
     85   Returns:
     86     TRUE -  Pattern was found in String.
     87     FALSE - Pattern was not found in String.
     88 
     89 --*/
     90 ;
     91 
     92 typedef
     93 VOID
     94 (EFIAPI *EFI_UNICODE_COLLATION_STRLWR) (
     95   IN EFI_UNICODE_COLLATION_PROTOCOL         * This,
     96   IN OUT CHAR16                             *Str
     97   )
     98 /*++
     99 
    100   Routine Description:
    101     Converts all the Unicode characters in a Null-terminated Unicode string to
    102     lower case Unicode characters.
    103 
    104   Arguments:
    105     This - Protocol instance pointer.
    106     String  - A pointer to a Null-terminated Unicode string.
    107 
    108   Returns:
    109     NONE
    110 
    111 --*/
    112 ;
    113 
    114 typedef
    115 VOID
    116 (EFIAPI *EFI_UNICODE_COLLATION_STRUPR) (
    117   IN EFI_UNICODE_COLLATION_PROTOCOL         * This,
    118   IN OUT CHAR16                             *Str
    119   )
    120 /*++
    121 
    122   Routine Description:
    123    Converts all the Unicode characters in a Null-terminated Unicode string to upper
    124    case Unicode characters.
    125 
    126   Arguments:
    127     This   - Protocol instance pointer.
    128     String - A pointer to a Null-terminated Unicode string.
    129 
    130   Returns:
    131     NONE
    132 
    133 --*/
    134 ;
    135 
    136 typedef
    137 VOID
    138 (EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR) (
    139   IN EFI_UNICODE_COLLATION_PROTOCOL         * This,
    140   IN UINTN                                  FatSize,
    141   IN CHAR8                                  *Fat,
    142   OUT CHAR16                                *String
    143   )
    144 /*++
    145 
    146   Routine Description:
    147    Converts an 8.3 FAT file name in an OEM character set to a Null-terminated
    148    Unicode string.
    149 
    150   Arguments:
    151     This    - Protocol instance pointer.
    152     FatSize - The size of the string Fat in bytes.
    153     Fat     - A pointer to a Null-terminated string that contains an 8.3 file
    154                name using an OEM character set.
    155     String  - A pointer to a Null-terminated Unicode string. The string must
    156                be preallocated to hold FatSize Unicode characters.
    157   Returns:
    158     NONE
    159 
    160 --*/
    161 ;
    162 
    163 typedef
    164 BOOLEAN
    165 (EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT) (
    166   IN EFI_UNICODE_COLLATION_PROTOCOL         * This,
    167   IN CHAR16                                 *String,
    168   IN UINTN                                  FatSize,
    169   OUT CHAR8                                 *Fat
    170   )
    171 /*++
    172 
    173   Routine Description:
    174     Converts a Null-terminated Unicode string to legal characters in a FAT
    175     filename using an OEM character set.
    176 
    177   Arguments:
    178     This    - Protocol instance pointer.
    179     String  - A pointer to a Null-terminated Unicode string. The string must
    180                be preallocated to hold FatSize Unicode characters.
    181     FatSize - The size of the string Fat in bytes.
    182     Fat     - A pointer to a Null-terminated string that contains an 8.3 file
    183                name using an OEM character set.
    184   Returns:
    185     TRUE  - Fat is a Long File Name
    186     FALSE - Fat is an 8.3 file name
    187 
    188 --*/
    189 ;
    190 
    191 struct _EFI_UNICODE_COLLATION_PROTOCOL {
    192   //
    193   // general
    194   //
    195   EFI_UNICODE_COLLATION_STRICOLL    StriColl;
    196   EFI_UNICODE_COLLATION_METAIMATCH  MetaiMatch;
    197   EFI_UNICODE_COLLATION_STRLWR      StrLwr;
    198   EFI_UNICODE_COLLATION_STRUPR      StrUpr;
    199 
    200   //
    201   // for supporting fat volumes
    202   //
    203   EFI_UNICODE_COLLATION_FATTOSTR    FatToStr;
    204   EFI_UNICODE_COLLATION_STRTOFAT    StrToFat;
    205 
    206   CHAR8                             *SupportedLanguages;
    207 };
    208 
    209 extern EFI_GUID gEfiUnicodeCollationProtocolGuid;
    210 
    211 #endif
    212