#ifndef EFI_PROTOCOLS_STRING_SERVICES_H #define EFI_PROTOCOLS_STRING_SERVICES_H //// // Unicode Collation Protocol /// #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; typedef EFI_INTN (EFIAPI *EFI_UNICODE_COLLATION_STRICOLL)( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN CHAR16 *s1, IN CHAR16 *s2 ); typedef EFI_BOOLEAN (EFIAPI *EFI_UNICODE_COLLATION_METAIMATCH)( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN CHAR16 *String, IN CHAR16 *Pattern ); typedef VOID (EFIAPI *EFI_UNICODE_COLLATION_STRLWR)( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN OUT CHAR16 *String ); typedef VOID (EFIAPI *EFI_UNICODE_COLLATION_STRUPR)( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN OUT CHAR16 *String ); typedef VOID (EFIAPI *EFI_UNICODE_COLLATION_FATTOSTR)( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN EFI_UINTN FatSize, IN CHAR8 *Fat, OUT CHAR16 *String ); typedef EFI_BOOLEAN (EFIAPI *EFI_UNICODE_COLLATION_STRTOFAT)( IN EFI_UNICODE_COLLATION_PROTOCOL *This, IN CHAR16 *String, IN EFI_UINTN FatSize, OUT CHAR8 *Fat ); typedef 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; EFI_UNICODE_COLLATION_FATTOSTR FatToStr; EFI_UNICODE_COLLATION_STRTOFAT StrToFat; CHAR8 *SupportedLanguages; } EFI_UNICODE_COLLATION_PROTOCOL; //// // Regular Expression Protocol /// #define EFI_REGULAR_EXPRESSION_PROTOCOL_GUID {0xb3f79d9a,0x436c,0xdc11, {0xb0,0x52,0xcd,0x85,0xdf,0x52,0x4c,0xe6}} // Syntax types #define EFI_REGEX_SYNTAX_TYPE_POSIX_EXTENDED_GUID {0x5f05b20f,0x4a56,0xc231, {0xfa,0x0b,0xa7,0xb1,0xf1,0x10,0x04,0x1d}} #define EFI_REGEX_SYNTAX_TYPE_PERL_GUID {0x63e60a51,0x497d,0xd427, {0xc4,0xa5,0xb8,0xab,0xdc,0x3a,0xae,0xb6}} #define EFI_REGEX_SYNTAX_TYPE_ECMA_262_GUID {0x9a473a4a,0x4ceb,0xb95a, 0x41, {0x5e,0x5b,0xa0,0xbc,0x63,0x9b,0x2e}} #define EFI_REGEX_SYNTAX_TYPE_POSIX_EXTENDED_ASCII_GUID {0x3fd32128,0x4bb1,0xf632, {0xbe,0x4f,0xba,0xbf,0x85,0xc9,0x36,0x76}} #define EFI_REGEX_SYNTAX_TYPE_PERL_ASCII_GUID {0x87dfb76d,0x4b58,0xef3a, {0xf7,0xc6,0x16,0xa4,0x2a,0x68,0x28,0x10}} #define EFI_REGEX_SYNTAX_TYPE_ECMA_262_ASCII_GUID {0xb2284a2f,0x4491,0x6d9d, {0xea,0xb7,0x11,0xb0,0x67,0xd4,0x9b,0x9a}} typedef struct _EFI_REGULAR_EXPRESSION_PROTOCOL EFI_REGULAR_EXPRESSION_PROTOCOL; typedef EFI_GUID EFI_REGEX_SYNTAX_TYPE; typedef struct { CONST CHAR16 *CapturePtr; EFI_UINTN Length; } EFI_REGEX_CAPTURE; typedef EFI_STATUS (EFIAPI *EFI_REGULAR_EXPRESSION_MATCH)( IN EFI_REGULAR_EXPRESSION_PROTOCOL *This, IN CHAR16 *String, IN CHAR16 *Pattern, IN EFI_REGEX_SYNTAX_TYPE *SyntaxType OPTIONAL, OUT EFI_BOOLEAN *Result, OUT EFI_REGEX_CAPTURE **Captures OPTIONAL, OUT EFI_UINTN *CapturesCount ); typedef EFI_STATUS (EFIAPI *EFI_REGULAR_EXPRESSION_GET_INFO)( IN EFI_REGULAR_EXPRESSION_PROTOCOL *This, IN OUT EFI_UINTN *RegExSyntaxTypeListSize, OUT EFI_REGEX_SYNTAX_TYPE *RegExSyntaxTypeList ); typedef struct _EFI_REGULAR_EXPRESSION_PROTOCOL { EFI_REGULAR_EXPRESSION_MATCH MatchString; EFI_REGULAR_EXPRESSION_GET_INFO GetInfo; } EFI_REGULAR_EXPRESSION_PROTOCOL; #endif /* EFI_PROTOCOLS_STRING_SERVICES_H */