File-Raw-JSON
view release on metacpan or search on metacpan
include/yyjson.h view on Meta::CPAN
#ifndef YYJSON_HAS_STDINT_H
#endif
/* Define as 1 to include <stdbool.h> for compiler which doesn't support C99. */
#ifndef YYJSON_HAS_STDBOOL_H
#endif
/*==============================================================================
* Compiler Macros
*============================================================================*/
/** compiler version (MSVC) */
#ifdef _MSC_VER
# define YYJSON_MSC_VER _MSC_VER
#else
# define YYJSON_MSC_VER 0
#endif
/** compiler version (GCC) */
include/yyjson.h view on Meta::CPAN
*/
yyjson_api_inline bool yyjson_arr_iter_has_next(yyjson_arr_iter *iter);
/**
Returns the next element in the iteration, or NULL on end.
If `iter` is NULL, this function will return NULL.
*/
yyjson_api_inline yyjson_val *yyjson_arr_iter_next(yyjson_arr_iter *iter);
/**
Macro for iterating over an array.
It works like iterator, but with a more intuitive API.
@par Example
@code
size_t idx, max;
yyjson_val *val;
yyjson_arr_foreach(arr, idx, max, val) {
your_func(idx, val);
}
@endcode
include/yyjson.h view on Meta::CPAN
@return The value to which the specified key is mapped.
NULL if this object contains no mapping for the key or input is invalid.
@warning This function takes a linear search time if the key is not nearby.
*/
yyjson_api_inline yyjson_val *yyjson_obj_iter_getn(yyjson_obj_iter *iter,
const char *key,
size_t key_len);
/**
Macro for iterating over an object.
It works like iterator, but with a more intuitive API.
@par Example
@code
size_t idx, max;
yyjson_val *key, *val;
yyjson_obj_foreach(obj, idx, max, key, val) {
your_func(key, val);
}
@endcode
include/yyjson.h view on Meta::CPAN
yyjson_mut_arr_iter *iter);
/**
Removes and returns current element in the iteration.
If `iter` is NULL, this function will return NULL.
*/
yyjson_api_inline yyjson_mut_val *yyjson_mut_arr_iter_remove(
yyjson_mut_arr_iter *iter);
/**
Macro for iterating over an array.
It works like iterator, but with a more intuitive API.
@warning You should not modify the array while iterating over it.
@par Example
@code
size_t idx, max;
yyjson_mut_val *val;
yyjson_mut_arr_foreach(arr, idx, max, val) {
your_func(idx, val);
include/yyjson.h view on Meta::CPAN
@param key_len The the length of `key`, in bytes.
@return The value to which the specified key is mapped.
NULL if this object contains no mapping for the key or input is invalid.
@warning This function takes a linear search time if the key is not nearby.
*/
yyjson_api_inline yyjson_mut_val *yyjson_mut_obj_iter_getn(
yyjson_mut_obj_iter *iter, const char *key, size_t key_len);
/**
Macro for iterating over an object.
It works like iterator, but with a more intuitive API.
@warning You should not modify the object while iterating over it.
@par Example
@code
size_t idx, max;
yyjson_val *key, *val;
yyjson_obj_foreach(obj, idx, max, key, val) {
your_func(key, val);
#ifndef YYJSON_DISABLE_NON_STANDARD
#define YYJSON_DISABLE_NON_STANDARD 0
#endif
#ifndef YYJSON_DISABLE_UTF8_VALIDATION
#define YYJSON_DISABLE_UTF8_VALIDATION 0
#endif
/*==============================================================================
* Macros
*============================================================================*/
/* Macros used for loop unrolling and other purpose. */
#define repeat2(x) { x x }
#define repeat3(x) { x x x }
#define repeat4(x) { x x x x }
#define repeat8(x) { x x x x x x x x }
#define repeat16(x) { x x x x x x x x x x x x x x x x }
#define repeat2_incr(x) { x(0) x(1) }
#define repeat4_incr(x) { x(0) x(1) x(2) x(3) }
#define repeat8_incr(x) { x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) }
#define repeat16_incr(x) { x(0) x(1) x(2) x(3) x(4) x(5) x(6) x(7) \
x(8) x(9) x(10) x(11) x(12) x(13) x(14) x(15) }
#define repeat_in_1_18(x) { x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(8) \
x(9) x(10) x(11) x(12) x(13) x(14) x(15) x(16) \
x(17) x(18) }
/* Macros used to provide branch prediction information for compiler. */
#undef likely
#define likely(x) yyjson_likely(x)
#undef unlikely
#define unlikely(x) yyjson_unlikely(x)
/* Macros used to provide inline information for compiler. */
#undef static_inline
#define static_inline static yyjson_inline
#undef static_noinline
#define static_noinline static yyjson_noinline
/* Macros for min and max. */
#undef yyjson_min
#define yyjson_min(x, y) ((x) < (y) ? (x) : (y))
#undef yyjson_max
#define yyjson_max(x, y) ((x) > (y) ? (x) : (y))
/* Used to write u64 literal for C89 which doesn't support "ULL" suffix. */
#undef U64
#define U64(hi, lo) ((((u64)hi##UL) << 32U) + lo##UL)
/* Used to cast away (remove) const qualifier. */
( run in 1.586 second using v1.01-cache-2.11-cpan-5c0b1e786e0 )