MT#55283 add helper_arg to dict_iter

Change-Id: I0344a74c1d653a42b524612149857845b9815952
pull/1848/head
Richard Fuchs 11 months ago
parent 61ed4e6e7d
commit 2f367bf84a

@ -1318,7 +1318,7 @@ void call_ng_direction_flag(ng_parser_ctx_t *ctx, bencode_item_t *value)
int diridx = 0;
ctx->parser->list_iter(ctx, value, call_ng_direction_flag_iter, NULL, &diridx);
}
void call_ng_codec_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
void call_ng_codec_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value, helper_arg arg) {
sdp_ng_flags *out = ctx->flags;
switch (__csh_lookup(key)) {
case CSH_LOOKUP("except"):
@ -1432,7 +1432,7 @@ static void call_ng_received_from_iter(ng_parser_ctx_t *ctx, str *key, helper_ar
break;
}
}
void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value, helper_arg arg) {
str s = STR_NULL;
sdp_ng_flags *out = ctx->flags;
const ng_parser_t *parser = ctx->parser;
@ -1520,7 +1520,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
out->digit = s.s[0];
break;
case CSH_LOOKUP("codec"):
parser->dict_iter(ctx, value, call_ng_codec_flags);
parser->dict_iter(ctx, value, call_ng_codec_flags, NULL);
break;
case CSH_LOOKUP("command"):
break;
@ -2011,7 +2011,7 @@ static void call_ng_process_flags(sdp_ng_flags *out, ng_parser_ctx_t *ctx, enum
call_ng_flags_init(out, opmode);
ctx->opmode = opmode;
ctx->flags = out;
ctx->parser->dict_iter(ctx, ctx->req, call_ng_main_flags);
ctx->parser->dict_iter(ctx, ctx->req, call_ng_main_flags, NULL);
}
static void ng_sdp_attr_manipulations_free(struct sdp_manipulations * array[__MT_MAX]) {

@ -80,7 +80,8 @@ typedef struct ng_ctx {
static void bencode_dict_iter(ng_parser_ctx_t *ctx, bencode_item_t *input,
void (*callback)(ng_parser_ctx_t *, str *key, bencode_item_t *value))
void (*callback)(ng_parser_ctx_t *, str *key, bencode_item_t *value, helper_arg),
helper_arg arg)
{
if (input->type != BENCODE_DICTIONARY)
return;
@ -95,7 +96,7 @@ static void bencode_dict_iter(ng_parser_ctx_t *ctx, bencode_item_t *input,
if (!bencode_get_str(key, &k))
continue;
callback(ctx, &k, value);
callback(ctx, &k, value, arg);
}
}
static bool bencode_is_list(bencode_item_t *arg) {

@ -117,7 +117,7 @@ static bool parse_received_from(str * key, str * val, bencode_buffer_t * buf,
bencode_list_add_str(item, &ipfamily);
bencode_list_add_str(item, &s);
call_ng_main_flags(ctx, &STR_CONST("received-from"), item);
call_ng_main_flags(ctx, &STR_CONST("received-from"), item, NULL);
return true;
}
return false;
@ -135,7 +135,7 @@ static bool parse_codec_to_dict(str * key, str * val, const char *cmp1, const ch
return false;
}
call_ng_codec_flags(ctx, &STR(dictstr), bencode_str(buf, &s));
call_ng_codec_flags(ctx, &STR(dictstr), bencode_str(buf, &s), NULL);
return true;
}
@ -172,7 +172,7 @@ static void parse_transports(ng_parser_ctx_t *ctx, bencode_buffer_t *buf,
const char * val = transports[transport & 0x007];
if (!val)
return;
call_ng_main_flags(ctx, &STR_CONST("transport-protocol"), bencode_string(buf, val));
call_ng_main_flags(ctx, &STR_CONST("transport-protocol"), bencode_string(buf, val), NULL);
}
#if 0
@ -318,7 +318,7 @@ generic:
call_ng_flags_flags(ctx, &key, NULL);
/* generic flags with value, but no particular processing */
else
call_ng_main_flags(ctx, &key, bencode_str(buf, &val));
call_ng_main_flags(ctx, &key, bencode_str(buf, &val), NULL);
next:;
}

@ -286,8 +286,8 @@ void call_interfaces_free(void);
void call_interfaces_timer(void);
void call_ng_flags_flags(ng_parser_ctx_t *, str *s, helper_arg dummy);
void call_ng_main_flags(ng_parser_ctx_t *, str *key, bencode_item_t *value);
void call_ng_codec_flags(ng_parser_ctx_t *, str *key, bencode_item_t *value);
void call_ng_main_flags(ng_parser_ctx_t *, str *key, bencode_item_t *value, helper_arg);
void call_ng_codec_flags(ng_parser_ctx_t *, str *key, bencode_item_t *value, helper_arg);
void call_ng_direction_flag(ng_parser_ctx_t *, bencode_item_t *value);
INLINE struct sdp_manipulations *sdp_manipulations_get_by_id(const sdp_ng_flags *f, enum media_type id) {

@ -109,7 +109,8 @@ typedef union {
struct ng_parser {
str *(*collapse)(bencode_item_t *root, str *out);
void (*dict_iter)(ng_parser_ctx_t *, bencode_item_t *,
void (*callback)(ng_parser_ctx_t *, str *, bencode_item_t *));
void (*callback)(ng_parser_ctx_t *, str *, bencode_item_t *, helper_arg),
helper_arg);
bool (*is_list)(bencode_item_t *);
void (*list_iter)(ng_parser_ctx_t *, bencode_item_t *input,
void (*str_callback)(ng_parser_ctx_t *, str *key, helper_arg),

Loading…
Cancel
Save