OpenCorePkg/Include/Library/OcStringLib.h
2018-10-07 04:12:17 +03:00

404 lines
9.2 KiB
C
Executable File

/** @file
Copyright (C) 2016 - 2018, The HermitCrabs Lab. All rights reserved.
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.
**/
#ifndef OC_STRING_LIB_H_
#define OC_STRING_LIB_H_
// IsAsciiPrint
/** Check if character is printable
@param[in] Char The ascii character to check if is printable.
@retval TRUE, if character is printable.
**/
BOOLEAN
IsAsciiPrint (
IN CHAR8 Char
);
// IsAsciiDecimalDigitCharacter
/** Check if character is a decimal digit
@param[in] Char The ascii character to check if is printable.
@retval TRUE, if character is a decimal digit.
**/
BOOLEAN
IsAsciiDecimalDigitCharacter (
IN CHAR8 Char
);
// IsAsciiSpace
/** Check if character is a white space character
@param[in] Char The ascii character to check if is white space.
@retval TRUE, if character is a white space character
**/
INTN
IsAsciiSpace (
IN CHAR8 Char
);
// AsciiHexCharToUintn
/** Convert ascii hexadecimal character to unsigned integer.
@param[in] Char The ascii character to convert to integer.
@retval Integer value of character representation.
**/
UINTN
AsciiHexCharToUintn (
IN CHAR8 Char
);
// AsciiStrnIntegerCmp
/**
@param[in] String1 A pointer to a buffer containing the first ascii string to compare.
@param[in] String2 A pointer to a buffer containing the second ascii string to compare.
@param[in] Length The number of characters to compare.
@retval Integer value of character representation.
**/
INTN
AsciiStrnIntegerCmp (
IN CHAR8 *String1,
IN CHAR8 *String2,
IN UINTN Length
);
// AsciiStrToInteger
/** Convert ascii string to unsigned integer.
@param[in] Char The null terminated ascii string to convert to integer.
@retval Integer value of the ascii string.
**/
INTN
AsciiStrToInteger (
IN CHAR8 *Start
);
// AsciiToUpperChar
/** Convert ascii character to upper case
@param[in] Char The ascii character to convert to upperase.
@retval Upper case representation of the ascii character.
**/
CHAR8
AsciiToUpperChar (
IN CHAR8 Char
);
// OcAsciiStrStr
/**
Returns the first occurrence of a Null-terminated ASCII sub-string
in a Null-terminated ASCII string.
@param[in] String1 A pointer to a Null-terminated ASCII string.
@param[in] SearchString A pointer to a Null-terminated ASCII string to search for.
@retval NULL If the SearchString does not appear in String.
**/
CHAR8 *
OcAsciiStrStr (
IN CONST CHAR8 *String,
IN CONST CHAR8 *SearchString
);
// OcAsciiStrnCmp
/**
Compares two Null-terminated ASCII strings with maximum lengths, and returns
the difference between the first mismatched ASCII characters.
@param[in] String1 A pointer to a Null-terminated ASCII string.
@param[in] String2 A pointer to a Null-terminated ASCII string.
@param[in] Length The maximum number of ASCII characters for compare.
@retval ==0 FirstString is identical to SecondString.
@retval !=0 FirstString is not identical to SecondString.
**/
INTN
OcAsciiStrnCmp (
IN CONST CHAR8 *FirstString,
IN CONST CHAR8 *SecondString,
IN UINTN Length
);
// OcAsciiStrToGuid
/** Convert correctly formatted string into a GUID.
@param[in] StringGuid A pointer to a buffer containing the ascii string.
@param[in] Guid A pointer to location to store the converted GUID.
@retval EFI_SUCCESS The conversion completed successfully.
**/
EFI_STATUS
OcAsciiStrToGuid (
IN CONST CHAR8 *StringGuid,
IN OUT EFI_GUID *Guid
);
// OcAsciiStrToUnicode
/** Convert null terminated ascii string to unicode.
@param[in] String1 A pointer to the ascii string to convert to unicode.
@param[out] String2 A pointer to the converted unicode string.
@param[in] Length Length or 0 to calculate the length of the ascii string to convert.
@retval A pointer to the converted unicode string.
**/
CHAR16 *
OcAsciiStrToUnicode (
IN CHAR8 *String1,
IN CHAR16 *String2,
IN UINTN Length
);
// AsciiTrimWhiteSpace
/** Remove leading and trailing spaces in the string
@param[in] Start A pointer to the ascii string
@retval A pointer to the converted ascii string.
**/
CHAR8 *
AsciiTrimWhiteSpace (
IN CHAR8 *String
);
// AsciiBaseName
/** Return the filename element of a pathname
@param[in] FullPath A pointer to a ascii path
@retval A pointer to the converted ascii string.
**/
CHAR8 *
AsciiBaseName (
IN CHAR8 *FullPath
);
// AsciiDirName
/** Return the folder element of a pathname
@param[in] FullPath A pointer to a ascii path
@retval A pointer to the converted ascii string.
**/
CHAR8 *
AsciiDirName (
IN CHAR8 *FullPath
);
// IsPrint
/** Check if character is printable
@param[in] Char The unicode character to check if is printable.
@retval TRUE, if character is printable.
**/
BOOLEAN
IsPrint (
IN CHAR16 Char
);
// IsDecimalDigitCharacter
/** Check if character is a decimal digit
@param[in] Char The unicode character to check if is printable.
@retval TRUE, if character is a decimal digit.
**/
BOOLEAN
IsDecimalDigitCharacter (
IN CHAR16 Char
);
// IsSpace
/** Check if character is a white space character
@param[in] Char The unicode character to check if is white space.
@retval TRUE, if character is a white space character
**/
INTN
IsSpace (
IN CHAR16 Char
);
// HexCharToUintn
/** Convert unicode hexadecimal character to unsigned integer.
@param[in] Char The unicode character to convert to integer.
@retval Integer value of character representation.
**/
UINTN
HexCharToUintn (
IN CHAR16 Char
);
// StrnIntegerCmp
/**
@param[in] String1 A pointer to a buffer containing the first unicode string to compare.
@param[in] String2 A pointer to a buffer containing the second unicode string to compare.
@param[in] Length The number of characters to compare.
@retval Integer value of character representation.
**/
INTN
StrnIntegerCmp (
IN CHAR16 *String1,
IN CHAR16 *String2,
IN UINTN Length
);
// StrToInteger
/** Convert unicode string to unsigned integer.
@param[in] Char The null terminated unicode string to convert to integer.
@retval Integer value of the unicode string.
**/
INTN
StrToInteger (
IN CHAR16 *Start
);
// ToUpperChar
/** Convert unicode character to upper case
@param[in] Char The unicode character to convert to upperase.
@retval Upper case representation of the unicode character.
**/
CHAR16
ToUpperChar (
IN CHAR16 Char
);
// OcStrToGuid
/** Convert correctly formatted string into a GUID.
@param[in] StringGuid A pointer to a buffer containing the unicode string.
@param[in] Guid A pointer to location to store the converted GUID.
@retval EFI_SUCCESS The conversion completed successfully.
**/
EFI_STATUS
OcStrToGuid (
IN CONST CHAR16 *StringGuid,
IN OUT EFI_GUID *Guid
);
// OcStrToAscii
/** Convert null terminated unicode string to ascii.
@param[in] String1 A pointer to the unicode string to convert to ascii.
@param[out] String2 A pointer to the converted ascii string.
@retval A pointer to the converted ascii string.
**/
CHAR8 *
OcStrToAscii (
IN CHAR16 *String1,
IN CHAR8 *String2
);
// StrCmpiAscii
/** Compare unicode string with ascii string ignoring case
@param[in] String1 A pointer to a unicode string to compare.
@param[in] String2 A pointer to a ascii string to compare.
@retval A pointer to the converted ascii string.
**/
UINTN
StrCmpiAscii (
IN CHAR16 *String1,
IN CHAR8 *String2
);
// StrCmpiBasic
/** Compare unicode strings ignoring case
@param[in] String1 A pointer to a unicode string to compare.
@param[in] String2 A pointer to a unicode string to compare.
@retval A pointer to the converted ascii string.
**/
UINTN
StrCmpiBasic (
IN CHAR16 *String1,
IN CHAR16 *String2
);
// UnicodeBaseName
/** Return the filename element of a pathname
@param[in] FullPath A pointer to a unicode path
@retval A pointer to the converted ascii string.
**/
CHAR16 *
UnicodeBaseName (
IN CHAR16 *FullPath
);
// UnicodeDirName
/** Return the folder element of a pathname
@param[in] FullPath A pointer to a unicode path
@retval A pointer to the converted ascii string.
**/
CHAR16 *
UnicodeDirName (
IN CHAR16 *FullPath
);
// UnicodeParseString
/**
@param[in] String A pointer to a unicode string
@param[in] Variable A pointer to a unicode string variable name to parse for
@retval A pointer to the variable value
**/
CHAR16 *
UnicodeParseString (
IN CHAR16 *String,
IN CHAR16 *Variable
);
// TrimWhiteSpace
/** Remove leading and trailing spaces in the string
@param[in] Start A pointer to the unicode string
@retval A pointer to the converted unicode string.
**/
CHAR16 *
TrimWhiteSpace (
IN CHAR16 *String
);
#endif // OC_STRING_LIB_H_