|
EDKII_JSON_VALUE EFIAPI | JsonValueInitArray (VOID) |
|
EDKII_JSON_VALUE EFIAPI | JsonValueInitObject (VOID) |
|
EDKII_JSON_VALUE EFIAPI | JsonValueInitAsciiString (IN CONST CHAR8 *String) |
|
EDKII_JSON_VALUE EFIAPI | JsonValueInitUnicodeString (IN CHAR16 *String) |
|
EDKII_JSON_VALUE EFIAPI | JsonValueInitInteger (IN INT64 Value) |
|
EDKII_JSON_VALUE EFIAPI | JsonValueInitBoolean (IN BOOLEAN Value) |
|
EDKII_JSON_VALUE EFIAPI | JsonValueInitTrue (VOID) |
|
EDKII_JSON_VALUE EFIAPI | JsonValueInitFalse (VOID) |
|
EDKII_JSON_VALUE EFIAPI | JsonValueInitNull (VOID) |
|
VOID EFIAPI | JsonValueFree (IN EDKII_JSON_VALUE Json) |
|
EDKII_JSON_VALUE EFIAPI | JsonValueClone (IN EDKII_JSON_VALUE Json) |
|
BOOLEAN EFIAPI | JsonValueIsArray (IN EDKII_JSON_VALUE Json) |
|
BOOLEAN EFIAPI | JsonValueIsObject (IN EDKII_JSON_VALUE Json) |
|
BOOLEAN EFIAPI | JsonValueIsString (IN EDKII_JSON_VALUE Json) |
|
BOOLEAN EFIAPI | JsonValueIsInteger (IN EDKII_JSON_VALUE Json) |
|
BOOLEAN EFIAPI | JsonValueIsNumber (IN EDKII_JSON_VALUE Json) |
|
BOOLEAN EFIAPI | JsonValueIsBoolean (IN EDKII_JSON_VALUE Json) |
|
BOOLEAN EFIAPI | JsonValueIsTrue (IN EDKII_JSON_VALUE Json) |
|
BOOLEAN EFIAPI | JsonValueIsFalse (IN EDKII_JSON_VALUE Json) |
|
BOOLEAN EFIAPI | JsonValueIsNull (IN EDKII_JSON_VALUE Json) |
|
EDKII_JSON_ARRAY EFIAPI | JsonValueGetArray (IN EDKII_JSON_VALUE Json) |
|
EDKII_JSON_OBJECT EFIAPI | JsonValueGetObject (IN EDKII_JSON_VALUE Json) |
|
CONST CHAR8 *EFIAPI | JsonValueGetAsciiString (IN EDKII_JSON_VALUE Json) |
|
CHAR16 *EFIAPI | JsonValueGetUnicodeString (IN EDKII_JSON_VALUE Json) |
|
INT64 EFIAPI | JsonValueGetInteger (IN EDKII_JSON_VALUE Json) |
|
BOOLEAN EFIAPI | JsonValueGetBoolean (IN EDKII_JSON_VALUE Json) |
|
CONST CHAR8 *EFIAPI | JsonValueGetString (IN EDKII_JSON_VALUE Json) |
|
UINTN EFIAPI | JsonObjectSize (IN EDKII_JSON_OBJECT JsonObject) |
|
EFI_STATUS EFIAPI | JsonObjectClear (IN EDKII_JSON_OBJECT JsonObject) |
|
CHAR8 ** | JsonObjectGetKeys (IN EDKII_JSON_OBJECT JsonObj, OUT UINTN *KeyCount) |
|
EDKII_JSON_VALUE EFIAPI | JsonObjectGetValue (IN CONST EDKII_JSON_OBJECT JsonObj, IN CONST CHAR8 *Key) |
|
EFI_STATUS EFIAPI | JsonObjectSetValue (IN EDKII_JSON_OBJECT JsonObj, IN CONST CHAR8 *Key, IN EDKII_JSON_VALUE Json) |
|
EFI_STATUS EFIAPI | JsonObjectDelete (IN EDKII_JSON_OBJECT JsonObj, IN CONST CHAR8 *Key) |
|
UINTN EFIAPI | JsonArrayCount (IN EDKII_JSON_ARRAY JsonArray) |
|
EDKII_JSON_VALUE EFIAPI | JsonArrayGetValue (IN EDKII_JSON_ARRAY JsonArray, IN UINTN Index) |
|
EFI_STATUS EFIAPI | JsonArrayAppendValue (IN EDKII_JSON_ARRAY JsonArray, IN EDKII_JSON_VALUE Json) |
|
EFI_STATUS EFIAPI | JsonArrayRemoveValue (IN EDKII_JSON_ARRAY JsonArray, IN UINTN Index) |
|
CHAR8 *EFIAPI | JsonDumpString (IN EDKII_JSON_VALUE JsonValue, IN UINTN Flags) |
|
EDKII_JSON_VALUE EFIAPI | JsonLoadString (IN CONST CHAR8 *String, IN UINT64 Flags, IN EDKII_JSON_ERROR *Error) |
|
EDKII_JSON_VALUE EFIAPI | JsonLoadBuffer (IN CONST CHAR8 *Buffer, IN UINTN BufferLen, IN UINTN Flags, IN OUT EDKII_JSON_ERROR *Error) |
|
VOID EFIAPI | JsonDecreaseReference (IN EDKII_JSON_VALUE JsonValue) |
|
EDKII_JSON_VALUE EFIAPI | JsonIncreaseReference (IN EDKII_JSON_VALUE JsonValue) |
|
VOID *EFIAPI | JsonObjectIterator (IN EDKII_JSON_VALUE JsonValue) |
|
EDKII_JSON_VALUE EFIAPI | JsonObjectIteratorValue (IN VOID *Iterator) |
|
VOID *EFIAPI | JsonObjectIteratorNext (IN EDKII_JSON_VALUE JsonValue, IN VOID *Iterator) |
|
CHAR8 *EFIAPI | JsonObjectIteratorKey (IN VOID *Iterator) |
|
VOID *EFIAPI | JsonObjectKeyToIterator (IN CHAR8 *Key) |
|
EDKII_JSON_TYPE EFIAPI | JsonGetType (IN EDKII_JSON_VALUE JsonValue) |
|
EFI_STATUS EFIAPI | JsonLibConstructor (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable) |
|
APIs for JSON operations. The fuctions provided by this library are the wrapper to native open source jansson library. See below document for the API reference. https://jansson.readthedocs.io/en/2.13/apiref.html
Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.
(C) Copyright 2021 Hewlett Packard Enterprise Development LP
Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved. Copyright (c) 2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file JsonLib.c.
EDKII_JSON_VALUE EFIAPI JsonArrayGetValue |
( |
IN EDKII_JSON_ARRAY |
JsonArray, |
|
|
IN UINTN |
Index |
|
) |
| |
The function is used to return the JSON value in the array at position index. The valid range for this index is from 0 to the return value of JsonArrayCount() minus 1.
It only returns a reference to this value and any changes on this value will impact the original JSON object. If that is not expected, please call JsonValueClone() to clone it to use.
If this array is NULL or not a JSON array, or if index is out of range, NULL will be returned.
- Parameters
-
[in] | JsonArray | The provided JSON Array. |
- Return values
-
Return | the JSON value located in the Index position or NULL if JsonArray is not an array or no items in the array. |
Definition at line 873 of file JsonLib.c.
VOID EFIAPI JsonDecreaseReference |
( |
IN EDKII_JSON_VALUE |
JsonValue | ) |
|
The reference count is used to track whether a value is still in use or not. When a value is created, it's reference count is set to 1. when the value is no longer needed, the reference count is decremented. When the reference count drops to zero, there are no references left and the value can be destroyed.
This function decrement the reference count of EDKII_JSON_VALUE. As soon as a call to json_decref() drops the reference count to zero, the value is destroyed and it can no longer be used.
- Parameters
-
Definition at line 1046 of file JsonLib.c.
EDKII_JSON_VALUE EFIAPI JsonIncreaseReference |
( |
IN EDKII_JSON_VALUE |
JsonValue | ) |
|
The reference count is used to track whether a value is still in use or not. When a value is created, it's reference count is set to 1. If a reference to a value is kept (e.g. a value is stored somewhere for later use), its reference count is incremented.
This function increment the reference count of json if it's not NULL. Returns EDKII_JSON_VALUE.
- Parameters
-
- Return values
-
EDKII_JSON_VALUE | of itself |
Definition at line 1067 of file JsonLib.c.
Convert a string to JSON object. The function is used to convert a NULL terminated CHAR8 string to a JSON value. Only object and array represented strings can be converted successfully, since they are the only valid root values of a JSON text for UEFI usage.
Real number and number with exponent part are not supported by UEFI.
Caller needs to cleanup the root value by calling JsonValueFree().
- Parameters
-
[in] | String | The NULL terminated CHAR8 string to convert. |
[in] | Flags | Flags for loading JSON string. |
[in] | Error | Returned error status. |
- Return values
-
Array | JSON value or object JSON value, or NULL when any error occurs. |
Definition at line 991 of file JsonLib.c.
EDKII_JSON_VALUE EFIAPI JsonObjectGetValue |
( |
IN CONST EDKII_JSON_OBJECT |
JsonObj, |
|
|
IN CONST CHAR8 * |
Key |
|
) |
| |
The function is used to get a JSON value corresponding to the input key from a JSON object.
It only returns a reference to this value and any changes on this value will impact the original JSON object. If that is not expected, please call JsonValueClone() to clone it to use.
Input key must be a valid NULL terminated UTF8 encoded string. NULL will be returned when Key-Value is not found in this JSON object.
- Parameters
-
[in] | JsonObj | The provided JSON object. |
[in] | Key | The key of the JSON value to be retrieved. |
- Return values
-
Return | the corresponding JSON value to key, or NULL on error. |
Definition at line 772 of file JsonLib.c.
EFI_STATUS EFIAPI JsonObjectSetValue |
( |
IN EDKII_JSON_OBJECT |
JsonObj, |
|
|
IN CONST CHAR8 * |
Key, |
|
|
IN EDKII_JSON_VALUE |
Json |
|
) |
| |
The function is used to set a JSON value corresponding to the input key from a JSON object, and the reference count of this value will be increased by 1.
Input key must be a valid NULL terminated UTF8 encoded string. If there already is a value for this key, this key will be assigned to the new JSON value. The old JSON value will be removed from this object and thus its' reference count will be decreased by 1.
More details for reference count strategy can refer to the API description for JsonValueFree().
- Parameters
-
[in] | JsonObj | The provided JSON object. |
[in] | Key | The key of the JSON value to be set. |
[in] | Json | The JSON value to set to this JSON object mapped by key. |
- Return values
-
EFI_ABORTED | Some error occur and operation aborted. |
EFI_SUCCESS | The JSON value has been set to this JSON object. |
Definition at line 800 of file JsonLib.c.
EDKII_JSON_VALUE EFIAPI JsonValueClone |
( |
IN EDKII_JSON_VALUE |
Json | ) |
|
The function is used to create a fresh copy of a JSON value, and all child values are deep copied in a recursive fashion. It should be called when this JSON value might be modified in later use, but the original still wants to be used in somewhere else.
Reference counts of the returned root JSON value and all child values will be set to 1, and caller needs to cleanup the root value by calling JsonValueFree().
Note: Since this function performs a copy from bottom to up, too many calls may cause some performance issues, user should avoid unnecessary calls to this function unless it is really needed.
- Parameters
-
[in] | Json | The JSON value to be cloned. |
- Return values
-
Return | the cloned JSON value, or NULL on error. |
Definition at line 295 of file JsonLib.c.
VOID EFIAPI JsonValueFree |
( |
IN EDKII_JSON_VALUE |
Json | ) |
|
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. If this destroyed value is object type or array type, reference counts for all containing JSON values will be decreased by 1. Boolean JSON value and NULL JSON value won't be destroyed since they are static values kept in memory.
Reference Count Strategy: BaseJsonLib uses this strategy to track whether a value is still in use or not. When a value is created, it's reference count is set to 1. If a reference to a value is kept for use, its reference count is incremented, and when the value is no longer needed, the reference count is decremented. When the reference count drops to zero, there are no references left, and the value can be destroyed.
The given JSON value maybe NULL and not causing any problem. Just output the debug message to inform caller the NULL value is passed in.
- Parameters
-
[in] | Json | The JSON value to be freed. json_decref may return without any changes if Json is NULL. |
Definition at line 269 of file JsonLib.c.
EDKII_JSON_VALUE EFIAPI JsonValueInitArray |
( |
VOID |
| ) |
|
The function is used to initialize a JSON value which contains a new JSON array, or NULL on error. Initially, the array is empty.
The reference count of this value will be set to 1, and caller needs to cleanup the value by calling JsonValueFree().
More details for reference count strategy can refer to the API description for JsonValueFree().
- Return values
-
The | created JSON value which contains a JSON array or NULL if initial a JSON array is failed. |
Definition at line 39 of file JsonLib.c.
EDKII_JSON_VALUE EFIAPI JsonValueInitAsciiString |
( |
IN CONST CHAR8 * |
String | ) |
|
The function is used to initialize a JSON value which contains a new JSON string, or NULL on error.
The input string must be NULL terminated Ascii format, non-Ascii characters will be processed as an error. Unicode characters can also be represented by Ascii string as the format: \u + 4 hexadecimal digits, like \u3E5A, or \u003F.
The reference count of this value will be set to 1, and caller needs to cleanup the value by calling JsonValueFree().
More details for reference count strategy can refer to the API description for JsonValueFree().
- Parameters
-
[in] | String | The Ascii string to initialize to JSON value |
- Return values
-
The | created JSON value which contains a JSON string or NULL. Select a Getter API for a specific encoding format. |
Definition at line 89 of file JsonLib.c.
EDKII_JSON_VALUE EFIAPI JsonValueInitInteger |
( |
IN INT64 |
Value | ) |
|
The function is used to initialize a JSON value which contains a new JSON integer, or NULL on error.
The reference count of this value will be set to 1, and caller needs to cleanup the value by calling JsonValueFree().
More details for reference count strategy can refer to the API description for JsonValueFree().
- Parameters
-
[in] | Value | The integer to initialize to JSON value |
- Return values
-
The | created JSON value which contains a JSON integer or NULL. |
Definition at line 166 of file JsonLib.c.
EDKII_JSON_VALUE EFIAPI JsonValueInitObject |
( |
VOID |
| ) |
|
The function is used to initialize a JSON value which contains a new JSON object, or NULL on error. Initially, the object is empty.
The reference count of this value will be set to 1, and caller needs to cleanup the value by calling JsonValueFree().
More details for reference count strategy can refer to the API description for JsonValueFree().
- Return values
-
The | created JSON value which contains a JSON object or NULL if initial a JSON object is failed. |
Definition at line 61 of file JsonLib.c.
EDKII_JSON_VALUE EFIAPI JsonValueInitUnicodeString |
( |
IN CHAR16 * |
String | ) |
|
The function is used to initialize a JSON value which contains a new JSON string, or NULL on error.
The input must be a NULL terminated UCS2 format Unicode string.
The reference count of this value will be set to 1, and caller needs to cleanup the value by calling JsonValueFree().
More details for reference count strategy can refer to the API description for JsonValueFree().
- Parameters
-
[in] | String | The Unicode string to initialize to JSON value |
- Return values
-
The | created JSON value which contains a JSON string or NULL. Select a Getter API for a specific encoding format. |
Definition at line 130 of file JsonLib.c.