summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2011-06-04 14:33:21 +0200
committerJens Georg <mail@jensge.org>2011-06-16 11:40:16 +0200
commitcc0e3d2f3630b3adc615626059b61c8d116a6bf2 (patch)
tree115f7e06a8acb8b9bc1a997900ff713b15146022
parent0dfb0f3a06bbcd12f38f865705933d867419ffb2 (diff)
downloadgupnp-av-cc0e3d2f3630b3adc615626059b61c8d116a6bf2.tar.gz
Set mandatory includeDerived XML attribute
includeDerived is mandatory for upnp:createClass.
-rw-r--r--libgupnp-av/gupnp-didl-lite-container.c45
-rw-r--r--libgupnp-av/gupnp-didl-lite-container.h7
2 files changed, 44 insertions, 8 deletions
diff --git a/libgupnp-av/gupnp-didl-lite-container.c b/libgupnp-av/gupnp-didl-lite-container.c
index eddaf0a..dbed52c 100644
--- a/libgupnp-av/gupnp-didl-lite-container.c
+++ b/libgupnp-av/gupnp-didl-lite-container.c
@@ -338,7 +338,7 @@ gupnp_didl_lite_container_set_child_count (GUPnPDIDLLiteContainer *container,
* @container: #GUPnPDIDLLiteContainer
* @create_class: The createClass to add.
*
- * Add a new create class to the @object.
+ * Add a new create class to the @object. includeDerived defaults to "0".
*
* Return value: None.
**/
@@ -347,21 +347,52 @@ gupnp_didl_lite_container_add_create_class (
GUPnPDIDLLiteContainer *container,
const char *create_class)
{
- xmlNode *xml_node;
+ gupnp_didl_lite_container_add_create_class_full (container,
+ create_class,
+ FALSE);
+}
+
+/**
+ * gupnp_didl_lite_container_add_create_class_full:
+ * @container: #GUPnPDIDLLiteContainer
+ * @create_class: The createClass to add.
+ * @include_derived: Whether object with dervied classes may be created in
+ * this container or not.
+ *
+ * Add a new create class to the @object.
+ *
+ * Return value: None.
+ **/
+void
+gupnp_didl_lite_container_add_create_class_full (
+ GUPnPDIDLLiteContainer *container,
+ const char *create_class,
+ gboolean include_derived)
+{
+ xmlNode *container_node, *new_node;
xmlNs *namespace;
+ const char *str;
g_return_if_fail (container != NULL);
g_return_if_fail (GUPNP_IS_DIDL_LITE_CONTAINER (container));
- xml_node = gupnp_didl_lite_object_get_xml_node
+ container_node = gupnp_didl_lite_object_get_xml_node
(GUPNP_DIDL_LITE_OBJECT (container));
namespace = gupnp_didl_lite_object_get_upnp_namespace
(GUPNP_DIDL_LITE_OBJECT (container));
- xmlNewChild (xml_node,
- namespace,
- (unsigned char *) "createClass",
- (unsigned char *) create_class);
+ new_node = xmlNewChild (container_node,
+ namespace,
+ (unsigned char *) "createClass",
+ (unsigned char *) create_class);
+ if (include_derived)
+ str = "1";
+ else
+ str = "0";
+
+ xmlSetProp (new_node,
+ (unsigned char *) "includeDerived",
+ (unsigned char *) str);
}
/**
diff --git a/libgupnp-av/gupnp-didl-lite-container.h b/libgupnp-av/gupnp-didl-lite-container.h
index 8fb1958..298ab9f 100644
--- a/libgupnp-av/gupnp-didl-lite-container.h
+++ b/libgupnp-av/gupnp-didl-lite-container.h
@@ -98,10 +98,15 @@ gupnp_didl_lite_container_add_create_class
const char *create_class);
void
+gupnp_didl_lite_container_add_create_class_full
+ (GUPnPDIDLLiteContainer *container,
+ const char *create_class,
+ gboolean include_derived);
+
+void
gupnp_didl_lite_container_add_search_class
(GUPnPDIDLLiteContainer *container,
const char *search_class);
-
void
gupnp_didl_lite_container_add_search_class_full
(GUPnPDIDLLiteContainer *container,