| /** @file | |
| Configuration Manager Object parser. | |
| Copyright (c) 2021, ARM Limited. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| **/ | |
| #ifndef CONFIGURATION_MANAGER_OBJECT_PARSER_H_ | |
| #define CONFIGURATION_MANAGER_OBJECT_PARSER_H_ | |
| #define OUTPUT_FIELD_COLUMN_WIDTH 32 | |
| /** Function prototype to format a field print. | |
| @param [in] Format Format string for tracing the data as specified by | |
| the 'Format' member of ACPI_PARSER. | |
| @param [in] Ptr Pointer to the start of the buffer. | |
| **/ | |
| typedef VOID (EFIAPI *FNPTR_PRINT_FORMATTER)(CONST CHAR8 *Format, UINT8 *Ptr); | |
| /** | |
| The CM_OBJ_PARSER structure describes the fields of an CmObject and | |
| provides means for the parser to interpret and trace appropriately. | |
| ParseAcpi() uses the format string specified by 'Format' for tracing | |
| the field data. | |
| */ | |
| typedef struct CmObjParser CM_OBJ_PARSER; | |
| struct CmObjParser { | |
| /// String describing the Cm Object | |
| CONST CHAR8 *NameStr; | |
| /// The length of the field. | |
| UINT32 Length; | |
| /// Optional Print() style format string for tracing the data. If not | |
| /// used this must be set to NULL. | |
| CONST CHAR8 *Format; | |
| /// Optional pointer to a print formatter function which | |
| /// is typically used to trace complex field information. | |
| /// If not used this must be set to NULL. | |
| /// The Format string is passed to the PrintFormatter function | |
| /// but may be ignored by the implementation code. | |
| FNPTR_PRINT_FORMATTER PrintFormatter; | |
| /// Optional pointer to print the fields of another CM_OBJ_PARSER | |
| /// structure. This is useful to print sub-structures. | |
| CONST CM_OBJ_PARSER *SubObjParser; | |
| /// Count of items in the SubObj. | |
| UINTN SubObjItemCount; | |
| }; | |
| /** | |
| A structure mapping an array of Configuration Manager Object parsers | |
| with their object names. | |
| */ | |
| typedef struct CmObjParserArray { | |
| /// Object name | |
| CONST CHAR8 *ObjectName; | |
| /// Function pointer to the parser | |
| CONST CM_OBJ_PARSER *Parser; | |
| /// Count of items | |
| UINTN ItemCount; | |
| } CM_OBJ_PARSER_ARRAY; | |
| #endif // CONFIGURATION_MANAGER_OBJECT_PARSER_H_ |