blob: 87cd429437f48349261c14c30eaaa226a13b71ca [file] [log] [blame]
Lawrence Tangd34f2b12022-07-19 15:36:31 +01001/**
2 * Defines utility functions for testing CPER-JSON IR output from the cper-parse library.
3 *
4 * Author: Lawrence.Tang@arm.com
5 **/
6
7#include <stdio.h>
8#include <stdlib.h>
9#include "test-utils.hpp"
10extern "C" {
11#include "../edk/BaseTypes.h"
12#include "../generator/cper-generate.h"
13}
14
15//Returns a ready-for-use memory stream containing a CPER record with the given sections inside.
Lawrence Tange407b4c2022-07-21 13:54:01 +010016FILE *generate_record_memstream(const char **types, UINT16 num_types,
Lawrence Tanga4f662f2022-08-08 14:37:36 +010017 char **buf, size_t *buf_size, int single_section)
Lawrence Tangd34f2b12022-07-19 15:36:31 +010018{
Lawrence Tange407b4c2022-07-21 13:54:01 +010019 //Open a memory stream.
20 FILE *stream = open_memstream(buf, buf_size);
Lawrence Tangd34f2b12022-07-19 15:36:31 +010021
Lawrence Tange407b4c2022-07-21 13:54:01 +010022 //Generate a section to the stream, close & return.
Lawrence Tanga4f662f2022-08-08 14:37:36 +010023 if (!single_section)
24 generate_cper_record((char **)types, num_types, stream);
25 else
26 generate_single_section_record((char*)types[0], stream);
Lawrence Tange407b4c2022-07-21 13:54:01 +010027 fclose(stream);
Lawrence Tangd34f2b12022-07-19 15:36:31 +010028
Lawrence Tange407b4c2022-07-21 13:54:01 +010029 //Return fmemopen() buffer for reading.
30 return fmemopen(*buf, *buf_size, "r");
Lawrence Tangd34f2b12022-07-19 15:36:31 +010031}