MT#55283 add dict_contains() method

Change-Id: I908075e8e3ef9578abc426987e34c9d776203184
pull/1848/head
Richard Fuchs 1 year ago
parent cbfe44aeb4
commit 671c163a60

@ -2627,7 +2627,7 @@ static void ng_stats_ssrc(const ng_parser_t *parser, bencode_item_t *dict, struc
struct ssrc_entry_call *se = l->data;
char *tmp = bencode_buffer_alloc(dict->buffer, 12);
snprintf(tmp, 12, "%" PRIu32, se->h.ssrc);
if (bencode_dictionary_get(dict, tmp))
if (parser->dict_contains(dict, tmp))
continue;
if (!se->stats_blocks.length || !se->lowest_mos || !se->highest_mos)
continue;

@ -142,6 +142,9 @@ static void bencode_pretty_print(bencode_item_t *el, GString *s);
static parser_arg __bencode_dictionary_get_expect(bencode_item_t *arg, const char *ele, bencode_type_t type) {
return (parser_arg) bencode_dictionary_get_expect(arg, ele, type);
}
static bool __bencode_dictionary_contains(bencode_item_t *d, const char *ele) {
return bencode_dictionary_get(d, ele) != NULL;
}
static bool json_is_dict(JsonNode *n) {
return json_node_get_node_type(n) == JSON_NODE_OBJECT;
@ -245,6 +248,13 @@ static parser_arg json_dict_get_expect(JsonNode *dict, const char *entry, bencod
abort();
}
}
static bool json_dict_contains(JsonNode *on, const char *ele) {
JsonObject *o = json_node_get_object(on);
if (!o)
return false;
JsonNode *n = json_object_get_member(o, ele);
return n != NULL;
}
static void json_dict_iter_fn(JsonObject *o, const char *key, JsonNode *val, void *arg) {
void **ptrs = arg;
void (*callback)(ng_parser_ctx_t *, str *key, JsonNode *value, helper_arg) = ptrs[1];
@ -324,6 +334,7 @@ const ng_parser_t ng_parser_native = {
.dict_get_str = bencode_dictionary_get_str,
.dict_get_int_str = bencode_dictionary_get_int_str,
.dict_get_expect = __bencode_dictionary_get_expect,
.dict_contains = __bencode_dictionary_contains,
.dict_add = bencode_dictionary_add,
.dict_add_string = bencode_dictionary_add_string,
.dict_add_str = bencode_dictionary_add_str,
@ -352,6 +363,7 @@ const ng_parser_t ng_parser_json = {
.dict_get_str = json_dict_get_str,
.dict_get_int_str = json_dict_get_int_str,
.dict_get_expect = json_dict_get_expect,
.dict_contains = json_dict_contains,
.dict_add = bencode_dictionary_add,
.dict_add_string = bencode_dictionary_add_string,
.dict_add_str = bencode_dictionary_add_str,

@ -133,6 +133,7 @@ struct ng_parser {
char *(*dict_get_str)(parser_arg, const char *, str *);
long long (*dict_get_int_str)(parser_arg, const char *, long long def);
parser_arg (*dict_get_expect)(parser_arg, const char *, bencode_type_t);
bool (*dict_contains)(parser_arg, const char *);
bencode_item_t *(*dict_add)(parser_arg, const char *, parser_arg);
void (*dict_add_string)(parser_arg, const char *, const char *);
void (*dict_add_str)(parser_arg, const char *, const str *);

Loading…
Cancel
Save