static void gvir_config_domain_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GVirConfigDomain *domain = GVIR_CONFIG_DOMAIN(object); switch (prop_id) { case PROP_NAME: g_value_set_string(value, gvir_config_domain_get_name(domain)); break; case PROP_TITLE: g_value_set_string(value, gvir_config_domain_get_title(domain)); break; case PROP_DESCRIPTION: g_value_set_string(value, gvir_config_domain_get_description(domain)); break; case PROP_MEMORY: g_value_set_uint64(value, gvir_config_domain_get_memory(domain)); break; case PROP_VCPU: g_value_set_uint64(value, gvir_config_domain_get_vcpus(domain)); break; case PROP_FEATURES: g_value_take_boxed(value, gvir_config_domain_get_features(domain)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); } }
int main(int argc, char **argv) { GVirConfigDomain *domain; const char *name; GStrv features; char *xml; GError *error = NULL; gvir_config_init(&argc, &argv); if (argc != 2) { g_print("Usage: %s filename\n", argv[0]); g_print("Attempt to parse the libvirt XML definition from filename\n"); return 1; } g_file_get_contents(argv[1], &xml, NULL, &error); if (error != NULL) { g_print("Couldn't read %s: %s\n", argv[1], error->message); return 2; } domain = gvir_config_domain_new_from_xml(xml, &error); if (error != NULL) { g_print("Couldn't parse %s: %s\n", argv[1], error->message); return 3; } g_assert(domain != NULL); gvir_config_object_validate(GVIR_CONFIG_OBJECT(domain), &error); if (error != NULL) { g_print("%s format is invalid: %s\n", argv[1], error->message); g_clear_error(&error); } name = gvir_config_domain_get_name(domain); g_assert(name != NULL); g_assert(strcmp(name, "foo") == 0); g_assert(gvir_config_domain_get_memory(domain) == 987654321); features = gvir_config_domain_get_features(domain); g_assert(g_strv_length(features) == 2); g_assert(strcmp(features[0], "f1") == 0); g_assert(strcmp(features[1], "f2") == 0); g_strfreev(features); g_free(xml); xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(domain)); g_print("%s\n", xml); g_free(xml); g_object_unref(G_OBJECT(domain)); return 0; }