RedfishPkg/JsonLib: Add more JsonLib functions
Signed-off-by: Abner Chang <abner.chang@hpe.com> Cc: Nickle Wang <nickle.wang@hpe.com> Reviewed-by: Nickle Wang <nickle.wang@hpe.com>
This commit is contained in:
committed by
mergify[bot]
parent
d02dbb53cd
commit
a7ddc7847c
@@ -2,7 +2,7 @@
|
||||
APIs for JSON operations.
|
||||
|
||||
Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
|
||||
(C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
|
||||
(C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
|
||||
|
||||
SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
|
||||
@@ -53,6 +53,13 @@ typedef INT64 EDKII_JSON_INT_T; // #JSON_INTEGER_IS_LONG_LONG is set to 1
|
||||
Index < JsonArrayCount(Array) && (Value = JsonArrayGetValue(Array, Index)); \
|
||||
Index++)
|
||||
|
||||
#define EDKII_JSON_OBJECT_FOREACH_SAFE(Object, N, Key, Value) \
|
||||
for (Key = JsonObjectIteratorKey(JsonObjectIterator(Object)), \
|
||||
N = JsonObjectIteratorNext(Object, JsonObjectKeyToIterator(Key)); \
|
||||
Key && (Value = JsonObjectIteratorValue(JsonObjectKeyToIterator(Key))); \
|
||||
Key = JsonObjectIteratorKey(N), \
|
||||
N = JsonObjectIteratorNext(Object, JsonObjectKeyToIterator(Key)))
|
||||
|
||||
///
|
||||
/// Map to the json_error_t in jansson.h
|
||||
///
|
||||
@@ -177,12 +184,12 @@ JsonValueInitUnicodeString (
|
||||
|
||||
@param[in] Value The integer to initialize to JSON value
|
||||
|
||||
@retval The created JSON value which contains a JSON number or NULL.
|
||||
@retval The created JSON value which contains a JSON integer or NULL.
|
||||
|
||||
**/
|
||||
EDKII_JSON_VALUE
|
||||
EFIAPI
|
||||
JsonValueInitNumber (
|
||||
JsonValueInitInteger (
|
||||
IN INT64 Value
|
||||
);
|
||||
|
||||
@@ -218,6 +225,36 @@ JsonValueInitNull (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
The function is used to initialize a JSON value which contains a TRUE JSON value,
|
||||
or NULL on error.
|
||||
|
||||
NULL JSON value is kept as static value, and no need to do any cleanup work.
|
||||
|
||||
@retval The created JSON TRUE value.
|
||||
|
||||
**/
|
||||
EDKII_JSON_VALUE
|
||||
EFIAPI
|
||||
JsonValueInitTrue (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
The function is used to initialize a JSON value which contains a FALSE JSON value,
|
||||
or NULL on error.
|
||||
|
||||
NULL JSON value is kept as static value, and no need to do any cleanup work.
|
||||
|
||||
@retval The created JSON FALSE value.
|
||||
|
||||
**/
|
||||
EDKII_JSON_VALUE
|
||||
EFIAPI
|
||||
JsonValueInitFalse (
|
||||
VOID
|
||||
);
|
||||
|
||||
/**
|
||||
The function is used to decrease the reference count of a JSON value by one, and once
|
||||
this reference count drops to zero, the value is destroyed and it can no longer be used.
|
||||
@@ -313,6 +350,21 @@ JsonValueIsString (
|
||||
IN EDKII_JSON_VALUE Json
|
||||
);
|
||||
|
||||
/**
|
||||
The function is used to return if the provided JSON value contains a JSON integer.
|
||||
|
||||
@param[in] Json The provided JSON value.
|
||||
|
||||
@retval TRUE The JSON value is contains JSON integer.
|
||||
@retval FALSE The JSON value doesn't contain a JSON integer.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
JsonValueIsInteger (
|
||||
IN EDKII_JSON_VALUE Json
|
||||
);
|
||||
|
||||
/**
|
||||
The function is used to return if the provided JSON value contains a JSON number.
|
||||
|
||||
@@ -343,6 +395,36 @@ JsonValueIsBoolean (
|
||||
IN EDKII_JSON_VALUE Json
|
||||
);
|
||||
|
||||
/**
|
||||
The function is used to return if the provided JSON value contains a TRUE value.
|
||||
|
||||
@param[in] Json The provided JSON value.
|
||||
|
||||
@retval TRUE The JSON value contains a TRUE value.
|
||||
@retval FALSE The JSON value doesn't contain a TRUE value.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
JsonValueIsTrue (
|
||||
IN EDKII_JSON_VALUE Json
|
||||
);
|
||||
|
||||
/**
|
||||
The function is used to return if the provided JSON value contains a FALSE value.
|
||||
|
||||
@param[in] Json The provided JSON value.
|
||||
|
||||
@retval TRUE The JSON value contains a FALSE value.
|
||||
@retval FALSE The JSON value doesn't contain a FALSE value.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
JsonValueIsFalse (
|
||||
IN EDKII_JSON_VALUE Json
|
||||
);
|
||||
|
||||
/**
|
||||
The function is used to return if the provided JSON value contains a JSON NULL.
|
||||
|
||||
@@ -424,19 +506,19 @@ JsonValueGetUnicodeString (
|
||||
);
|
||||
|
||||
/**
|
||||
The function is used to retrieve the associated integer in a number type JSON value.
|
||||
The function is used to retrieve the associated integer in a integer type JSON value.
|
||||
|
||||
The input JSON value should not be NULL or contain no JSON number, otherwise it will
|
||||
The input JSON value should not be NULL or contain no JSON Integer, otherwise it will
|
||||
ASSERT() and return 0.
|
||||
|
||||
@param[in] Json The provided JSON value.
|
||||
|
||||
@retval Return the associated number in JSON value.
|
||||
@retval Return the associated Integer in JSON value.
|
||||
|
||||
**/
|
||||
INT64
|
||||
EFIAPI
|
||||
JsonValueGetNumber (
|
||||
JsonValueGetInteger (
|
||||
IN EDKII_JSON_VALUE Json
|
||||
);
|
||||
|
||||
@@ -675,6 +757,8 @@ JsonDumpString (
|
||||
Caller needs to cleanup the root value by calling JsonValueFree().
|
||||
|
||||
@param[in] String The NULL terminated CHAR8 string to convert.
|
||||
@param[in] Flags Flags for loading JSON string.
|
||||
@param[in] Error Returned error status.
|
||||
|
||||
@retval Array JSON value or object JSON value, or NULL when any error occurs.
|
||||
|
||||
@@ -682,7 +766,9 @@ JsonDumpString (
|
||||
EDKII_JSON_VALUE
|
||||
EFIAPI
|
||||
JsonLoadString (
|
||||
IN CONST CHAR8* String
|
||||
IN CONST CHAR8* String,
|
||||
IN UINT64 Flags,
|
||||
IN EDKII_JSON_ERROR *Error
|
||||
);
|
||||
|
||||
/**
|
||||
@@ -781,11 +867,36 @@ JsonObjectIteratorValue (
|
||||
@retval Iterator pointer
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
JsonObjectIteratorNext (
|
||||
IN EDKII_JSON_VALUE JsonValue,
|
||||
IN VOID *Iterator
|
||||
);
|
||||
|
||||
/**
|
||||
Returns the key of iterator pointing
|
||||
|
||||
@param[in] Iterator Iterator pointer
|
||||
@retval Key
|
||||
**/
|
||||
CHAR8 *
|
||||
EFIAPI
|
||||
JsonObjectIteratorKey (
|
||||
IN VOID *Iterator
|
||||
);
|
||||
|
||||
/**
|
||||
Returns the pointer of iterator by key.
|
||||
|
||||
@param[in] Key The key of interator pointer.
|
||||
@retval Pointer to interator
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
JsonObjectKeyToIterator (
|
||||
IN CHAR8 *Key
|
||||
);
|
||||
|
||||
/**
|
||||
Returns the json type of this json value
|
||||
|
||||
|
Reference in New Issue
Block a user