--- libelwix/inc/elwix/ajson.h 2018/06/08 13:08:37 1.6.6.1 +++ libelwix/inc/elwix/ajson.h 2024/12/04 17:47:28 1.8 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: ajson.h,v 1.6.6.1 2018/06/08 13:08:37 misho Exp $ +* $Id: ajson.h,v 1.8 2024/12/04 17:47:28 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -12,7 +12,7 @@ terms: All of the documentation and software included in the ELWIX and AITNET Releases is copyrighted by ELWIX - Sofia/Bulgaria -Copyright 2004 - 2018 +Copyright 2004 - 2024 by Michael Pounov . All rights reserved. Redistribution and use in source and binary forms, with or without @@ -136,6 +136,7 @@ ait_val_t *json_token2val(const char *jstr, jtok_t * _ * @return =NULL error or !=NULL allocated str, after use should be json_freestr()|e_free() */ char *json_token2str(const char *jstr, jtok_t * __restrict tok); +#define json_token2obj json_token2str #define json_freestr(x) e_free((x)) /* * json_token2num() - Return token to numeric @@ -184,6 +185,19 @@ array_t *json_token2array(const char *jstr, jtok_t * _ jtok_t *json_findbykey(const char *jstr, const char *key, jtype_t type, jtok_t * __restrict toks, int toksnum); /* + * json_findbykeyatscope() - Find token data by key at particular scope + * + * @scope = Search at object scope, =0 main object scope + * @jstr = JSON string + * @key = Search key + * @type = Search key for particular token type, if is J_UNDEF this mean any type + * @toks = Parsed tokens + * @toksnum = Number of parsed tokens + * return: =NULL error or !=NULL data token found + */ +jtok_t *json_findbykeyatscope(long scope, const char *jstr, const char *key, + jtype_t type, jtok_t * __restrict toks, int toksnum); +/* * json_findbypos() - Find token by position on JSON string * * @pos = Offset from begin of JSON string @@ -192,6 +206,16 @@ jtok_t *json_findbykey(const char *jstr, const char *k * return: =NULL error or !=NULL token found */ jtok_t *json_findbypos(unsigned long pos, jtok_t * __restrict toks, int toksnum); +/* + * json_objscope() - Find object scope of key + * + * @key = Key of object, if it is =NULL, then return 0 (default scope) + * @jstr = JSON string + * @toks = JSON tokens + * @toksnum = Number of tokens + * return: -1 on error or >=0 scope of object + */ +long json_objscope(const char *key, const char *jstr, jtok_t * __restrict toks, int toksnum); /*