1 /*
2 * Copyright (C) 2008 OpenedHand Ltd.
3 *
4 * Authors: Jorn Baayen <jorn@openedhand.com>
5 *
6 * SPDX-License-Identifier: LGPL-2.1-or-later
7 *
8 */
9
10 #include <config.h>
11
12 #include <libgupnp-av/gupnp-search-criteria-parser.h>
13 #include <stdlib.h>
14
15 static void
begin_parens_cb(G_GNUC_UNUSED GUPnPSearchCriteriaParser * parser,G_GNUC_UNUSED gpointer user_data)16 begin_parens_cb (G_GNUC_UNUSED GUPnPSearchCriteriaParser *parser,
17 G_GNUC_UNUSED gpointer user_data)
18 {
19 g_print ("(");
20 }
21
22 static void
end_parens_cb(G_GNUC_UNUSED GUPnPSearchCriteriaParser * parser,G_GNUC_UNUSED gpointer user_data)23 end_parens_cb (G_GNUC_UNUSED GUPnPSearchCriteriaParser *parser,
24 G_GNUC_UNUSED gpointer user_data)
25 {
26 g_print (")");
27 }
28
29 static void
conjunction_cb(G_GNUC_UNUSED GUPnPSearchCriteriaParser * parser,G_GNUC_UNUSED gpointer user_data)30 conjunction_cb (G_GNUC_UNUSED GUPnPSearchCriteriaParser *parser,
31 G_GNUC_UNUSED gpointer user_data)
32 {
33 g_print (" and ");
34 }
35
36 static void
disjunction_cb(G_GNUC_UNUSED GUPnPSearchCriteriaParser * parser,G_GNUC_UNUSED gpointer user_data)37 disjunction_cb (G_GNUC_UNUSED GUPnPSearchCriteriaParser *parser,
38 G_GNUC_UNUSED gpointer user_data)
39 {
40 g_print (" or ");
41 }
42
43 static gboolean
expression_cb(G_GNUC_UNUSED GUPnPSearchCriteriaParser * parser,const char * property,GUPnPSearchCriteriaOp op,const char * value,G_GNUC_UNUSED GError ** error,G_GNUC_UNUSED gpointer user_data)44 expression_cb (G_GNUC_UNUSED GUPnPSearchCriteriaParser *parser,
45 const char *property,
46 GUPnPSearchCriteriaOp op,
47 const char *value,
48 G_GNUC_UNUSED GError **error,
49 G_GNUC_UNUSED gpointer user_data)
50 {
51 g_print ("%s %d %s", property, op, value);
52
53 return TRUE;
54 }
55
56 int
main(int argc,char ** argv)57 main (int argc, char **argv)
58 {
59 GUPnPSearchCriteriaParser *parser;
60 GError *error;
61
62 g_assert (argc == 2);
63
64 parser = gupnp_search_criteria_parser_new ();
65
66 g_signal_connect (parser,
67 "begin_parens",
68 G_CALLBACK (begin_parens_cb),
69 NULL);
70 g_signal_connect (parser,
71 "end_parens",
72 G_CALLBACK (end_parens_cb),
73 NULL);
74 g_signal_connect (parser,
75 "conjunction",
76 G_CALLBACK (conjunction_cb),
77 NULL);
78 g_signal_connect (parser,
79 "disjunction",
80 G_CALLBACK (disjunction_cb),
81 NULL);
82 g_signal_connect (parser,
83 "expression",
84 G_CALLBACK (expression_cb),
85 NULL);
86
87 error = NULL;
88 gupnp_search_criteria_parser_parse_text (parser, argv[1], &error);
89 if (error != NULL) {
90 g_printerr ("Parse error: %s\n", error->message);
91 g_error_free (error);
92 return EXIT_FAILURE;
93 }
94
95 g_print ("\n");
96
97 g_object_unref (parser);
98
99 return EXIT_SUCCESS;
100 }
101