diff --git a/gtk/json/gtkjsonparser.c b/gtk/json/gtkjsonparser.c index 8bf929cfba..a2054c373c 100644 --- a/gtk/json/gtkjsonparser.c +++ b/gtk/json/gtkjsonparser.c @@ -873,6 +873,30 @@ gtk_json_parser_get_member_name (GtkJsonParser *self) return gtk_json_unescape_string (self->block->member_name); } +gssize +gtk_json_parser_select_member (GtkJsonParser *self, + const char * const *options) +{ + char *member_name; + gssize i; + + member_name = gtk_json_parser_get_member_name (self); + if (member_name == NULL) + return -1; + + for (i = 0; options[i]; i++) + { + if (strcmp (member_name, options[i]) == 0) + break; + } + if (options[i] == NULL) + i = -1; + + g_free (member_name); + + return i; +} + gboolean gtk_json_parser_get_boolean (GtkJsonParser *self) { diff --git a/gtk/json/gtkjsonparserprivate.h b/gtk/json/gtkjsonparserprivate.h index 854042ad71..f3ff43fd88 100644 --- a/gtk/json/gtkjsonparserprivate.h +++ b/gtk/json/gtkjsonparserprivate.h @@ -47,6 +47,8 @@ gboolean gtk_json_parser_next (GtkJsonParser GtkJsonNode gtk_json_parser_get_node (GtkJsonParser *self); const GError * gtk_json_parser_get_error (GtkJsonParser *self) G_GNUC_PURE; char * gtk_json_parser_get_member_name (GtkJsonParser *self); +gssize gtk_json_parser_select_member (GtkJsonParser *self, + const char * const *options); gboolean gtk_json_parser_get_boolean (GtkJsonParser *self); double gtk_json_parser_get_number (GtkJsonParser *self);