* [PATCH] RedfishPkg/JsonLib: Add more JsonLib functions
@ 2021-07-28 4:56 Abner Chang
2021-08-08 12:58 ` Nickle Wang
0 siblings, 1 reply; 2+ messages in thread
From: Abner Chang @ 2021-07-28 4:56 UTC (permalink / raw)
To: devel; +Cc: Nickle Wang
Signed-off-by: Abner Chang <abner.chang@hpe.com>
Cc: Nickle Wang <nickle.wang@hpe.com>
---
RedfishPkg/Include/Library/JsonLib.h | 127 ++++++++++++++++++++--
RedfishPkg/Library/JsonLib/JsonLib.c | 156 ++++++++++++++++++++++++---
2 files changed, 261 insertions(+), 22 deletions(-)
diff --git a/RedfishPkg/Include/Library/JsonLib.h b/RedfishPkg/Include/Library/JsonLib.h
index 8a30c5250b..83959dd52a 100644
--- a/RedfishPkg/Include/Library/JsonLib.h
+++ b/RedfishPkg/Include/Library/JsonLib.h
@@ -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
diff --git a/RedfishPkg/Library/JsonLib/JsonLib.c b/RedfishPkg/Library/JsonLib/JsonLib.c
index c305a3767f..24e78c9d44 100644
--- a/RedfishPkg/Library/JsonLib/JsonLib.c
+++ b/RedfishPkg/Library/JsonLib/JsonLib.c
@@ -5,7 +5,7 @@
https://jansson.readthedocs.io/en/2.13/apiref.html
Copyright (c) 2018 - 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
**/
@@ -154,12 +154,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
)
{
@@ -186,6 +186,42 @@ JsonValueInitBoolean (
return (EDKII_JSON_VALUE)json_boolean (Value);
}
+/**
+ 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
+ )
+{
+ return (EDKII_JSON_VALUE)json_true();
+}
+
+/**
+ 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
+ )
+{
+ return (EDKII_JSON_VALUE)json_false();
+}
+
/**
The function is used to initialize a JSON value which contains a new JSON NULL,
or NULL on error.
@@ -314,6 +350,24 @@ JsonValueIsString (
return json_is_string ((json_t *) 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
+ )
+{
+ return json_is_integer ((json_t *) Json);
+}
+
/**
The function is used to return if the provided JSON value contains a JSON number.
@@ -329,7 +383,7 @@ JsonValueIsNumber (
IN EDKII_JSON_VALUE Json
)
{
- return json_is_integer ((json_t *) Json);
+ return json_is_number ((json_t *) Json);
}
/**
@@ -350,6 +404,47 @@ JsonValueIsBoolean (
return json_is_boolean ((json_t *) 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
+ )
+{
+ if (json_is_true ((json_t *)Json)) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/**
+ 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
+ )
+{
+ if (json_is_false ((json_t *)Json)) {
+ return TRUE;
+ }
+ return FALSE;
+}
/**
The function is used to return if the provided JSON value contains a JSON NULL.
@@ -485,24 +580,24 @@ 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
)
{
- ASSERT (Json != NULL && JsonValueIsNumber (Json));
- if (Json == NULL || !JsonValueIsNumber (Json)) {
+ ASSERT (Json != NULL && JsonValueIsInteger (Json));
+ if (Json == NULL || !JsonValueIsInteger (Json)) {
return 0;
}
@@ -830,6 +925,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.
@@ -837,12 +934,12 @@ JsonDumpString (
EDKII_JSON_VALUE
EFIAPI
JsonLoadString (
- IN CONST CHAR8* String
+ IN CONST CHAR8* String,
+ IN UINT64 Flags,
+ IN EDKII_JSON_ERROR *Error
)
{
- json_error_t JsonError;
-
- return (EDKII_JSON_VALUE) json_loads ((const char *)String, 0, &JsonError);
+ return (EDKII_JSON_VALUE) json_loads ((const char *)String, Flags, (json_error_t *)Error);
}
/**
@@ -959,6 +1056,7 @@ JsonObjectIteratorValue (
@retval Iterator pointer
**/
VOID *
+EFIAPI
JsonObjectIteratorNext (
IN EDKII_JSON_VALUE JsonValue,
IN VOID *Iterator
@@ -967,6 +1065,36 @@ JsonObjectIteratorNext (
return json_object_iter_next(JsonValue, Iterator);
}
+/**
+ Returns the key of iterator pointing
+
+ @param[in] Iterator Iterator pointer
+ @retval Key
+**/
+CHAR8 *
+EFIAPI
+JsonObjectIteratorKey (
+ IN VOID *Iterator
+)
+{
+ return json_object_iter_key(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
+)
+{
+ return json_object_key_to_iter(Key);
+}
+
/**
Returns the json type of this json value.
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] RedfishPkg/JsonLib: Add more JsonLib functions
2021-07-28 4:56 [PATCH] RedfishPkg/JsonLib: Add more JsonLib functions Abner Chang
@ 2021-08-08 12:58 ` Nickle Wang
0 siblings, 0 replies; 2+ messages in thread
From: Nickle Wang @ 2021-08-08 12:58 UTC (permalink / raw)
To: Chang, Abner (HPS SW/FW Technologist), devel@edk2.groups.io
Reviewed-by: Nickle Wang <nickle.wang@hpe.com>
I have question about copyright year format.
- (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
+ (C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
This should be "2020-2021", right?
Thanks,
Nickle
-----Original Message-----
From: Chang, Abner (HPS SW/FW Technologist) <abner.chang@hpe.com>
Sent: Wednesday, July 28, 2021 12:57 PM
To: devel@edk2.groups.io
Cc: Wang, Nickle (HPS SW) <nickle.wang@hpe.com>
Subject: [PATCH] RedfishPkg/JsonLib: Add more JsonLib functions
Signed-off-by: Abner Chang <abner.chang@hpe.com>
Cc: Nickle Wang <nickle.wang@hpe.com>
---
RedfishPkg/Include/Library/JsonLib.h | 127 ++++++++++++++++++++-- RedfishPkg/Library/JsonLib/JsonLib.c | 156 ++++++++++++++++++++++++---
2 files changed, 261 insertions(+), 22 deletions(-)
diff --git a/RedfishPkg/Include/Library/JsonLib.h b/RedfishPkg/Include/Library/JsonLib.h
index 8a30c5250b..83959dd52a 100644
--- a/RedfishPkg/Include/Library/JsonLib.h
+++ b/RedfishPkg/Include/Library/JsonLib.h
@@ -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
diff --git a/RedfishPkg/Library/JsonLib/JsonLib.c b/RedfishPkg/Library/JsonLib/JsonLib.c
index c305a3767f..24e78c9d44 100644
--- a/RedfishPkg/Library/JsonLib/JsonLib.c
+++ b/RedfishPkg/Library/JsonLib/JsonLib.c
@@ -5,7 +5,7 @@
https://jansson.readthedocs.io/en/2.13/apiref.html
Copyright (c) 2018 - 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 **/ @@ -154,12 +154,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
)
{
@@ -186,6 +186,42 @@ JsonValueInitBoolean (
return (EDKII_JSON_VALUE)json_boolean (Value); }
+/**
+ 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
+ )
+{
+ return (EDKII_JSON_VALUE)json_true(); }
+
+/**
+ 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
+ )
+{
+ return (EDKII_JSON_VALUE)json_false(); }
+
/**
The function is used to initialize a JSON value which contains a new JSON NULL,
or NULL on error.
@@ -314,6 +350,24 @@ JsonValueIsString (
return json_is_string ((json_t *) 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
+ )
+{
+ return json_is_integer ((json_t *) Json); }
+
/**
The function is used to return if the provided JSON value contains a JSON number.
@@ -329,7 +383,7 @@ JsonValueIsNumber (
IN EDKII_JSON_VALUE Json
)
{
- return json_is_integer ((json_t *) Json);
+ return json_is_number ((json_t *) Json);
}
/**
@@ -350,6 +404,47 @@ JsonValueIsBoolean (
return json_is_boolean ((json_t *) 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
+ )
+{
+ if (json_is_true ((json_t *)Json)) {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+/**
+ 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
+ )
+{
+ if (json_is_false ((json_t *)Json)) {
+ return TRUE;
+ }
+ return FALSE;
+}
/**
The function is used to return if the provided JSON value contains a JSON NULL.
@@ -485,24 +580,24 @@ 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
)
{
- ASSERT (Json != NULL && JsonValueIsNumber (Json));
- if (Json == NULL || !JsonValueIsNumber (Json)) {
+ ASSERT (Json != NULL && JsonValueIsInteger (Json)); if (Json == NULL
+ || !JsonValueIsInteger (Json)) {
return 0;
}
@@ -830,6 +925,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.
@@ -837,12 +934,12 @@ JsonDumpString (
EDKII_JSON_VALUE
EFIAPI
JsonLoadString (
- IN CONST CHAR8* String
+ IN CONST CHAR8* String,
+ IN UINT64 Flags,
+ IN EDKII_JSON_ERROR *Error
)
{
- json_error_t JsonError;
-
- return (EDKII_JSON_VALUE) json_loads ((const char *)String, 0, &JsonError);
+ return (EDKII_JSON_VALUE) json_loads ((const char *)String, Flags,
+ (json_error_t *)Error);
}
/**
@@ -959,6 +1056,7 @@ JsonObjectIteratorValue (
@retval Iterator pointer
**/
VOID *
+EFIAPI
JsonObjectIteratorNext (
IN EDKII_JSON_VALUE JsonValue,
IN VOID *Iterator
@@ -967,6 +1065,36 @@ JsonObjectIteratorNext (
return json_object_iter_next(JsonValue, Iterator); }
+/**
+ Returns the key of iterator pointing
+
+ @param[in] Iterator Iterator pointer
+ @retval Key
+**/
+CHAR8 *
+EFIAPI
+JsonObjectIteratorKey (
+ IN VOID *Iterator
+)
+{
+ return json_object_iter_key(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
+)
+{
+ return json_object_key_to_iter(Key);
+}
+
/**
Returns the json type of this json value.
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-08-08 12:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-28 4:56 [PATCH] RedfishPkg/JsonLib: Add more JsonLib functions Abner Chang
2021-08-08 12:58 ` Nickle Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox