| /** @file | |
| INI configuration parsing library. | |
| The INI file format is: | |
| ================ | |
| [SectionName] | |
| EntryName=EntryValue | |
| ================ | |
| Where: | |
| 1) SectionName is an ASCII string. The valid format is [A-Za-z0-9_]+ | |
| 2) EntryName is an ASCII string. The valid format is [A-Za-z0-9_]+ | |
| 3) EntryValue can be: | |
| 3.1) an ASCII String. The valid format is [A-Za-z0-9_]+ | |
| 3.2) a GUID. The valid format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, where x is [A-Fa-f0-9] | |
| 3.3) a decimal value. The valid format is [0-9]+ | |
| 3.4) a heximal value. The valid format is 0x[A-Fa-f0-9]+ | |
| 4) '#' or ';' can be used as comment at anywhere. | |
| 5) TAB(0x20) or SPACE(0x9) can be used as separator. | |
| 6) LF(\n, 0xA) or CR(\r, 0xD) can be used as line break. | |
| Copyright (c) 2016, 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 | |
| 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 __INI_PARSING_LIB_H__ | |
| #define __INI_PARSING_LIB_H__ | |
| /** | |
| Open an INI config file and return a context. | |
| @param[in] DataBuffer Config raw file buffer. | |
| @param[in] BufferSize Size of raw buffer. | |
| @return Config data buffer is opened and context is returned. | |
| @retval NULL No enough memory is allocated. | |
| @retval NULL Config data buffer is invalid. | |
| **/ | |
| VOID * | |
| EFIAPI | |
| OpenIniFile ( | |
| IN UINT8 *DataBuffer, | |
| IN UINTN BufferSize | |
| ); | |
| /** | |
| Get section entry string value. | |
| @param[in] Context INI Config file context. | |
| @param[in] SectionName Section name. | |
| @param[in] EntryName Section entry name. | |
| @param[out] EntryValue Point to the got entry string value. | |
| @retval EFI_SUCCESS Section entry string value is got. | |
| @retval EFI_NOT_FOUND Section is not found. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| GetStringFromDataFile ( | |
| IN VOID *Context, | |
| IN CHAR8 *SectionName, | |
| IN CHAR8 *EntryName, | |
| OUT CHAR8 **EntryValue | |
| ); | |
| /** | |
| Get section entry GUID value. | |
| @param[in] Context INI Config file context. | |
| @param[in] SectionName Section name. | |
| @param[in] EntryName Section entry name. | |
| @param[out] Guid Point to the got GUID value. | |
| @retval EFI_SUCCESS Section entry GUID value is got. | |
| @retval EFI_NOT_FOUND Section is not found. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| GetGuidFromDataFile ( | |
| IN VOID *Context, | |
| IN CHAR8 *SectionName, | |
| IN CHAR8 *EntryName, | |
| OUT EFI_GUID *Guid | |
| ); | |
| /** | |
| Get section entry decimal UINTN value. | |
| @param[in] Context INI Config file context. | |
| @param[in] SectionName Section name. | |
| @param[in] EntryName Section entry name. | |
| @param[out] Data Point to the got decimal UINTN value. | |
| @retval EFI_SUCCESS Section entry decimal UINTN value is got. | |
| @retval EFI_NOT_FOUND Section is not found. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| GetDecimalUintnFromDataFile ( | |
| IN VOID *Context, | |
| IN CHAR8 *SectionName, | |
| IN CHAR8 *EntryName, | |
| OUT UINTN *Data | |
| ); | |
| /** | |
| Get section entry heximal UINTN value. | |
| @param[in] Context INI Config file context. | |
| @param[in] SectionName Section name. | |
| @param[in] EntryName Section entry name. | |
| @param[out] Data Point to the got heximal UINTN value. | |
| @retval EFI_SUCCESS Section entry heximal UINTN value is got. | |
| @retval EFI_NOT_FOUND Section is not found. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| GetHexUintnFromDataFile ( | |
| IN VOID *Context, | |
| IN CHAR8 *SectionName, | |
| IN CHAR8 *EntryName, | |
| OUT UINTN *Data | |
| ); | |
| /** | |
| Get section entry heximal UINT64 value. | |
| @param[in] Context INI Config file context. | |
| @param[in] SectionName Section name. | |
| @param[in] EntryName Section entry name. | |
| @param[out] Data Point to the got heximal UINT64 value. | |
| @retval EFI_SUCCESS Section entry heximal UINT64 value is got. | |
| @retval EFI_NOT_FOUND Section is not found. | |
| **/ | |
| EFI_STATUS | |
| EFIAPI | |
| GetHexUint64FromDataFile ( | |
| IN VOID *Context, | |
| IN CHAR8 *SectionName, | |
| IN CHAR8 *EntryName, | |
| OUT UINT64 *Data | |
| ); | |
| /** | |
| Close an INI config file and free the context. | |
| @param[in] Context INI Config file context. | |
| **/ | |
| VOID | |
| EFIAPI | |
| CloseIniFile ( | |
| IN VOID *Context | |
| ); | |
| #endif | |