mirror of
https://github.com/lbgos/rift-s-linux.git
synced 2026-10-27 14:01:30 +01:00
u_json: Add array helper.
This commit is contained in:
1 parent
b3e84f9041
commit
798fa623ea
2 files changed
+60
-2
No files matched your search
@@ -1,10 +1,49 @@
|
||||
// Copyright 2019, Collabora, Ltd.
|
||||
// Copyright 2019-2020, Collabora, Ltd.
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
/*!
|
||||
* @file
|
||||
* @brief Tiny JSON wrapper around cJSON.
|
||||
* @author Jakob Bornecrantz <jakob@collabora.com>
|
||||
* @author Ryan Pavlik <ryan.pavlik@collabora.com>
|
||||
* @ingroup aux_util
|
||||
*/
|
||||
|
||||
#include "u_json.h"
|
||||
|
||||
#include "cjson/cJSON.c"
|
||||
|
||||
size_t
|
||||
u_json_get_double_array(const cJSON *json_array,
|
||||
double *out_array,
|
||||
size_t max_size)
|
||||
{
|
||||
if (!json_array) {
|
||||
return 0;
|
||||
}
|
||||
if (!out_array) {
|
||||
return 0;
|
||||
}
|
||||
if (!cJSON_IsArray(json_array)) {
|
||||
return 0;
|
||||
}
|
||||
if (max_size == 0) {
|
||||
return 0;
|
||||
}
|
||||
size_t i = 0;
|
||||
const cJSON *elt;
|
||||
cJSON_ArrayForEach(elt, json_array)
|
||||
{
|
||||
if (!cJSON_IsNumber(elt)) {
|
||||
fprintf(stderr,
|
||||
"warning: u_json_get_double_array got a "
|
||||
"non-number in a numeric array");
|
||||
return i;
|
||||
}
|
||||
out_array[i] = elt->valuedouble;
|
||||
++i;
|
||||
if (i == max_size) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return i;
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
// Copyright 2019, Collabora, Ltd.
|
||||
// Copyright 2019-2020, Collabora, Ltd.
|
||||
// SPDX-License-Identifier: BSL-1.0
|
||||
/*!
|
||||
* @file
|
||||
* @brief Tiny JSON wrapper around cJSON header.
|
||||
* @author Jakob Bornecrantz <jakob@collabora.com>
|
||||
* @author Ryan Pavlik <ryan.pavlik@collabora.com>
|
||||
* @ingroup aux_util
|
||||
*/
|
||||
|
||||
@@ -12,3 +13,21 @@
|
||||
#include "xrt/xrt_compiler.h"
|
||||
|
||||
#include "cjson/cJSON.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif // __cplusplus
|
||||
|
||||
/*!
|
||||
* @brief Parse up to max_size doubles from a JSON array.
|
||||
*
|
||||
* @return the number of elements set.
|
||||
*/
|
||||
size_t
|
||||
u_json_get_double_array(const cJSON *json_array,
|
||||
double *out_array,
|
||||
size_t max_size);
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif // __cplusplus
|
||||
Reference in new issue
Block a user