diff options
author | Charles Kerr <charles.kerr@canonical.com> | 2012-03-29 11:33:24 -0700 |
---|---|---|
committer | Charles Kerr <charles.kerr@canonical.com> | 2012-03-29 11:33:24 -0700 |
commit | bc392e208fa1f9b46c77ea8142dadd629722663a (patch) | |
tree | 360ea9101d0ae45fdba3e3a15d4eaab7de587793 /tests/json-loader.c | |
parent | ebab055ed741101f59c320367eb8be7484555a48 (diff) | |
parent | 86df02fa5a703cacd492db1b999f9449c3247c6b (diff) | |
download | libdbusmenu-bc392e208fa1f9b46c77ea8142dadd629722663a.tar.gz libdbusmenu-bc392e208fa1f9b46c77ea8142dadd629722663a.tar.bz2 libdbusmenu-bc392e208fa1f9b46c77ea8142dadd629722663a.zip |
Import upstream version 0.5.96
Diffstat (limited to 'tests/json-loader.c')
-rw-r--r-- | tests/json-loader.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/tests/json-loader.c b/tests/json-loader.c index 7f0ec8e..94982c4 100644 --- a/tests/json-loader.c +++ b/tests/json-loader.c @@ -24,6 +24,18 @@ with this program. If not, see <http://www.gnu.org/licenses/>. static GVariant * node2variant (JsonNode * node, const gchar * name); static void +array_byte_foreach (JsonArray * array, guint index, JsonNode * node, gpointer user_data) +{ + g_return_if_fail(JSON_NODE_TYPE(node) == JSON_NODE_VALUE); + g_return_if_fail(json_node_get_value_type(node) == G_TYPE_INT || json_node_get_value_type(node) == G_TYPE_INT64); + + GVariantBuilder * builder = (GVariantBuilder *)user_data; + + g_variant_builder_add_value(builder, g_variant_new_byte(json_node_get_int(node))); + return; +} + +static void array_foreach (JsonArray * array, guint index, JsonNode * node, gpointer user_data) { GVariantBuilder * builder = (GVariantBuilder *)user_data; @@ -79,11 +91,17 @@ node2variant (JsonNode * node, const gchar * name) } if (JSON_NODE_TYPE(node) == JSON_NODE_ARRAY) { + JsonArray * array = json_node_get_array(node); GVariantBuilder builder; - g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); - JsonArray * array = json_node_get_array(node); - json_array_foreach_element(array, array_foreach, &builder); + if (g_strcmp0(name, "icon-data") == 0) { + g_variant_builder_init(&builder, G_VARIANT_TYPE("ay")); + json_array_foreach_element(array, array_byte_foreach, &builder); + } else { + g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY); + json_array_foreach_element(array, array_foreach, &builder); + } + return g_variant_builder_end(&builder); } |