/** @file Metadata Object Library. Copyright (c) 2025, Arm Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef METADATA_OBJ_H_ #define METADATA_OBJ_H_ #include /** Metadata Entry. Store the generated Metadata along the associated CmObj/Token in this structure. **/ typedef struct MetadataEntry { /// List entry LIST_ENTRY List; /// Metadata Type METADATA_TYPE Type; /// Token CM_OBJECT_TOKEN Token; /// Metadata. Must be interpreted per-METADATA_TYPE VOID *Metadata; } METADATA_ENTRY; /** Metadata Object Type. There is one entry for for each METADATA_TYPE. **/ typedef struct MetadataList { /// Per-METADATA_TYPE list of METADATA_ENTRY struct LIST_ENTRY List; } METADATA_LIST; /** Metadata static information. There is one entry for for each METADATA_TYPE. **/ typedef struct MetadataStaticInfo { /// Expected size for this METADATA_TYPE UINT32 ExpectedSize; } METADATA_STATIC_INFO; /** Metadata Root. All the METADATA_ENTRY are attached to a root. **/ typedef struct MetadataRoot { /// Array of METADATA_LIST. One entry for each MetadataType. METADATA_LIST MetadataList[MetadataTypeMax]; } METADATA_ROOT; #endif // METADATA_OBJ_H_