node: move a mpv_node helper from ipc.c to shared code

This particular one is needed in a following commit.
This commit is contained in:
wm4 2018-05-12 14:48:24 +02:00
parent 4fd3ad8d63
commit 1157f07c5b
3 changed files with 17 additions and 14 deletions

View File

@ -20,23 +20,12 @@
#include "common/msg.h"
#include "input/input.h"
#include "misc/json.h"
#include "misc/node.h"
#include "options/m_option.h"
#include "options/options.h"
#include "options/path.h"
#include "player/client.h"
static mpv_node *mpv_node_map_get(mpv_node *src, const char *key)
{
if (src->format != MPV_FORMAT_NODE_MAP)
return NULL;
for (int i = 0; i < src->u.list->num; i++)
if (!strcmp(key, src->u.list->keys[i]))
return &src->u.list->values[i];
return NULL;
}
static mpv_node *mpv_node_array_get(mpv_node *src, int index)
{
if (src->format != MPV_FORMAT_NODE_ARRAY)
@ -217,9 +206,9 @@ static char *json_execute_command(struct mpv_handle *client, void *ta_parent,
goto error;
}
reqid_node = mpv_node_map_get(&msg_node, "request_id");
reqid_node = node_map_get(&msg_node, "request_id");
mpv_node *cmd_node = mpv_node_map_get(&msg_node, "command");
mpv_node *cmd_node = node_map_get(&msg_node, "command");
if (!cmd_node ||
(cmd_node->format != MPV_FORMAT_NODE_ARRAY) ||
!cmd_node->u.list->num)

View File

@ -81,3 +81,16 @@ void node_map_add_flag(struct mpv_node *dst, const char *key, bool v)
{
node_map_add(dst, key, MPV_FORMAT_FLAG)->u.flag = v;
}
mpv_node *node_map_get(mpv_node *src, const char *key)
{
if (src->format != MPV_FORMAT_NODE_MAP)
return NULL;
for (int i = 0; i < src->u.list->num; i++) {
if (strcmp(key, src->u.list->keys[i]) == 0)
return &src->u.list->values[i];
}
return NULL;
}

View File

@ -10,5 +10,6 @@ void node_map_add_string(struct mpv_node *dst, const char *key, const char *val)
void node_map_add_int64(struct mpv_node *dst, const char *key, int64_t v);
void node_map_add_double(struct mpv_node *dst, const char *key, double v);
void node_map_add_flag(struct mpv_node *dst, const char *key, bool v);
mpv_node *node_map_get(mpv_node *src, const char *key);
#endif