/** @file String routines implementation Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _EFI_STRING_FUNCS_H #define _EFI_STRING_FUNCS_H #include #include #include // // Common data structures // typedef struct { UINTN Count; // // Actually this array can be 0 or more items (based on Count) // CHAR8* Strings[1]; } STRING_LIST; // // Functions declarations // CHAR8* CloneString ( IN CHAR8 *String ) ; /** Routine Description: Allocates a new string and copies 'String' to clone it Arguments: String The string to clone Returns: CHAR8* - NULL if there are not enough resources **/ EFI_STATUS StripInfDscStringInPlace ( IN CHAR8 *String ) ; /** Routine Description: Remove all comments, leading and trailing whitespace from the string. Arguments: String The string to 'strip' Returns: EFI_STATUS **/ STRING_LIST* SplitStringByWhitespace ( IN CHAR8 *String ) ; /** Routine Description: Creates and returns a 'split' STRING_LIST by splitting the string on whitespace boundaries. Arguments: String The string to 'split' Returns: EFI_STATUS **/ STRING_LIST* NewStringList ( ) ; /** Routine Description: Creates a new STRING_LIST with 0 strings. Returns: STRING_LIST* - Null if there is not enough resources to create the object. **/ EFI_STATUS AppendCopyOfStringToList ( IN OUT STRING_LIST **StringList, IN CHAR8 *String ) ; /** Routine Description: Adds String to StringList. A new copy of String is made before it is added to StringList. Returns: EFI_STATUS **/ EFI_STATUS RemoveLastStringFromList ( IN STRING_LIST *StringList ) ; /** Routine Description: Removes the last string from StringList and frees the memory associated with it. Arguments: StringList The string list to remove the string from Returns: EFI_STATUS **/ STRING_LIST* AllocateStringListStruct ( IN UINTN StringCount ) ; /** Routine Description: Allocates a STRING_LIST structure that can store StringCount strings. Arguments: StringCount The number of strings that need to be stored Returns: EFI_STATUS **/ VOID FreeStringList ( IN STRING_LIST *StringList ) ; /** Routine Description: Frees all memory associated with StringList. Arguments: StringList The string list to free Returns: EFI_STATUS **/ CHAR8* StringListToString ( IN STRING_LIST *StringList ) ; /** Routine Description: Generates a string that represents the STRING_LIST Arguments: StringList The string list to convert to a string Returns: CHAR8* - The string list represented with a single string. The returned string must be freed by the caller. **/ VOID PrintStringList ( IN STRING_LIST *StringList ) ; /** Routine Description: Prints out the string list Arguments: StringList The string list to print **/ #endif