diff options
author | Jens Georg <mail@jensge.org> | 2021-07-03 23:37:33 +0200 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2021-07-03 23:41:58 +0200 |
commit | 8f24dda0f85426c960a83b6cef5f70ed2a2d5af0 (patch) | |
tree | 01ebc1bc21412a2ed6b8ff5931d51996eda0a35a /libgupnp-av | |
parent | 7bef1c92bd48cd5009bac82f863dc67c2634329c (diff) | |
download | gupnp-av-8f24dda0f85426c960a83b6cef5f70ed2a2d5af0.tar.gz |
all: Port classes to new GObject type macros
Bump ABI version, since I cannot guarantee that this didn't change ABI
Diffstat (limited to 'libgupnp-av')
41 files changed, 1189 insertions, 1273 deletions
diff --git a/libgupnp-av/gupnp-cds-last-change-parser.c b/libgupnp-av/gupnp-cds-last-change-parser.c index 2e4595a..63ae361 100644 --- a/libgupnp-av/gupnp-cds-last-change-parser.c +++ b/libgupnp-av/gupnp-cds-last-change-parser.c @@ -50,8 +50,6 @@ G_DEFINE_TYPE (GUPnPCDSLastChangeParser, gupnp_cds_last_change_parser, G_TYPE_OBJECT) -#define GUPNP_TYPE_CDS_LAST_CHANGE_PARSER (gupnp_cds_last_change_entry_get_type()) - G_DEFINE_BOXED_TYPE (GUPnPCDSLastChangeEntry, gupnp_cds_last_change_entry, gupnp_cds_last_change_entry_ref, diff --git a/libgupnp-av/gupnp-cds-last-change-parser.h b/libgupnp-av/gupnp-cds-last-change-parser.h index 8e7483b..af989f0 100644 --- a/libgupnp-av/gupnp-cds-last-change-parser.h +++ b/libgupnp-av/gupnp-cds-last-change-parser.h @@ -26,47 +26,23 @@ G_BEGIN_DECLS -GType -gupnp_cds_last_change_parser_get_type (void) G_GNUC_CONST; GType gupnp_cds_last_change_entry_get_type (void) G_GNUC_CONST; -#define GUPNP_TYPE_CDS_LAST_CHANGE_PARSER \ - (gupnp_cds_last_change_parser_get_type ()) -#define GUPNP_CDS_LAST_CHANGE_PARSER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_CDS_LAST_CHANGE_PARSER, \ - GUPnPCDSLastChangeParser)) -#define GUPNP_CDS_LAST_CHANGE_PARSER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_CDS_LAST_CHANGE_PARSER, \ - GUPnPCDSLastChangeParserClass)) -#define GUPNP_IS_CDS_LAST_CHANGE_PARSER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_CDS_LAST_CHANGE_PARSER)) -#define GUPNP_IS_CDS_LAST_CHANGE_PARSER_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_TYPE ((klass), \ - GUPNP_TYPE_CDS_LAST_CHANGE_PARSER)) -#define GUPNP_CDS_LAST_CHANGE_PARSER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_CDS_LAST_CHANGE_PARSER, \ - GUPnPCDSLastChangeParserClass)) - -typedef struct _GUPnPCDSLastChangeParser GUPnPCDSLastChangeParser; -typedef struct _GUPnPCDSLastChangeParserClass GUPnPCDSLastChangeParserClass; -typedef struct _GUPnPCDSLastChangeParserPrivate GUPnPCDSLastChangeParserPrivate; -typedef struct _GUPnPCDSLastChangeEntry GUPnPCDSLastChangeEntry; - -struct _GUPnPCDSLastChangeParser { - GObject parent; +G_DECLARE_DERIVABLE_TYPE(GUPnPCDSLastChangeParser, + gupnp_cds_last_change_parser, + GUPNP, + CDS_LAST_CHANGE_PARSER, + GObject) +#define GUPNP_TYPE_CDS_LAST_CHANGE_PARSER gupnp_cds_last_change_parser_get_type() - GUPnPCDSLastChangeParserPrivate *priv; +struct _GUPnPCDSLastChangeParserClass +{ + GObjectClass parent_class; }; -struct _GUPnPCDSLastChangeParserClass { - GObjectClass parent_class; -}; +typedef struct _GUPnPCDSLastChangeEntry GUPnPCDSLastChangeEntry; /** * GUPnPCDSLastChangeEvent: diff --git a/libgupnp-av/gupnp-didl-lite-container.c b/libgupnp-av/gupnp-didl-lite-container.c index cf6164d..1cab480 100644 --- a/libgupnp-av/gupnp-didl-lite-container.c +++ b/libgupnp-av/gupnp-didl-lite-container.c @@ -41,7 +41,7 @@ G_DEFINE_TYPE (GUPnPDIDLLiteContainer, gupnp_didl_lite_container, - GUPNP_TYPE_DIDL_LITE_OBJECT); + GUPNP_TYPE_DIDL_LITE_OBJECT) enum { PROP_0, diff --git a/libgupnp-av/gupnp-didl-lite-container.h b/libgupnp-av/gupnp-didl-lite-container.h index 7c4ced7..365f8d7 100644 --- a/libgupnp-av/gupnp-didl-lite-container.h +++ b/libgupnp-av/gupnp-didl-lite-container.h @@ -31,35 +31,16 @@ G_BEGIN_DECLS -GType -gupnp_didl_lite_container_get_type (void) G_GNUC_CONST; +G_DECLARE_DERIVABLE_TYPE(GUPnPDIDLLiteContainer, + gupnp_didl_lite_container, + GUPNP, + DIDL_LITE_CONTAINER, + GUPnPDIDLLiteObject) #define GUPNP_TYPE_DIDL_LITE_CONTAINER \ (gupnp_didl_lite_container_get_type ()) -#define GUPNP_DIDL_LITE_CONTAINER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_CONTAINER, \ - GUPnPDIDLLiteContainer)) -#define GUPNP_DIDL_LITE_CONTAINER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_CONTAINER, \ - GUPnPDIDLLiteContainerClass)) -#define GUPNP_IS_DIDL_LITE_CONTAINER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_CONTAINER)) -#define GUPNP_IS_DIDL_LITE_CONTAINER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_CONTAINER)) -#define GUPNP_DIDL_LITE_CONTAINER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_DIDL_LITE_CONTAINER, \ - GUPnPDIDLLiteContainerClass)) - -typedef struct { - GUPnPDIDLLiteObject parent; -} GUPnPDIDLLiteContainer; - -typedef struct { + +struct _GUPnPDIDLLiteContainerClass { GUPnPDIDLLiteObjectClass parent_class; /* future padding */ @@ -67,7 +48,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPDIDLLiteContainerClass; +}; gboolean gupnp_didl_lite_container_get_searchable diff --git a/libgupnp-av/gupnp-didl-lite-contributor.c b/libgupnp-av/gupnp-didl-lite-contributor.c index 3e0ddbe..6359718 100644 --- a/libgupnp-av/gupnp-didl-lite-contributor.c +++ b/libgupnp-av/gupnp-didl-lite-contributor.c @@ -32,14 +32,14 @@ #include "gupnp-didl-lite-contributor-private.h" #include "xml-util.h" -struct _GUPnPDIDLLiteContributorPrivate { +typedef struct _GUPnPDIDLLiteContributorPrivate { xmlNode *xml_node; GUPnPAVXMLDoc *xml_doc; -}; +} GUPnPDIDLLiteContributorPrivate; G_DEFINE_TYPE_WITH_PRIVATE (GUPnPDIDLLiteContributor, gupnp_didl_lite_contributor, - G_TYPE_OBJECT); + G_TYPE_OBJECT) enum { PROP_0, @@ -52,8 +52,6 @@ enum { static void gupnp_didl_lite_contributor_init (GUPnPDIDLLiteContributor *contributor) { - contributor->priv = - gupnp_didl_lite_contributor_get_instance_private (contributor); } static void @@ -96,16 +94,17 @@ gupnp_didl_lite_contributor_set_property (GObject *object, GParamSpec *pspec) { - GUPnPDIDLLiteContributor *contributor; - - contributor = GUPNP_DIDL_LITE_CONTRIBUTOR (object); + GUPnPDIDLLiteContributor *contributor = + GUPNP_DIDL_LITE_CONTRIBUTOR (object); + GUPnPDIDLLiteContributorPrivate *priv = + gupnp_didl_lite_contributor_get_instance_private (contributor); switch (property_id) { case PROP_XML_NODE: - contributor->priv->xml_node = g_value_get_pointer (value); + priv->xml_node = g_value_get_pointer (value); break; case PROP_XML_DOC: - contributor->priv->xml_doc = g_value_dup_boxed (value); + priv->xml_doc = g_value_dup_boxed (value); break; case PROP_ROLE: gupnp_didl_lite_contributor_set_role @@ -127,9 +126,11 @@ static void gupnp_didl_lite_contributor_dispose (GObject *object) { GObjectClass *object_class; - GUPnPDIDLLiteContributorPrivate *priv; - priv = GUPNP_DIDL_LITE_CONTRIBUTOR (object)->priv; + GUPnPDIDLLiteContributor *contributor = + GUPNP_DIDL_LITE_CONTRIBUTOR (object); + GUPnPDIDLLiteContributorPrivate *priv = + gupnp_didl_lite_contributor_get_instance_private (contributor); g_clear_pointer (&priv->xml_doc, av_xml_doc_unref); @@ -239,9 +240,10 @@ gupnp_didl_lite_contributor_get_role (GUPnPDIDLLiteContributor *contributor) g_return_val_if_fail (contributor != NULL, NULL); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_CONTRIBUTOR (contributor), NULL); + GUPnPDIDLLiteContributorPrivate *priv = + gupnp_didl_lite_contributor_get_instance_private (contributor); - return av_xml_util_get_attribute_content (contributor->priv->xml_node, - "role"); + return av_xml_util_get_attribute_content (priv->xml_node, "role"); } /** @@ -257,8 +259,10 @@ gupnp_didl_lite_contributor_get_name (GUPnPDIDLLiteContributor *contributor) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_CONTRIBUTOR (contributor), NULL); + GUPnPDIDLLiteContributorPrivate *priv = + gupnp_didl_lite_contributor_get_instance_private (contributor); - return (const char *) contributor->priv->xml_node->children->content; + return (const char *) priv->xml_node->children->content; } /** @@ -275,7 +279,10 @@ gupnp_didl_lite_contributor_set_role (GUPnPDIDLLiteContributor *contributor, g_return_if_fail (contributor != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_CONTRIBUTOR (contributor)); - xmlSetProp (contributor->priv->xml_node, + GUPnPDIDLLiteContributorPrivate *priv = + gupnp_didl_lite_contributor_get_instance_private (contributor); + + xmlSetProp (priv->xml_node, (unsigned char *) "role", (unsigned char *) role); @@ -298,9 +305,12 @@ gupnp_didl_lite_contributor_set_name (GUPnPDIDLLiteContributor *contributor, g_return_if_fail (GUPNP_IS_DIDL_LITE_CONTRIBUTOR (contributor)); g_return_if_fail (name != NULL); - escaped = xmlEncodeSpecialChars (contributor->priv->xml_doc->doc, + GUPnPDIDLLiteContributorPrivate *priv = + gupnp_didl_lite_contributor_get_instance_private (contributor); + + escaped = xmlEncodeSpecialChars (priv->xml_doc->doc, (const unsigned char *) name); - xmlNodeSetContent (contributor->priv->xml_node, escaped); + xmlNodeSetContent (priv->xml_node, escaped); xmlFree (escaped); g_object_notify (G_OBJECT (contributor), "name"); @@ -338,6 +348,8 @@ gupnp_didl_lite_contributor_get_xml_node (GUPnPDIDLLiteContributor *contributor) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_CONTRIBUTOR (contributor), NULL); + GUPnPDIDLLiteContributorPrivate *priv = + gupnp_didl_lite_contributor_get_instance_private (contributor); - return contributor->priv->xml_node; + return priv->xml_node; } diff --git a/libgupnp-av/gupnp-didl-lite-contributor.h b/libgupnp-av/gupnp-didl-lite-contributor.h index dbedae7..60028c3 100644 --- a/libgupnp-av/gupnp-didl-lite-contributor.h +++ b/libgupnp-av/gupnp-didl-lite-contributor.h @@ -28,39 +28,16 @@ G_BEGIN_DECLS -GType -gupnp_didl_lite_contributor_get_type (void) G_GNUC_CONST; +G_DECLARE_DERIVABLE_TYPE(GUPnPDIDLLiteContributor, + gupnp_didl_lite_contributor, + GUPNP, + DIDL_LITE_CONTRIBUTOR, + GObject) #define GUPNP_TYPE_DIDL_LITE_CONTRIBUTOR \ (gupnp_didl_lite_contributor_get_type ()) -#define GUPNP_DIDL_LITE_CONTRIBUTOR(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_CONTRIBUTOR, \ - GUPnPDIDLLiteContributor)) -#define GUPNP_DIDL_LITE_CONTRIBUTOR_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_CONTRIBUTOR, \ - GUPnPDIDLLiteContributorClass)) -#define GUPNP_IS_DIDL_LITE_CONTRIBUTOR(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_CONTRIBUTOR)) -#define GUPNP_IS_DIDL_LITE_CONTRIBUTOR_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_CONTRIBUTOR)) -#define GUPNP_DIDL_LITE_CONTRIBUTOR_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_DIDL_LITE_CONTRIBUTOR, \ - GUPnPDIDLLiteContributorClass)) -typedef struct _GUPnPDIDLLiteContributorPrivate GUPnPDIDLLiteContributorPrivate; - -typedef struct { - GObject parent; - - GUPnPDIDLLiteContributorPrivate *priv; -} GUPnPDIDLLiteContributor; - -typedef struct { +struct _GUPnPDIDLLiteContributorClass{ GObjectClass parent_class; /* future padding */ @@ -68,7 +45,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPDIDLLiteContributorClass; +}; const char * gupnp_didl_lite_contributor_get_role (GUPnPDIDLLiteContributor *contributor); diff --git a/libgupnp-av/gupnp-didl-lite-createclass.c b/libgupnp-av/gupnp-didl-lite-createclass.c index f0e86a9..ffcd53f 100644 --- a/libgupnp-av/gupnp-didl-lite-createclass.c +++ b/libgupnp-av/gupnp-didl-lite-createclass.c @@ -40,9 +40,11 @@ struct _GUPnPDIDLLiteCreateClassPrivate { GUPnPAVXMLDoc *xml_doc; }; +typedef struct _GUPnPDIDLLiteCreateClassPrivate GUPnPDIDLLiteCreateClassPrivate; + G_DEFINE_TYPE_WITH_PRIVATE (GUPnPDIDLLiteCreateClass, gupnp_didl_lite_create_class, - G_TYPE_OBJECT); + G_TYPE_OBJECT) enum { PROP_0, @@ -56,8 +58,6 @@ enum { static void gupnp_didl_lite_create_class_init (GUPnPDIDLLiteCreateClass *create_class) { - create_class->priv = gupnp_didl_lite_create_class_get_instance_private ( - create_class); } static void @@ -110,13 +110,16 @@ gupnp_didl_lite_create_class_set_property (GObject *object, GUPnPDIDLLiteCreateClass *create_class; create_class = GUPNP_DIDL_LITE_CREATE_CLASS (object); + GUPnPDIDLLiteCreateClassPrivate *priv = + gupnp_didl_lite_create_class_get_instance_private ( + create_class); switch (property_id) { case PROP_XML_NODE: - create_class->priv->xml_node = g_value_get_pointer (value); + priv->xml_node = g_value_get_pointer (value); break; case PROP_XML_DOC: - create_class->priv->xml_doc = g_value_dup_boxed (value); + priv->xml_doc = g_value_dup_boxed (value); break; case PROP_CONTENT: gupnp_didl_lite_create_class_set_content @@ -143,9 +146,9 @@ static void gupnp_didl_lite_create_class_dispose (GObject *object) { GObjectClass *object_class; - GUPnPDIDLLiteCreateClassPrivate *priv; - - priv = GUPNP_DIDL_LITE_CREATE_CLASS (object)->priv; + GUPnPDIDLLiteCreateClassPrivate *priv = + gupnp_didl_lite_create_class_get_instance_private ( + GUPNP_DIDL_LITE_CREATE_CLASS (object)); g_clear_pointer (&priv->xml_doc, av_xml_doc_unref); @@ -277,11 +280,14 @@ gupnp_didl_lite_create_class_get_content { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_CREATE_CLASS (create_class), NULL); + GUPnPDIDLLiteCreateClassPrivate *priv = + gupnp_didl_lite_create_class_get_instance_private ( + create_class); - if (G_UNLIKELY (create_class->priv->xml_node->children == NULL)) + if (G_UNLIKELY (priv->xml_node->children == NULL)) return NULL; - return (const char *) create_class->priv->xml_node->children->content; + return (const char *) priv->xml_node->children->content; } /** @@ -296,14 +302,16 @@ gupnp_didl_lite_create_class_set_content (GUPnPDIDLLiteCreateClass *create_class, const char *content) { - xmlChar *escaped; - g_return_if_fail (GUPNP_IS_DIDL_LITE_CREATE_CLASS (create_class)); g_return_if_fail (create_class != NULL); - escaped = xmlEncodeSpecialChars (create_class->priv->xml_doc->doc, - (const unsigned char *) content); - xmlNodeSetContent (create_class->priv->xml_node, escaped); + GUPnPDIDLLiteCreateClassPrivate *priv = + gupnp_didl_lite_create_class_get_instance_private ( + create_class); + xmlChar *escaped = + xmlEncodeSpecialChars (priv->xml_doc->doc, + (const unsigned char *) content); + xmlNodeSetContent (priv->xml_node, escaped); xmlFree (escaped); g_object_notify (G_OBJECT (create_class), "content"); @@ -323,8 +331,11 @@ gupnp_didl_lite_create_class_get_include_derived { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_CREATE_CLASS (create_class), FALSE); + GUPnPDIDLLiteCreateClassPrivate *priv = + gupnp_didl_lite_create_class_get_instance_private ( + create_class); - return av_xml_util_get_boolean_attribute (create_class->priv->xml_node, + return av_xml_util_get_boolean_attribute (priv->xml_node, "includeDerived"); } @@ -345,11 +356,16 @@ gupnp_didl_lite_create_class_set_include_derived g_return_if_fail (create_class != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_CREATE_CLASS (create_class)); + GUPnPDIDLLiteCreateClassPrivate *priv = + gupnp_didl_lite_create_class_get_instance_private ( + create_class); + if (include_derived) str = "1"; else str = "0"; - xmlSetProp (create_class->priv->xml_node, + + xmlSetProp (priv->xml_node, (unsigned char *) "includeDerived", (unsigned char *) str); @@ -370,8 +386,11 @@ gupnp_didl_lite_create_class_get_friendly_name { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_CREATE_CLASS (create_class), NULL); - return av_xml_util_get_attribute_content (create_class->priv->xml_node, - "name"); + GUPnPDIDLLiteCreateClassPrivate *priv = + gupnp_didl_lite_create_class_get_instance_private ( + create_class); + + return av_xml_util_get_attribute_content (priv->xml_node, "name"); } /** @@ -389,7 +408,11 @@ gupnp_didl_lite_create_class_set_friendly_name g_return_if_fail (create_class != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_CREATE_CLASS (create_class)); - xmlSetProp (create_class->priv->xml_node, + GUPnPDIDLLiteCreateClassPrivate *priv = + gupnp_didl_lite_create_class_get_instance_private ( + create_class); + + xmlSetProp (priv->xml_node, (unsigned char *) "name", (const unsigned char *) friendly_name); @@ -429,6 +452,9 @@ gupnp_didl_lite_create_class_get_xml_node { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_CREATE_CLASS (create_class), NULL); + GUPnPDIDLLiteCreateClassPrivate *priv = + gupnp_didl_lite_create_class_get_instance_private ( + create_class); - return create_class->priv->xml_node; + return priv->xml_node; } diff --git a/libgupnp-av/gupnp-didl-lite-createclass.h b/libgupnp-av/gupnp-didl-lite-createclass.h index fd94093..f754670 100644 --- a/libgupnp-av/gupnp-didl-lite-createclass.h +++ b/libgupnp-av/gupnp-didl-lite-createclass.h @@ -22,8 +22,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GUPNP_DIDL_LITE_CREATE_CLASS_H__ -#define __GUPNP_DIDL_LITE_CREATE_CLASS_H__ +#ifndef GUPNP_DIDL_LITE_CREATE_CLASS_H +#define GUPNP_DIDL_LITE_CREATE_CLASS_H #include <glib-object.h> #include <libxml/tree.h> @@ -31,43 +31,16 @@ G_BEGIN_DECLS -GType -gupnp_didl_lite_create_class_get_type (void) G_GNUC_CONST; +G_DECLARE_DERIVABLE_TYPE(GUPnPDIDLLiteCreateClass, + gupnp_didl_lite_create_class, + GUPNP, + DIDL_LITE_CREATE_CLASS, + GObject) #define GUPNP_TYPE_DIDL_LITE_CREATE_CLASS \ (gupnp_didl_lite_create_class_get_type ()) -#define GUPNP_DIDL_LITE_CREATE_CLASS(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_CREATE_CLASS, \ - GUPnPDIDLLiteCreateClass)) -#define GUPNP_DIDL_LITE_CREATE_CLASS_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_CREATE_CLASS, \ - GUPnPDIDLLiteCreateClassClass)) -#define GUPNP_IS_DIDL_LITE_CREATE_CLASS(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_CREATE_CLASS)) -#define GUPNP_IS_DIDL_LITE_CREATE_CLASS_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_CREATE_CLASS)) -#define GUPNP_DIDL_LITE_CREATE_CLASS_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_DIDL_LITE_CREATE_CLASS, \ - GUPnPDIDLLiteCreateClassClass)) - -typedef struct _GUPnPDIDLLiteCreateClassPrivate GUPnPDIDLLiteCreateClassPrivate; - -/** - * GUPnPDIDLLiteCreateClass: - **/ -typedef struct { - GObject parent; - - /*< private >*/ - GUPnPDIDLLiteCreateClassPrivate *priv; -} GUPnPDIDLLiteCreateClass; - -typedef struct { + +struct _GUPnPDIDLLiteCreateClassClass { GObjectClass parent_class; /* future padding */ @@ -75,7 +48,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPDIDLLiteCreateClassClass; +}; const char * gupnp_didl_lite_create_class_get_content diff --git a/libgupnp-av/gupnp-didl-lite-descriptor.c b/libgupnp-av/gupnp-didl-lite-descriptor.c index ab68ec0..3a568a5 100644 --- a/libgupnp-av/gupnp-didl-lite-descriptor.c +++ b/libgupnp-av/gupnp-didl-lite-descriptor.c @@ -37,10 +37,12 @@ struct _GUPnPDIDLLiteDescriptorPrivate { xmlNode *xml_node; GUPnPAVXMLDoc *xml_doc; }; +typedef struct _GUPnPDIDLLiteDescriptorPrivate GUPnPDIDLLiteDescriptorPrivate; + G_DEFINE_TYPE_WITH_PRIVATE (GUPnPDIDLLiteDescriptor, gupnp_didl_lite_descriptor, - G_TYPE_OBJECT); + G_TYPE_OBJECT) enum { PROP_0, @@ -56,8 +58,6 @@ enum { static void gupnp_didl_lite_descriptor_init (GUPnPDIDLLiteDescriptor *descriptor) { - descriptor->priv = - gupnp_didl_lite_descriptor_get_instance_private (descriptor); } static void @@ -69,13 +69,15 @@ gupnp_didl_lite_descriptor_set_property (GObject *object, GUPnPDIDLLiteDescriptor *descriptor; descriptor = GUPNP_DIDL_LITE_DESCRIPTOR (object); + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private (descriptor); switch (property_id) { case PROP_XML_NODE: - descriptor->priv->xml_node = g_value_get_pointer (value); + priv->xml_node = g_value_get_pointer (value); break; case PROP_XML_DOC: - descriptor->priv->xml_doc = g_value_dup_boxed (value); + priv->xml_doc = g_value_dup_boxed (value); break; case PROP_ID: gupnp_didl_lite_descriptor_set_id @@ -151,9 +153,9 @@ static void gupnp_didl_lite_descriptor_dispose (GObject *object) { GObjectClass *object_class; - GUPnPDIDLLiteDescriptorPrivate *priv; - - priv = GUPNP_DIDL_LITE_DESCRIPTOR (object)->priv; + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private ( + GUPNP_DIDL_LITE_DESCRIPTOR (object)); g_clear_pointer (&priv->xml_doc, av_xml_doc_unref); @@ -326,8 +328,10 @@ xmlNode * gupnp_didl_lite_descriptor_get_xml_node (GUPnPDIDLLiteDescriptor *descriptor) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_DESCRIPTOR (descriptor), NULL); + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private (descriptor); - return descriptor->priv->xml_node; + return priv->xml_node; } /** @@ -342,8 +346,10 @@ const char * gupnp_didl_lite_descriptor_get_content (GUPnPDIDLLiteDescriptor *descriptor) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_DESCRIPTOR (descriptor), NULL); + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private (descriptor); - return (const char *) descriptor->priv->xml_node->children; + return (const char *) priv->xml_node->children; } /** @@ -358,9 +364,10 @@ const char * gupnp_didl_lite_descriptor_get_id (GUPnPDIDLLiteDescriptor *descriptor) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_DESCRIPTOR (descriptor), NULL); + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private (descriptor); - return av_xml_util_get_attribute_content (descriptor->priv->xml_node, - "id"); + return av_xml_util_get_attribute_content (priv->xml_node, "id"); } /** @@ -376,9 +383,10 @@ gupnp_didl_lite_descriptor_get_metadata_type (GUPnPDIDLLiteDescriptor *descriptor) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_DESCRIPTOR (descriptor), NULL); + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private (descriptor); - return av_xml_util_get_attribute_content (descriptor->priv->xml_node, - "type"); + return av_xml_util_get_attribute_content (priv->xml_node, "type"); } /** @@ -393,9 +401,10 @@ const char * gupnp_didl_lite_descriptor_get_name_space (GUPnPDIDLLiteDescriptor *descriptor) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_DESCRIPTOR (descriptor), NULL); + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private (descriptor); - return av_xml_util_get_attribute_content (descriptor->priv->xml_node, - "nameSpace"); + return av_xml_util_get_attribute_content (priv->xml_node, "nameSpace"); } /** @@ -413,10 +422,12 @@ gupnp_didl_lite_descriptor_set_content (GUPnPDIDLLiteDescriptor *descriptor, g_return_if_fail (GUPNP_IS_DIDL_LITE_DESCRIPTOR (descriptor)); g_return_if_fail (content != NULL); + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private (descriptor); - escaped = xmlEncodeSpecialChars (descriptor->priv->xml_doc->doc, + escaped = xmlEncodeSpecialChars (priv->xml_doc->doc, (const unsigned char *) content); - xmlNodeSetContent (descriptor->priv->xml_node, escaped); + xmlNodeSetContent (priv->xml_node, escaped); xmlFree (escaped); g_object_notify (G_OBJECT (descriptor), "content"); @@ -435,8 +446,10 @@ gupnp_didl_lite_descriptor_set_id (GUPnPDIDLLiteDescriptor *descriptor, { g_return_if_fail (GUPNP_IS_DIDL_LITE_DESCRIPTOR (descriptor)); g_return_if_fail (id != NULL); + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private (descriptor); - xmlSetProp (descriptor->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "id", (const unsigned char *) id); @@ -457,8 +470,10 @@ gupnp_didl_lite_descriptor_set_metadata_type { g_return_if_fail (GUPNP_IS_DIDL_LITE_DESCRIPTOR (descriptor)); g_return_if_fail (type != NULL); + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private (descriptor); - xmlSetProp (descriptor->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "type", (const unsigned char *) type); @@ -479,7 +494,10 @@ gupnp_didl_lite_descriptor_set_name_space (GUPnPDIDLLiteDescriptor *descriptor, g_return_if_fail (GUPNP_IS_DIDL_LITE_DESCRIPTOR (descriptor)); g_return_if_fail (name_space != NULL); - xmlSetProp (descriptor->priv->xml_node, + GUPnPDIDLLiteDescriptorPrivate *priv = + gupnp_didl_lite_descriptor_get_instance_private (descriptor); + + xmlSetProp (priv->xml_node, (unsigned char *) "nameSpace", (const unsigned char *) name_space); diff --git a/libgupnp-av/gupnp-didl-lite-descriptor.h b/libgupnp-av/gupnp-didl-lite-descriptor.h index 5f7e304..9648ca3 100644 --- a/libgupnp-av/gupnp-didl-lite-descriptor.h +++ b/libgupnp-av/gupnp-didl-lite-descriptor.h @@ -20,8 +20,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GUPNP_DIDL_LITE_DESCRIPTOR_H__ -#define __GUPNP_DIDL_LITE_DESCRIPTOR_H__ +#ifndef GUPNP_DIDL_LITE_DESCRIPTOR_H +#define GUPNP_DIDL_LITE_DESCRIPTOR_H #include <stdarg.h> #include <glib-object.h> @@ -29,39 +29,15 @@ G_BEGIN_DECLS -GType -gupnp_didl_lite_descriptor_get_type (void) G_GNUC_CONST; - -#define GUPNP_TYPE_DIDL_LITE_DESCRIPTOR \ - (gupnp_didl_lite_descriptor_get_type ()) -#define GUPNP_DIDL_LITE_DESCRIPTOR(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_DESCRIPTOR, \ - GUPnPDIDLLiteDescriptor)) -#define GUPNP_DIDL_LITE_DESCRIPTOR_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_DESCRIPTOR, \ - GUPnPDIDLLiteDescriptorClass)) -#define GUPNP_IS_DIDL_LITE_DESCRIPTOR(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_DESCRIPTOR)) -#define GUPNP_IS_DIDL_LITE_DESCRIPTOR_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_DESCRIPTOR)) -#define GUPNP_DIDL_LITE_DESCRIPTOR_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_DIDL_LITE_DESCRIPTOR, \ - GUPnPDIDLLiteDescriptorClass)) - -typedef struct _GUPnPDIDLLiteDescriptorPrivate GUPnPDIDLLiteDescriptorPrivate; - -typedef struct { - GObject parent; - - GUPnPDIDLLiteDescriptorPrivate *priv; -} GUPnPDIDLLiteDescriptor; - -typedef struct { +#define GUPNP_TYPE_DIDL_LITE_DESCRIPTOR gupnp_didl_lite_descriptor_get_type () + +G_DECLARE_DERIVABLE_TYPE (GUPnPDIDLLiteDescriptor, + gupnp_didl_lite_descriptor, + GUPNP, + DIDL_LITE_DESCRIPTOR, + GObject) + +struct _GUPnPDIDLLiteDescriptorClass { GObjectClass parent_class; /* future padding */ @@ -69,7 +45,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPDIDLLiteDescriptorClass; +}; GUPnPDIDLLiteDescriptor * gupnp_didl_lite_descriptor_new (void); diff --git a/libgupnp-av/gupnp-didl-lite-item.c b/libgupnp-av/gupnp-didl-lite-item.c index 03bbfc1..f6e73d8 100644 --- a/libgupnp-av/gupnp-didl-lite-item.c +++ b/libgupnp-av/gupnp-didl-lite-item.c @@ -35,7 +35,7 @@ G_DEFINE_TYPE (GUPnPDIDLLiteItem, gupnp_didl_lite_item, - GUPNP_TYPE_DIDL_LITE_OBJECT); + GUPNP_TYPE_DIDL_LITE_OBJECT) enum { PROP_0, diff --git a/libgupnp-av/gupnp-didl-lite-item.h b/libgupnp-av/gupnp-didl-lite-item.h index e55c271..9fa5431 100644 --- a/libgupnp-av/gupnp-didl-lite-item.h +++ b/libgupnp-av/gupnp-didl-lite-item.h @@ -22,43 +22,24 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GUPNP_DIDL_LITE_ITEM_H__ -#define __GUPNP_DIDL_LITE_ITEM_H__ +#ifndef GUPNP_DIDL_LITE_ITEM_H +#define GUPNP_DIDL_LITE_ITEM_H #include <glib-object.h> #include "gupnp-didl-lite-object.h" G_BEGIN_DECLS -GType -gupnp_didl_lite_item_get_type (void) G_GNUC_CONST; +G_DECLARE_DERIVABLE_TYPE(GUPnPDIDLLiteItem, + gupnp_didl_lite_item, + GUPNP, + DIDL_LITE_ITEM, + GUPnPDIDLLiteObject) #define GUPNP_TYPE_DIDL_LITE_ITEM \ (gupnp_didl_lite_item_get_type ()) -#define GUPNP_DIDL_LITE_ITEM(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_ITEM, \ - GUPnPDIDLLiteItem)) -#define GUPNP_DIDL_LITE_ITEM_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_ITEM, \ - GUPnPDIDLLiteItemClass)) -#define GUPNP_IS_DIDL_LITE_ITEM(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_ITEM)) -#define GUPNP_IS_DIDL_LITE_ITEM_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_ITEM)) -#define GUPNP_DIDL_LITE_ITEM_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_DIDL_LITE_ITEM, \ - GUPnPDIDLLiteItemClass)) -typedef struct { - GUPnPDIDLLiteObject parent; -} GUPnPDIDLLiteItem; - -typedef struct { +struct _GUPnPDIDLLiteItemClass { GUPnPDIDLLiteObjectClass parent_class; /* future padding */ @@ -66,7 +47,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPDIDLLiteItemClass; +}; const char * gupnp_didl_lite_item_get_ref_id (GUPnPDIDLLiteItem *item); @@ -84,4 +65,4 @@ gupnp_didl_lite_item_get_lifetime (GUPnPDIDLLiteItem *item); G_END_DECLS -#endif /* __GUPNP_DIDL_LITE_ITEM_H__ */ +#endif /* GUPNP_DIDL_LITE_ITEM_H */ diff --git a/libgupnp-av/gupnp-didl-lite-object.c b/libgupnp-av/gupnp-didl-lite-object.c index b8de85a..1687d45 100644 --- a/libgupnp-av/gupnp-didl-lite-object.c +++ b/libgupnp-av/gupnp-didl-lite-object.c @@ -54,7 +54,7 @@ struct _GUPnPDIDLLiteObjectPrivate { G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GUPnPDIDLLiteObject, gupnp_didl_lite_object, - G_TYPE_OBJECT); + G_TYPE_OBJECT) static XSDData *didl_lite_xsd; @@ -101,7 +101,6 @@ is_non_transcoded_resource (GUPnPDIDLLiteResource *resource, gpointer data) static void gupnp_didl_lite_object_init (GUPnPDIDLLiteObject *object) { - object->priv = gupnp_didl_lite_object_get_instance_private (object); } static void @@ -112,27 +111,29 @@ gupnp_didl_lite_object_set_property (GObject *object, { GUPnPDIDLLiteObject *didl_object; + GUPnPDIDLLiteObjectPrivate *priv; - didl_object = GUPNP_DIDL_LITE_OBJECT (object); + didl_object = GUPNP_DIDL_LITE_OBJECT(object); + priv = gupnp_didl_lite_object_get_instance_private(didl_object); switch (property_id) { case PROP_XML_NODE: - didl_object->priv->xml_node = g_value_get_pointer (value); + priv->xml_node = g_value_get_pointer (value); break; case PROP_XML_DOC: - didl_object->priv->xml_doc = g_value_dup_boxed (value); + priv->xml_doc = g_value_dup_boxed (value); break; case PROP_UPNP_NAMESPACE: - didl_object->priv->upnp_ns = g_value_get_pointer (value); + priv->upnp_ns = g_value_get_pointer (value); break; case PROP_DC_NAMESPACE: - didl_object->priv->dc_ns = g_value_get_pointer (value); + priv->dc_ns = g_value_get_pointer (value); break; case PROP_DLNA_NAMESPACE: - didl_object->priv->dlna_ns = g_value_get_pointer (value); + priv->dlna_ns = g_value_get_pointer (value); break; case PROP_PV_NAMESPACE: - didl_object->priv->pv_ns = g_value_get_pointer (value); + priv->pv_ns = g_value_get_pointer (value); break; case PROP_ID: gupnp_didl_lite_object_set_id (didl_object, @@ -360,8 +361,9 @@ gupnp_didl_lite_object_dispose (GObject *object) { GObjectClass *object_class; GUPnPDIDLLiteObjectPrivate *priv; + GUPnPDIDLLiteObject *self = GUPNP_DIDL_LITE_OBJECT (object); - priv = GUPNP_DIDL_LITE_OBJECT (object)->priv; + priv = gupnp_didl_lite_object_get_instance_private (self); g_clear_pointer (&priv->xml_doc, av_xml_doc_unref); @@ -844,6 +846,8 @@ get_contributor_list_by_name (GUPnPDIDLLiteObject *object, GList *contributors = NULL; GList *ret = NULL; GList *l; + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); contributors = gupnp_didl_lite_object_get_properties (object, name); @@ -857,7 +861,7 @@ get_contributor_list_by_name (GUPnPDIDLLiteObject *object, contributor = gupnp_didl_lite_contributor_new_from_xml (contributor_node, - object->priv->xml_doc); + priv->xml_doc); ret = g_list_append (ret, contributor); } @@ -875,6 +879,8 @@ get_contributors_xml_string_by_name (GUPnPDIDLLiteObject *object, char *ret = NULL; GList *l; xmlBuffer *buffer; + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); contributors = gupnp_didl_lite_object_get_properties (object, name); if (contributors == NULL) @@ -890,7 +896,7 @@ get_contributors_xml_string_by_name (GUPnPDIDLLiteObject *object, continue; xmlNodeDump (buffer, - object->priv->xml_doc->doc, + priv->xml_doc->doc, node, 0, 0); @@ -990,8 +996,10 @@ GUPnPAVXMLDoc * gupnp_didl_lite_object_get_gupnp_xml_doc (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return object->priv->xml_doc; + return priv->xml_doc; } /** @@ -1006,8 +1014,10 @@ xmlNode * gupnp_didl_lite_object_get_xml_node (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return object->priv->xml_node; + return priv->xml_node; } /** @@ -1022,10 +1032,12 @@ xmlNsPtr gupnp_didl_lite_object_get_upnp_namespace (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_ns (object->priv->xml_doc->doc, + return av_xml_util_get_ns (priv->xml_doc->doc, GUPNP_XML_NAMESPACE_UPNP, - &(object->priv->upnp_ns)); + &(priv->upnp_ns)); } /** @@ -1041,10 +1053,12 @@ xmlNsPtr gupnp_didl_lite_object_get_dc_namespace (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_ns (object->priv->xml_doc->doc, + return av_xml_util_get_ns (priv->xml_doc->doc, GUPNP_XML_NAMESPACE_DC, - &(object->priv->dc_ns)); + &(priv->dc_ns)); } /** @@ -1059,8 +1073,10 @@ const char * gupnp_didl_lite_object_get_upnp_class (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, + return av_xml_util_get_child_element_content (priv->xml_node, "class"); } @@ -1077,10 +1093,12 @@ xmlNsPtr gupnp_didl_lite_object_get_dlna_namespace (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_ns (object->priv->xml_doc->doc, + return av_xml_util_get_ns (priv->xml_doc->doc, GUPNP_XML_NAMESPACE_DLNA, - &(object->priv->dlna_ns)); + &(priv->dlna_ns)); } /** @@ -1096,10 +1114,12 @@ xmlNsPtr gupnp_didl_lite_object_get_pv_namespace (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_ns (object->priv->xml_doc->doc, + return av_xml_util_get_ns (priv->xml_doc->doc, GUPNP_XML_NAMESPACE_PV, - &(object->priv->pv_ns)); + &(priv->pv_ns)); } @@ -1115,9 +1135,10 @@ const char * gupnp_didl_lite_object_get_id (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_attribute_content (object->priv->xml_node, - "id"); + return av_xml_util_get_attribute_content (priv->xml_node, "id"); } /** @@ -1132,9 +1153,10 @@ const char * gupnp_didl_lite_object_get_parent_id (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_attribute_content (object->priv->xml_node, - "parentID"); + return av_xml_util_get_attribute_content (priv->xml_node, "parentID"); } /** @@ -1154,9 +1176,10 @@ gupnp_didl_lite_object_get_properties (GUPnPDIDLLiteObject *object, { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); g_return_val_if_fail (name != NULL, NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_elements_by_name (object->priv->xml_node, - name); + return av_xml_util_get_child_elements_by_name (priv->xml_node, name); } /** @@ -1172,8 +1195,10 @@ gupnp_didl_lite_object_is_restricted_set (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (object != NULL, FALSE); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), FALSE); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_attribute_content (object->priv->xml_node, + return av_xml_util_get_attribute_content (priv->xml_node, "restricted") != NULL; } @@ -1189,9 +1214,10 @@ gboolean gupnp_didl_lite_object_get_restricted (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), FALSE); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_boolean_attribute (object->priv->xml_node, - "restricted"); + return av_xml_util_get_boolean_attribute (priv->xml_node, "restricted"); } /** @@ -1206,9 +1232,10 @@ const char * gupnp_didl_lite_object_get_title (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, - "title"); + return av_xml_util_get_child_element_content (priv->xml_node, "title"); } /** @@ -1223,8 +1250,10 @@ const char * gupnp_didl_lite_object_get_creator (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, + return av_xml_util_get_child_element_content (priv->xml_node, "creator"); } @@ -1261,9 +1290,10 @@ const char * gupnp_didl_lite_object_get_artist (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, - "artist"); + return av_xml_util_get_child_element_content (priv->xml_node, "artist"); } /** @@ -1298,9 +1328,10 @@ const char * gupnp_didl_lite_object_get_author (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, - "author"); + return av_xml_util_get_child_element_content (priv->xml_node, "author"); } /** @@ -1337,6 +1368,8 @@ gupnp_didl_lite_object_get_descriptors (GUPnPDIDLLiteObject *object) GList *descriptors = NULL; GList *ret = NULL; GList *l; + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); @@ -1348,9 +1381,9 @@ gupnp_didl_lite_object_get_descriptors (GUPnPDIDLLiteObject *object) descriptor_node = (xmlNode *) l->data; - descriptor = gupnp_didl_lite_descriptor_new_from_xml - (descriptor_node, - object->priv->xml_doc); + descriptor = gupnp_didl_lite_descriptor_new_from_xml ( + descriptor_node, + priv->xml_doc); ret = g_list_append (ret, descriptor); } @@ -1372,9 +1405,10 @@ const char * gupnp_didl_lite_object_get_genre (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, - "genre"); + return av_xml_util_get_child_element_content (priv->xml_node, "genre"); } /** @@ -1389,8 +1423,10 @@ const char * gupnp_didl_lite_object_get_write_status (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, + return av_xml_util_get_child_element_content (priv->xml_node, "writeStatus"); } @@ -1406,9 +1442,10 @@ const char * gupnp_didl_lite_object_get_album (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, - "album"); + return av_xml_util_get_child_element_content (priv->xml_node, "album"); } /** @@ -1423,8 +1460,10 @@ const char * gupnp_didl_lite_object_get_album_art (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, + return av_xml_util_get_child_element_content (priv->xml_node, "albumArtURI"); } @@ -1440,8 +1479,10 @@ const char * gupnp_didl_lite_object_get_description (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, + return av_xml_util_get_child_element_content (priv->xml_node, "description"); } @@ -1457,9 +1498,10 @@ const char * gupnp_didl_lite_object_get_date (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_element_content (object->priv->xml_node, - "date"); + return av_xml_util_get_child_element_content (priv->xml_node, "date"); } /** @@ -1476,8 +1518,10 @@ gupnp_didl_lite_object_get_track_number (GUPnPDIDLLiteObject *object) const char *str; g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), -1); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - str = av_xml_util_get_child_element_content (object->priv->xml_node, + str = av_xml_util_get_child_element_content (priv->xml_node, "originalTrackNumber"); if (str == NULL) return -1; @@ -1502,8 +1546,10 @@ gupnp_didl_lite_object_get_dlna_managed (GUPnPDIDLLiteObject *object) g_return_val_if_fail (object != NULL, GUPNP_OCM_FLAGS_NONE); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), GUPNP_OCM_FLAGS_NONE); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - str = av_xml_util_get_attribute_content (object->priv->xml_node, + str = av_xml_util_get_attribute_content (priv->xml_node, "dlnaManaged"); if (str == NULL) return GUPNP_OCM_FLAGS_NONE; @@ -1526,8 +1572,10 @@ gupnp_didl_lite_object_get_update_id (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (object != NULL, 0); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), 0); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_uint_child_element (object->priv->xml_node, + return av_xml_util_get_uint_child_element (priv->xml_node, "objectUpdateID", 0); } @@ -1547,8 +1595,10 @@ gupnp_didl_lite_object_update_id_is_set (GUPnPDIDLLiteObject *object) g_return_val_if_fail (object != NULL, FALSE); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), FALSE); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - content = av_xml_util_get_child_element_content (object->priv->xml_node, + content = av_xml_util_get_child_element_content (priv->xml_node, "objectUpdateID"); return content != NULL; } @@ -1571,6 +1621,8 @@ gupnp_didl_lite_object_get_resources (GUPnPDIDLLiteObject *object) GList *ret = NULL; g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); resources = gupnp_didl_lite_object_get_properties (object, "res"); @@ -1581,11 +1633,10 @@ gupnp_didl_lite_object_get_resources (GUPnPDIDLLiteObject *object) res_node = (xmlNode *) res->data; /* Create a resource struct out of DIDLLite XML */ - resource = gupnp_didl_lite_resource_new_from_xml - (res_node, - object->priv->xml_doc, - object->priv->dlna_ns, - object->priv->pv_ns); + resource = gupnp_didl_lite_resource_new_from_xml (res_node, + priv->xml_doc, + priv->dlna_ns, + priv->pv_ns); ret = g_list_append (ret, resource); } @@ -1689,11 +1740,13 @@ gupnp_didl_lite_object_set_upnp_class (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_UPNP, - &(object->priv->upnp_ns), - object->priv->xml_doc->doc, + &(priv->upnp_ns), + priv->xml_doc->doc, "class", upnp_class); @@ -1713,8 +1766,10 @@ gupnp_didl_lite_object_set_id (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - xmlSetProp (object->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "id", (unsigned char *) id); @@ -1734,8 +1789,10 @@ gupnp_didl_lite_object_set_parent_id (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - xmlSetProp (object->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "parentID", (unsigned char *) parent_id); @@ -1757,12 +1814,14 @@ gupnp_didl_lite_object_set_restricted (GUPnPDIDLLiteObject *object, g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); if (restricted) str = "1"; else str = "0"; - xmlSetProp (object->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "restricted", (unsigned char *) str); @@ -1782,11 +1841,13 @@ gupnp_didl_lite_object_set_title (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_DC, - &(object->priv->dc_ns), - object->priv->xml_doc->doc, + &(priv->dc_ns), + priv->xml_doc->doc, "title", title); @@ -1806,11 +1867,13 @@ gupnp_didl_lite_object_set_creator (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_DC, - &(object->priv->dc_ns), - object->priv->xml_doc->doc, + &(priv->dc_ns), + priv->xml_doc->doc, "creator", creator); @@ -1833,14 +1896,16 @@ gupnp_didl_lite_object_add_creator (GUPnPDIDLLiteObject *object) g_return_val_if_fail (object != NULL, NULL); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - res_node = xmlNewChild (object->priv->xml_node, - object->priv->dc_ns, + res_node = xmlNewChild (priv->xml_node, + priv->dc_ns, (unsigned char *) "creator", NULL); return gupnp_didl_lite_contributor_new_from_xml (res_node, - object->priv->xml_doc); + priv->xml_doc); } @@ -1859,11 +1924,13 @@ gupnp_didl_lite_object_set_artist (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_UPNP, - &(object->priv->upnp_ns), - object->priv->xml_doc->doc, + &(priv->upnp_ns), + priv->xml_doc->doc, "artist", artist); @@ -1886,14 +1953,16 @@ gupnp_didl_lite_object_add_artist (GUPnPDIDLLiteObject *object) g_return_val_if_fail (object != NULL, NULL); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - res_node = xmlNewChild (object->priv->xml_node, - object->priv->upnp_ns, + res_node = xmlNewChild (priv->xml_node, + priv->upnp_ns, (unsigned char *) "artist", NULL); return gupnp_didl_lite_contributor_new_from_xml (res_node, - object->priv->xml_doc); + priv->xml_doc); } /** @@ -1911,11 +1980,13 @@ gupnp_didl_lite_object_set_author (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_DC, - &(object->priv->upnp_ns), - object->priv->xml_doc->doc, + &(priv->upnp_ns), + priv->xml_doc->doc, "author", author); @@ -1938,14 +2009,16 @@ gupnp_didl_lite_object_add_author (GUPnPDIDLLiteObject *object) g_return_val_if_fail (object != NULL, NULL); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - res_node = xmlNewChild (object->priv->xml_node, - object->priv->upnp_ns, + res_node = xmlNewChild (priv->xml_node, + priv->upnp_ns, (unsigned char *) "author", NULL); return gupnp_didl_lite_contributor_new_from_xml (res_node, - object->priv->xml_doc); + priv->xml_doc); } /** @@ -1961,11 +2034,13 @@ gupnp_didl_lite_object_set_genre (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_UPNP, - &(object->priv->upnp_ns), - object->priv->xml_doc->doc, + &(priv->upnp_ns), + priv->xml_doc->doc, "genre", genre); @@ -1985,11 +2060,13 @@ gupnp_didl_lite_object_set_write_status (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_DC, - &(object->priv->dc_ns), - object->priv->xml_doc->doc, + &(priv->dc_ns), + priv->xml_doc->doc, "writeStatus", write_status); @@ -2009,11 +2086,13 @@ gupnp_didl_lite_object_set_album (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_UPNP, - &(object->priv->upnp_ns), - object->priv->xml_doc->doc, + &(priv->upnp_ns), + priv->xml_doc->doc, "album", album); @@ -2035,20 +2114,22 @@ gupnp_didl_lite_object_set_album_art (GUPnPDIDLLiteObject *object, g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - node = av_xml_util_set_child (object->priv->xml_node, + node = av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_UPNP, - &(object->priv->upnp_ns), - object->priv->xml_doc->doc, + &(priv->upnp_ns), + priv->xml_doc->doc, "albumArtURI", album_art); - av_xml_util_get_ns (object->priv->xml_doc->doc, + av_xml_util_get_ns (priv->xml_doc->doc, GUPNP_XML_NAMESPACE_DLNA, - &(object->priv->dlna_ns)); + &(priv->dlna_ns)); xmlSetNsProp (node, - object->priv->dlna_ns, + priv->dlna_ns, (const unsigned char *) "profileID", (const unsigned char *) "JPEG_TN"); @@ -2068,11 +2149,13 @@ gupnp_didl_lite_object_set_description (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_DC, - &(object->priv->dc_ns), - object->priv->xml_doc->doc, + &(priv->dc_ns), + priv->xml_doc->doc, "description", description); @@ -2092,11 +2175,13 @@ gupnp_didl_lite_object_set_date (GUPnPDIDLLiteObject *object, { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_DC, - &(object->priv->dc_ns), - object->priv->xml_doc->doc, + &(priv->dc_ns), + priv->xml_doc->doc, "date", date); @@ -2118,12 +2203,14 @@ gupnp_didl_lite_object_set_track_number (GUPnPDIDLLiteObject *object, g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); str = g_strdup_printf ("%d", track_number); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_UPNP, - &(object->priv->upnp_ns), - object->priv->xml_doc->doc, + &(priv->upnp_ns), + priv->xml_doc->doc, "originalTrackNumber", str); g_free (str); @@ -2146,16 +2233,18 @@ gupnp_didl_lite_object_set_dlna_managed (GUPnPDIDLLiteObject *object, g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_get_ns (object->priv->xml_doc->doc, + av_xml_util_get_ns (priv->xml_doc->doc, GUPNP_XML_NAMESPACE_DLNA, - &(object->priv->dlna_ns)); + &(priv->dlna_ns)); str = g_strdup_printf ("%08x", dlna_managed); - xmlSetNsProp (object->priv->xml_node, - object->priv->dlna_ns, - (const unsigned char *) "dlnaManaged", - (const unsigned char *) str); + xmlSetNsProp (priv->xml_node, + priv->dlna_ns, + (xmlChar *) "dlnaManaged", + (xmlChar *) str); g_free (str); g_object_notify (G_OBJECT (object), "dlna-managed"); @@ -2176,12 +2265,14 @@ gupnp_didl_lite_object_set_update_id (GUPnPDIDLLiteObject *object, g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); str = g_strdup_printf ("%u", update_id); - av_xml_util_set_child (object->priv->xml_node, + av_xml_util_set_child (priv->xml_node, GUPNP_XML_NAMESPACE_UPNP, - &(object->priv->upnp_ns), - object->priv->xml_doc->doc, + &(priv->upnp_ns), + priv->xml_doc->doc, "objectUpdateID", str); g_free (str); @@ -2200,8 +2291,10 @@ gupnp_didl_lite_object_unset_update_id (GUPnPDIDLLiteObject *object) { g_return_if_fail (object != NULL); g_return_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object)); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - av_xml_util_unset_child (object->priv->xml_node, + av_xml_util_unset_child (priv->xml_node, "objectUpdateID"); g_object_notify (G_OBJECT (object), "update-id"); @@ -2221,16 +2314,18 @@ gupnp_didl_lite_object_add_resource (GUPnPDIDLLiteObject *object) xmlNode *res_node; g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - res_node = xmlNewChild (object->priv->xml_node, + res_node = xmlNewChild (priv->xml_node, NULL, (unsigned char *) "res", NULL); return gupnp_didl_lite_resource_new_from_xml (res_node, - object->priv->xml_doc, - object->priv->dlna_ns, - object->priv->pv_ns); + priv->xml_doc, + priv->dlna_ns, + priv->pv_ns); } /** @@ -2247,14 +2342,14 @@ gupnp_didl_lite_object_add_descriptor (GUPnPDIDLLiteObject *object) xmlNode *desc_node; g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - desc_node = xmlNewChild (object->priv->xml_node, - NULL, - (unsigned char *) "desc", - NULL); + desc_node = + xmlNewChild (priv->xml_node, NULL, (xmlChar *) "desc", NULL); return gupnp_didl_lite_descriptor_new_from_xml (desc_node, - object->priv->xml_doc); + priv->xml_doc); } /** @@ -2270,9 +2365,11 @@ char * gupnp_didl_lite_object_get_title_xml_string (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_string (object->priv->xml_node, - object->priv->xml_doc->doc, + return av_xml_util_get_child_string (priv->xml_node, + priv->xml_doc->doc, "title"); } @@ -2289,9 +2386,11 @@ char * gupnp_didl_lite_object_get_date_xml_string (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_string (object->priv->xml_node, - object->priv->xml_doc->doc, + return av_xml_util_get_child_string (priv->xml_node, + priv->xml_doc->doc, "date"); } @@ -2308,9 +2407,11 @@ char * gupnp_didl_lite_object_get_upnp_class_xml_string (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_string (object->priv->xml_node, - object->priv->xml_doc->doc, + return av_xml_util_get_child_string (priv->xml_node, + priv->xml_doc->doc, "class"); } @@ -2327,9 +2428,11 @@ char * gupnp_didl_lite_object_get_album_xml_string (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_string (object->priv->xml_node, - object->priv->xml_doc->doc, + return av_xml_util_get_child_string (priv->xml_node, + priv->xml_doc->doc, "album"); } @@ -2346,9 +2449,11 @@ char * gupnp_didl_lite_object_get_track_number_xml_string (GUPnPDIDLLiteObject *object) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_OBJECT (object), NULL); + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - return av_xml_util_get_child_string (object->priv->xml_node, - object->priv->xml_doc->doc, + return av_xml_util_get_child_string (priv->xml_node, + priv->xml_doc->doc, "originalTrackNumber"); } @@ -2481,9 +2586,11 @@ gupnp_didl_lite_object_apply_fragments (GUPnPDIDLLiteObject *object, goto out; } + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); - original.doc = object->priv->xml_doc->doc; - original.node = object->priv->xml_node; + original.doc = priv->xml_doc->doc; + original.node = priv->xml_node; modified.doc = xmlCopyDoc (original.doc, 1); if (modified.doc == NULL) { @@ -2515,7 +2622,7 @@ gupnp_didl_lite_object_apply_fragments (GUPnPDIDLLiteObject *object, goto out; } - if (!fragment_util_apply_modification (&object->priv->xml_node, + if (!fragment_util_apply_modification (&priv->xml_node, &modified)) result = GUPNP_DIDL_LITE_FRAGMENT_RESULT_UNKNOWN_ERROR; out: @@ -2536,13 +2643,11 @@ gupnp_didl_lite_object_get_xml_string (GUPnPDIDLLiteObject *object) { xmlBuffer *buffer = NULL; char *ret = NULL; + GUPnPDIDLLiteObjectPrivate *priv; + priv = gupnp_didl_lite_object_get_instance_private (object); buffer = xmlBufferCreate (); - xmlNodeDump (buffer, - object->priv->xml_doc->doc, - object->priv->xml_node, - 0, - 0); + xmlNodeDump (buffer, priv->xml_doc->doc, priv->xml_node, 0, 0); ret = g_strndup ((char *) xmlBufferContent (buffer), xmlBufferLength (buffer)); diff --git a/libgupnp-av/gupnp-didl-lite-object.h b/libgupnp-av/gupnp-didl-lite-object.h index 61c525a..cf5afa1 100644 --- a/libgupnp-av/gupnp-didl-lite-object.h +++ b/libgupnp-av/gupnp-didl-lite-object.h @@ -38,39 +38,18 @@ G_BEGIN_DECLS -GType -gupnp_didl_lite_object_get_type (void) G_GNUC_CONST; +G_DECLARE_DERIVABLE_TYPE(GUPnPDIDLLiteObject, + gupnp_didl_lite_object, + GUPNP, + DIDL_LITE_OBJECT, + GObject) #define GUPNP_TYPE_DIDL_LITE_OBJECT \ (gupnp_didl_lite_object_get_type ()) -#define GUPNP_DIDL_LITE_OBJECT(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_OBJECT, \ - GUPnPDIDLLiteObject)) -#define GUPNP_DIDL_LITE_OBJECT_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_OBJECT, \ - GUPnPDIDLLiteObjectClass)) -#define GUPNP_IS_DIDL_LITE_OBJECT(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_OBJECT)) -#define GUPNP_IS_DIDL_LITE_OBJECT_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_OBJECT)) -#define GUPNP_DIDL_LITE_OBJECT_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_DIDL_LITE_OBJECT, \ - GUPnPDIDLLiteObjectClass)) typedef struct _GUPnPDIDLLiteObjectPrivate GUPnPDIDLLiteObjectPrivate; -typedef struct { - GObject parent; - - GUPnPDIDLLiteObjectPrivate *priv; -} GUPnPDIDLLiteObject; - -typedef struct { +struct _GUPnPDIDLLiteObjectClass { GObjectClass parent_class; /* future padding */ @@ -78,7 +57,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPDIDLLiteObjectClass; +}; xmlNode * gupnp_didl_lite_object_get_xml_node (GUPnPDIDLLiteObject *object); diff --git a/libgupnp-av/gupnp-didl-lite-parser.c b/libgupnp-av/gupnp-didl-lite-parser.c index 1ea06d2..ad8e779 100644 --- a/libgupnp-av/gupnp-didl-lite-parser.c +++ b/libgupnp-av/gupnp-didl-lite-parser.c @@ -36,7 +36,7 @@ G_DEFINE_TYPE (GUPnPDIDLLiteParser, gupnp_didl_lite_parser, - G_TYPE_OBJECT); + G_TYPE_OBJECT) enum { OBJECT_AVAILABLE, diff --git a/libgupnp-av/gupnp-didl-lite-parser.h b/libgupnp-av/gupnp-didl-lite-parser.h index 764dc1e..6c37db9 100644 --- a/libgupnp-av/gupnp-didl-lite-parser.h +++ b/libgupnp-av/gupnp-didl-lite-parser.h @@ -27,37 +27,16 @@ G_BEGIN_DECLS -GType -gupnp_didl_lite_parser_get_type (void) G_GNUC_CONST; +G_DECLARE_DERIVABLE_TYPE(GUPnPDIDLLiteParser, + gupnp_didl_lite_parser, + GUPNP, + DIDL_LITE_PARSER, + GObject) #define GUPNP_TYPE_DIDL_LITE_PARSER \ (gupnp_didl_lite_parser_get_type ()) -#define GUPNP_DIDL_LITE_PARSER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_PARSER, \ - GUPnPDIDLLiteParser)) -#define GUPNP_DIDL_LITE_PARSER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_PARSER, \ - GUPnPDIDLLiteParserClass)) -#define GUPNP_IS_DIDL_LITE_PARSER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_PARSER)) -#define GUPNP_IS_DIDL_LITE_PARSER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_PARSER)) -#define GUPNP_DIDL_LITE_PARSER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_DIDL_LITE_PARSER, \ - GUPnPDIDLLiteParserClass)) -typedef struct { - GObject parent; - - gpointer gupnp_reserved; -} GUPnPDIDLLiteParser; - -typedef struct { +struct _GUPnPDIDLLiteParserClass { GObjectClass parent_class; /* signals */ @@ -74,7 +53,7 @@ typedef struct { void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); void (* _gupnp_reserved5) (void); -} GUPnPDIDLLiteParserClass; +}; GUPnPDIDLLiteParser * gupnp_didl_lite_parser_new (void); diff --git a/libgupnp-av/gupnp-didl-lite-resource.c b/libgupnp-av/gupnp-didl-lite-resource.c index a977ebd..03e9591 100644 --- a/libgupnp-av/gupnp-didl-lite-resource.c +++ b/libgupnp-av/gupnp-didl-lite-resource.c @@ -47,10 +47,11 @@ struct _GUPnPDIDLLiteResourcePrivate { GUPnPProtocolInfo *protocol_info; }; +typedef struct _GUPnPDIDLLiteResourcePrivate GUPnPDIDLLiteResourcePrivate; G_DEFINE_TYPE_WITH_PRIVATE (GUPnPDIDLLiteResource, gupnp_didl_lite_resource, - G_TYPE_OBJECT); + G_TYPE_OBJECT) enum { PROP_0, @@ -86,32 +87,31 @@ enum { }; static void -get_resolution_info (GUPnPDIDLLiteResource *resource, - int *width, - int *height) +get_resolution_info (xmlNodePtr xml_node, int *width, int *height) { const char *resolution; char **tokens; - resolution = av_xml_util_get_attribute_content - (resource->priv->xml_node, - "resolution"); + if (width) + *width = 0; + if (height) + *height = 0; + + resolution = av_xml_util_get_attribute_content (xml_node, "resolution"); if (resolution == NULL) return; tokens = g_strsplit (resolution, "x", -1); if (tokens == NULL || tokens[0] == NULL || tokens[1] == NULL) { g_warning ("Failed to resolution string '%s'\n", resolution); + } else { - goto return_point; + if (width) + *width = atoi (tokens[0]); + if (height) + *height = atoi (tokens[1]); } - if (width) - *width = atoi (tokens[0]); - if (height) - *height = atoi (tokens[1]); - -return_point: g_strfreev (tokens); } @@ -128,8 +128,6 @@ on_protocol_info_changed (GUPnPProtocolInfo *info, static void gupnp_didl_lite_resource_init (GUPnPDIDLLiteResource *resource) { - resource->priv = - gupnp_didl_lite_resource_get_instance_private (resource); } static void @@ -138,16 +136,16 @@ gupnp_didl_lite_resource_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - GUPnPDIDLLiteResource *resource; - - resource = GUPNP_DIDL_LITE_RESOURCE (object); + GUPnPDIDLLiteResource *resource = GUPNP_DIDL_LITE_RESOURCE (object); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); switch (property_id) { case PROP_XML_NODE: - resource->priv->xml_node = g_value_get_pointer (value); + priv->xml_node = g_value_get_pointer (value); break; case PROP_XML_DOC: - resource->priv->xml_doc = g_value_dup_boxed (value); + priv->xml_doc = g_value_dup_boxed (value); break; case PROP_URI: gupnp_didl_lite_resource_set_uri (resource, @@ -172,10 +170,10 @@ gupnp_didl_lite_resource_set_property (GObject *object, g_value_get_int64 (value)); break; case PROP_DLNA_NAMESPACE: - resource->priv->dlna_ns = g_value_get_pointer (value); + priv->dlna_ns = g_value_get_pointer (value); break; case PROP_PV_NAMESPACE: - resource->priv->pv_ns = g_value_get_pointer (value); + priv->pv_ns = g_value_get_pointer (value); break; case PROP_CLEAR_TEXT_SIZE: gupnp_didl_lite_resource_set_cleartext_size (resource, @@ -381,16 +379,12 @@ static void gupnp_didl_lite_resource_dispose (GObject *object) { GObjectClass *object_class; - GUPnPDIDLLiteResourcePrivate *priv; - - priv = GUPNP_DIDL_LITE_RESOURCE (object)->priv; + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private ( + GUPNP_DIDL_LITE_RESOURCE (object)); g_clear_pointer (&priv->xml_doc, av_xml_doc_unref); - - if (priv->protocol_info != NULL) { - g_object_unref (priv->protocol_info); - priv->protocol_info = NULL; - } + g_clear_object (&priv->protocol_info); object_class = G_OBJECT_CLASS (gupnp_didl_lite_resource_parent_class); object_class->dispose (object); @@ -873,8 +867,10 @@ xmlNode * gupnp_didl_lite_resource_get_xml_node (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return resource->priv->xml_node; + return priv->xml_node; } /** @@ -890,8 +886,10 @@ xmlNsPtr gupnp_didl_lite_resource_get_dlna_namespace (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return resource->priv->dlna_ns; + return priv->dlna_ns; } /** @@ -907,8 +905,10 @@ xmlNsPtr gupnp_didl_lite_resource_get_pv_namespace (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return resource->priv->pv_ns; + return priv->pv_ns; } @@ -918,17 +918,19 @@ gupnp_didl_lite_resource_get_pv_namespace (GUPnPDIDLLiteResource *resource) * * Get the URI associated with the @resource. * - * Return value: The of URI the @resource or %NULL. + * Return value:(transfer none)(nullable): The of URI the @resource or %NULL. **/ const char * gupnp_didl_lite_resource_get_uri (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - if (G_UNLIKELY (resource->priv->xml_node->children == NULL)) + if (G_UNLIKELY (priv->xml_node->children == NULL)) return NULL; - return (const char *) resource->priv->xml_node->children->content; + return (const char *) priv->xml_node->children->content; } /** @@ -943,9 +945,10 @@ const char * gupnp_didl_lite_resource_get_import_uri (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_attribute_content (resource->priv->xml_node, - "importUri"); + return av_xml_util_get_attribute_content (priv->xml_node, "importUri"); } /** @@ -954,8 +957,8 @@ gupnp_didl_lite_resource_get_import_uri (GUPnPDIDLLiteResource *resource) * * Get the protocol info associated with the @resource. * - * Returns: (transfer none): The protocol info associated with the @resource or %NULL. The - * returned object must not be unrefed. + * Returns: (transfer none)(nullable): The protocol info associated with the + * @resource or %NULL. The returned object must not be unrefed. **/ GUPnPProtocolInfo * gupnp_didl_lite_resource_get_protocol_info (GUPnPDIDLLiteResource *resource) @@ -965,13 +968,14 @@ gupnp_didl_lite_resource_get_protocol_info (GUPnPDIDLLiteResource *resource) GError *error; g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - if (resource->priv->protocol_info != NULL) - return resource->priv->protocol_info; + if (priv->protocol_info != NULL) + return priv->protocol_info; - protocol_info = av_xml_util_get_attribute_content - (resource->priv->xml_node, - "protocolInfo"); + protocol_info = av_xml_util_get_attribute_content (priv->xml_node, + "protocolInfo"); if (protocol_info == NULL) return NULL; @@ -985,7 +989,7 @@ gupnp_didl_lite_resource_get_protocol_info (GUPnPDIDLLiteResource *resource) g_error_free (error); } - resource->priv->protocol_info = info; + priv->protocol_info = info; return info; } @@ -1016,10 +1020,10 @@ gint64 gupnp_didl_lite_resource_get_size64 (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_int64_attribute (resource->priv->xml_node, - "size", - -1); + return av_xml_util_get_int64_attribute (priv->xml_node, "size", -1); } /** @@ -1034,8 +1038,10 @@ gint64 gupnp_didl_lite_resource_get_cleartext_size (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_int64_attribute (resource->priv->xml_node, + return av_xml_util_get_int64_attribute (priv->xml_node, "cleartextSize", -1); } @@ -1055,10 +1061,11 @@ gupnp_didl_lite_resource_get_duration (GUPnPDIDLLiteResource *resource) long duration; g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - duration_str = av_xml_util_get_attribute_content - (resource->priv->xml_node, - "duration"); + duration_str = + av_xml_util_get_attribute_content (priv->xml_node, "duration"); duration = seconds_from_time (duration_str); return duration; @@ -1076,10 +1083,10 @@ int gupnp_didl_lite_resource_get_bitrate (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_long_attribute (resource->priv->xml_node, - "bitrate", - -1); + return av_xml_util_get_long_attribute (priv->xml_node, "bitrate", -1); } /** @@ -1094,8 +1101,10 @@ int gupnp_didl_lite_resource_get_sample_freq (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_long_attribute (resource->priv->xml_node, + return av_xml_util_get_long_attribute (priv->xml_node, "sampleFrequency", -1); } @@ -1112,8 +1121,10 @@ int gupnp_didl_lite_resource_get_bits_per_sample (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_long_attribute (resource->priv->xml_node, + return av_xml_util_get_long_attribute (priv->xml_node, "bitsPerSample", -1); } @@ -1130,9 +1141,10 @@ const char * gupnp_didl_lite_resource_get_protection (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_attribute_content (resource->priv->xml_node, - "protection"); + return av_xml_util_get_attribute_content (priv->xml_node, "protection"); } /** @@ -1147,8 +1159,10 @@ int gupnp_didl_lite_resource_get_audio_channels (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_long_attribute (resource->priv->xml_node, + return av_xml_util_get_long_attribute (priv->xml_node, "nrAudioChannels", -1); } @@ -1167,8 +1181,10 @@ gupnp_didl_lite_resource_get_width (GUPnPDIDLLiteResource *resource) int width = -1; g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - get_resolution_info (resource, &width, NULL); + get_resolution_info (priv->xml_node, &width, NULL); return width; } @@ -1187,8 +1203,10 @@ gupnp_didl_lite_resource_get_height (GUPnPDIDLLiteResource *resource) int height = -1; g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - get_resolution_info (resource, NULL, &height); + get_resolution_info (priv->xml_node, NULL, &height); return height; } @@ -1205,8 +1223,10 @@ int gupnp_didl_lite_resource_get_color_depth (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), -1); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_long_attribute (resource->priv->xml_node, + return av_xml_util_get_long_attribute (priv->xml_node, "colorDepth", -1); } @@ -1223,8 +1243,10 @@ guint gupnp_didl_lite_resource_get_update_count (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), 0); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_uint_attribute (resource->priv->xml_node, + return av_xml_util_get_uint_attribute (priv->xml_node, "updateCount", -1); } @@ -1241,8 +1263,10 @@ guint gupnp_didl_lite_resource_get_track_total (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), 0); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_uint_attribute (resource->priv->xml_node, + return av_xml_util_get_uint_attribute (priv->xml_node, "trackTotal", -1); } @@ -1258,13 +1282,12 @@ gupnp_didl_lite_resource_get_track_total (GUPnPDIDLLiteResource *resource) gboolean gupnp_didl_lite_resource_update_count_is_set (GUPnPDIDLLiteResource *resource) { - const char *content; - g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), FALSE); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - content = av_xml_util_get_attribute_content (resource->priv->xml_node, - "updateCount"); - return content != NULL; + return av_xml_util_get_attribute_content (priv->xml_node, + "updateCount") != NULL; } /** @@ -1278,13 +1301,12 @@ gupnp_didl_lite_resource_update_count_is_set (GUPnPDIDLLiteResource *resource) gboolean gupnp_didl_lite_resource_track_total_is_set (GUPnPDIDLLiteResource *resource) { - const char *content; - g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), FALSE); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - content = av_xml_util_get_attribute_content (resource->priv->xml_node, - "trackTotal"); - return content != NULL; + return av_xml_util_get_attribute_content (priv->xml_node, + "trackTotal") != NULL; } @@ -1303,10 +1325,12 @@ gupnp_didl_lite_resource_set_uri (GUPnPDIDLLiteResource *resource, g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); g_return_if_fail (uri != NULL); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - escaped = xmlEncodeSpecialChars (resource->priv->xml_doc->doc, + escaped = xmlEncodeSpecialChars (priv->xml_doc->doc, (const unsigned char *) uri); - xmlNodeSetContent (resource->priv->xml_node, escaped); + xmlNodeSetContent (priv->xml_node, escaped); xmlFree (escaped); g_object_notify (G_OBJECT (resource), "uri"); @@ -1324,8 +1348,11 @@ gupnp_didl_lite_resource_set_import_uri (GUPnPDIDLLiteResource *resource, const char *import_uri) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - xmlSetProp (resource->priv->xml_node, + // FIXME: Why is this URI not escaped? + xmlSetProp (priv->xml_node, (unsigned char *) "importUri", (unsigned char *) import_uri); @@ -1347,24 +1374,25 @@ gupnp_didl_lite_resource_set_protocol_info (GUPnPDIDLLiteResource *resource, g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); g_return_if_fail (GUPNP_IS_PROTOCOL_INFO (info)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); str = gupnp_protocol_info_to_string (info); - xmlSetProp (resource->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "protocolInfo", (unsigned char *) str); g_free (str); /* Get a ref first in case it's the same object that we already have */ g_object_ref (info); - if (resource->priv->protocol_info != NULL) - g_object_unref (resource->priv->protocol_info); - resource->priv->protocol_info = info; + g_clear_object (&priv->protocol_info); + priv->protocol_info = info; /* We need to listen to changes to properties so we update the * corresponding xml property. */ g_signal_handlers_disconnect_by_func (info, - on_protocol_info_changed, + (gpointer) on_protocol_info_changed, resource); g_signal_connect (info, "notify", @@ -1402,15 +1430,16 @@ gupnp_didl_lite_resource_set_size64 (GUPnPDIDLLiteResource *resource, gint64 size) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); if (size < 0) - xmlUnsetProp (resource->priv->xml_node, - (unsigned char *) "size"); + xmlUnsetProp (priv->xml_node, (unsigned char *) "size"); else { char *str; str = g_strdup_printf ("%" G_GINT64_FORMAT, size); - xmlSetProp (resource->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "size", (unsigned char *) str); g_free (str); @@ -1434,20 +1463,22 @@ gupnp_didl_lite_resource_set_cleartext_size gint64 cleartext_size) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); if (cleartext_size < 0) - xmlUnsetNsProp (resource->priv->xml_node, - resource->priv->dlna_ns, + xmlUnsetNsProp (priv->xml_node, + priv->dlna_ns, (unsigned char *) "cleartextSize"); else { char *str; str = g_strdup_printf ("%" G_GINT64_FORMAT, cleartext_size); - av_xml_util_get_ns (resource->priv->xml_doc->doc, + av_xml_util_get_ns (priv->xml_doc->doc, GUPNP_XML_NAMESPACE_DLNA, - &(resource->priv->dlna_ns)); + &(priv->dlna_ns)); - xmlSetNsProp (resource->priv->xml_node, - resource->priv->dlna_ns, + xmlSetNsProp (priv->xml_node, + priv->dlna_ns, (unsigned char *) "cleartextSize", (unsigned char *) str); @@ -1470,15 +1501,16 @@ gupnp_didl_lite_resource_set_duration (GUPnPDIDLLiteResource *resource, glong duration) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); if (duration < 0) - xmlUnsetProp (resource->priv->xml_node, - (unsigned char *) "duration"); + xmlUnsetProp (priv->xml_node, (unsigned char *) "duration"); else { char *str; str = seconds_to_time (duration); - xmlSetProp (resource->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "duration", (unsigned char *) str); g_free (str); @@ -1500,15 +1532,16 @@ gupnp_didl_lite_resource_set_bitrate (GUPnPDIDLLiteResource *resource, int bitrate) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); if (bitrate < 0) - xmlUnsetProp (resource->priv->xml_node, - (unsigned char *) "bitrate"); + xmlUnsetProp (priv->xml_node, (unsigned char *) "bitrate"); else { char *str; str = g_strdup_printf ("%d", bitrate); - xmlSetProp (resource->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "bitrate", (unsigned char *) str); g_free (str); @@ -1530,15 +1563,17 @@ gupnp_didl_lite_resource_set_sample_freq (GUPnPDIDLLiteResource *resource, int sample_freq) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); if (sample_freq < 0) - xmlUnsetProp (resource->priv->xml_node, + xmlUnsetProp (priv->xml_node, (unsigned char *) "sampleFrequency"); else { char *str; str = g_strdup_printf ("%d", sample_freq); - xmlSetProp (resource->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "sampleFrequency", (unsigned char *) str); g_free (str); @@ -1561,18 +1596,17 @@ gupnp_didl_lite_resource_set_bits_per_sample int sample_size) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); if (sample_size < 0) - xmlUnsetProp (resource->priv->xml_node, + xmlUnsetProp (priv->xml_node, (unsigned char *) "bitsPerSample"); else { - char *str; - - str = g_strdup_printf ("%d", sample_size); - xmlSetProp (resource->priv->xml_node, - (unsigned char *) "bitsPerSample", - (unsigned char *) str); - g_free (str); + av_xml_util_set_prop (priv->xml_node, + "bitsPerSample", + "%d", + sample_size); } g_object_notify (G_OBJECT (resource), "bits-per-sample"); @@ -1591,8 +1625,10 @@ gupnp_didl_lite_resource_set_protection (GUPnPDIDLLiteResource *resource, const char *protection) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - xmlSetProp (resource->priv->xml_node, + xmlSetProp (priv->xml_node, (unsigned char *) "protection", (unsigned char *) protection); @@ -1612,18 +1648,16 @@ gupnp_didl_lite_resource_set_audio_channels (GUPnPDIDLLiteResource *resource, int n_channels) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); if (n_channels < 0) - xmlUnsetProp (resource->priv->xml_node, + xmlUnsetProp (priv->xml_node, (unsigned char *) "nrAudioChannels"); else { - char *str; - - str = g_strdup_printf ("%d", n_channels); - xmlSetProp (resource->priv->xml_node, - (unsigned char *) "nrAudioChannels", - (unsigned char *) str); - g_free (str); + av_xml_util_set_int_prop (priv->xml_node, + "nrAudioChannels", + n_channels); } g_object_notify (G_OBJECT (resource), "audio-channels"); @@ -1641,22 +1675,19 @@ void gupnp_didl_lite_resource_set_width (GUPnPDIDLLiteResource *resource, int width) { - char *resolution; int height = -1; g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - get_resolution_info (resource, NULL, &height); + get_resolution_info (priv->xml_node, NULL, &height); if (width < 0 && height < 0) - xmlUnsetProp (resource->priv->xml_node, + xmlUnsetProp (priv->xml_node, (unsigned char *) "resolution"); else { - resolution = g_strdup_printf ("%dx%d", width, height); - xmlSetProp (resource->priv->xml_node, - (unsigned char *) "resolution", - (unsigned char *) resolution); - g_free (resolution); + av_xml_util_set_prop (priv->xml_node, "resolution", "%dx%d", width, height); } g_object_notify (G_OBJECT (resource), "width"); @@ -1677,20 +1708,16 @@ gupnp_didl_lite_resource_set_height (GUPnPDIDLLiteResource *resource, int width = -1; g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - get_resolution_info (resource, &width, NULL); + get_resolution_info (priv->xml_node, &width, NULL); if (width < 0 && height < 0) - xmlUnsetProp (resource->priv->xml_node, + xmlUnsetProp (priv->xml_node, (unsigned char *) "resolution"); else { - char *resolution; - - resolution = g_strdup_printf ("%dx%d", width, height); - xmlSetProp (resource->priv->xml_node, - (unsigned char *) "resolution", - (unsigned char *) resolution); - g_free (resolution); + av_xml_util_set_prop (priv->xml_node, "resolution", "%dx%d", width, height); } g_object_notify (G_OBJECT (resource), "height"); @@ -1709,18 +1736,16 @@ gupnp_didl_lite_resource_set_color_depth (GUPnPDIDLLiteResource *resource, int color_depth) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); if (color_depth < 0) - xmlUnsetProp (resource->priv->xml_node, - (unsigned char *) "colorDepth"); + xmlUnsetProp (priv->xml_node, (unsigned char *) "colorDepth"); else { - char *str; - - str = g_strdup_printf ("%d", color_depth); - xmlSetProp (resource->priv->xml_node, - (unsigned char *) "colorDepth", - (unsigned char *) str); - g_free (str); + av_xml_util_set_prop (priv->xml_node, + "colorDepth", + "%d", + color_depth); } g_object_notify (G_OBJECT (resource), "color-depth"); @@ -1737,15 +1762,13 @@ void gupnp_didl_lite_resource_set_update_count (GUPnPDIDLLiteResource *resource, guint update_count) { - char *str; - g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); - - str = g_strdup_printf ("%u", update_count); - xmlSetProp (resource->priv->xml_node, - (unsigned char *) "updateCount", - (unsigned char *) str); - g_free (str); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); + av_xml_util_set_prop (priv->xml_node, + "updateCount", + "%u", + update_count); g_object_notify (G_OBJECT (resource), "update-count"); } @@ -1761,21 +1784,18 @@ void gupnp_didl_lite_resource_set_track_total (GUPnPDIDLLiteResource *resource, guint track_total) { - char *str; - g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - av_xml_util_get_ns (resource->priv->xml_doc->doc, + av_xml_util_get_ns (priv->xml_doc->doc, GUPNP_XML_NAMESPACE_DLNA, - &(resource->priv->dlna_ns)); - - str = g_strdup_printf ("%u", track_total); - xmlSetNsProp (resource->priv->xml_node, - resource->priv->dlna_ns, - (unsigned char *) "trackTotal", - (unsigned char *) str); - g_free (str); - + &(priv->dlna_ns)); + av_xml_util_set_ns_prop (priv->xml_node, + priv->dlna_ns, + "trackTotal", + "%u", + track_total); g_object_notify (G_OBJECT (resource), "track-total"); } @@ -1790,9 +1810,10 @@ void gupnp_didl_lite_resource_unset_update_count (GUPnPDIDLLiteResource *resource) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - xmlUnsetProp (resource->priv->xml_node, - (unsigned char *) "updateCount"); + xmlUnsetProp (priv->xml_node, (unsigned char *) "updateCount"); g_object_notify (G_OBJECT (resource), "update-count"); } @@ -1807,9 +1828,15 @@ void gupnp_didl_lite_resource_unset_track_total (GUPnPDIDLLiteResource *resource) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); + + av_xml_util_get_ns (priv->xml_doc->doc, + GUPNP_XML_NAMESPACE_DLNA, + &(priv->dlna_ns)); - xmlUnsetNsProp (resource->priv->xml_node, - resource->priv->dlna_ns, + xmlUnsetNsProp (priv->xml_node, + priv->dlna_ns, (unsigned char *) "trackTotal"); g_object_notify (G_OBJECT (resource), "track-total"); @@ -1828,8 +1855,10 @@ gupnp_didl_lite_resource_get_subtitle_file_uri (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_attribute_content (resource->priv->xml_node, + return av_xml_util_get_attribute_content (priv->xml_node, "subtitleFileUri"); } @@ -1846,8 +1875,10 @@ gupnp_didl_lite_resource_get_subtitle_file_type (GUPnPDIDLLiteResource *resource) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource), NULL); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); - return av_xml_util_get_attribute_content (resource->priv->xml_node, + return av_xml_util_get_attribute_content (priv->xml_node, "subtitleFileType"); } @@ -1867,17 +1898,19 @@ gupnp_didl_lite_resource_set_subtitle_file_uri const char *uri) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); if (uri == NULL) - xmlUnsetNsProp (resource->priv->xml_node, - resource->priv->pv_ns, + xmlUnsetNsProp (priv->xml_node, + priv->pv_ns, (unsigned char *) "subtitleFileUri"); else { - av_xml_util_get_ns (resource->priv->xml_doc->doc, + av_xml_util_get_ns (priv->xml_doc->doc, GUPNP_XML_NAMESPACE_PV, - &(resource->priv->pv_ns)); - xmlSetNsProp (resource->priv->xml_node, - resource->priv->pv_ns, + &(priv->pv_ns)); + xmlSetNsProp (priv->xml_node, + priv->pv_ns, (unsigned char *) "subtitleFileUri", (xmlChar *) uri); } @@ -1903,18 +1936,20 @@ gupnp_didl_lite_resource_set_subtitle_file_type const char *type) { g_return_if_fail (GUPNP_IS_DIDL_LITE_RESOURCE (resource)); + GUPnPDIDLLiteResourcePrivate *priv = + gupnp_didl_lite_resource_get_instance_private (resource); if (type == NULL) - xmlUnsetNsProp (resource->priv->xml_node, - resource->priv->pv_ns, + xmlUnsetNsProp (priv->xml_node, + priv->pv_ns, (unsigned char *) "subtitleFileUri"); else { - av_xml_util_get_ns (resource->priv->xml_doc->doc, + av_xml_util_get_ns (priv->xml_doc->doc, GUPNP_XML_NAMESPACE_PV, - &(resource->priv->pv_ns)); + &(priv->pv_ns)); - xmlSetNsProp (resource->priv->xml_node, - resource->priv->pv_ns, + xmlSetNsProp (priv->xml_node, + priv->pv_ns, (unsigned char *) "subtitleFileType", (xmlChar *) type); } diff --git a/libgupnp-av/gupnp-didl-lite-resource.h b/libgupnp-av/gupnp-didl-lite-resource.h index bd3bb8d..7b458e0 100644 --- a/libgupnp-av/gupnp-didl-lite-resource.h +++ b/libgupnp-av/gupnp-didl-lite-resource.h @@ -24,8 +24,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GUPNP_DIDL_LITE_RESOURCE_H__ -#define __GUPNP_DIDL_LITE_RESOURCE_H__ +#ifndef GUPNP_DIDL_LITE_RESOURCE_H +#define GUPNP_DIDL_LITE_RESOURCE_H #include <stdarg.h> #include <glib-object.h> @@ -37,39 +37,18 @@ G_BEGIN_DECLS -GType -gupnp_didl_lite_resource_get_type (void) G_GNUC_CONST; + +G_DECLARE_DERIVABLE_TYPE(GUPnPDIDLLiteResource, + gupnp_didl_lite_resource, + GUPNP, + DIDL_LITE_RESOURCE, + GObject) #define GUPNP_TYPE_DIDL_LITE_RESOURCE \ (gupnp_didl_lite_resource_get_type ()) -#define GUPNP_DIDL_LITE_RESOURCE(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_RESOURCE, \ - GUPnPDIDLLiteResource)) -#define GUPNP_DIDL_LITE_RESOURCE_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_RESOURCE, \ - GUPnPDIDLLiteResourceClass)) -#define GUPNP_IS_DIDL_LITE_RESOURCE(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_RESOURCE)) -#define GUPNP_IS_DIDL_LITE_RESOURCE_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_RESOURCE)) -#define GUPNP_DIDL_LITE_RESOURCE_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_DIDL_LITE_RESOURCE, \ - GUPnPDIDLLiteResourceClass)) - -typedef struct _GUPnPDIDLLiteResourcePrivate GUPnPDIDLLiteResourcePrivate; - -typedef struct { - GObject parent; - - GUPnPDIDLLiteResourcePrivate *priv; -} GUPnPDIDLLiteResource; - -typedef struct { + + +struct _GUPnPDIDLLiteResourceClass { GObjectClass parent_class; /* future padding */ @@ -77,7 +56,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPDIDLLiteResourceClass; +}; void gupnp_didl_lite_resource_set_uri (GUPnPDIDLLiteResource *resource, diff --git a/libgupnp-av/gupnp-didl-lite-writer.c b/libgupnp-av/gupnp-didl-lite-writer.c index 6eaf416..a8b92f2 100644 --- a/libgupnp-av/gupnp-didl-lite-writer.c +++ b/libgupnp-av/gupnp-didl-lite-writer.c @@ -49,10 +49,11 @@ struct _GUPnPDIDLLiteWriterPrivate { char *language; }; +typedef struct _GUPnPDIDLLiteWriterPrivate GUPnPDIDLLiteWriterPrivate; G_DEFINE_TYPE_WITH_PRIVATE (GUPnPDIDLLiteWriter, gupnp_didl_lite_writer, - G_TYPE_OBJECT); + G_TYPE_OBJECT) enum { PROP_0, @@ -210,7 +211,6 @@ filter_attributes (xmlNode *node, static void filter_node (xmlNode *node, GList *allowed, - GUPnPDIDLLiteWriter *writer, gboolean tags_only) { xmlNode *child; @@ -264,7 +264,7 @@ filter_node (xmlNode *node, /* Recurse */ for (child = node->children; child != NULL; child = child->next) if (!xmlNodeIsText (child)) - filter_node (child, allowed, writer, tags_only); + filter_node (child, allowed, tags_only); } static void @@ -280,6 +280,9 @@ apply_filter (GUPnPDIDLLiteWriter *writer, g_return_if_fail (GUPNP_IS_DIDL_LITE_WRITER (writer)); g_return_if_fail (filter != NULL); + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private (writer); + if (filter[0] == '*') return; /* Wildcard */ @@ -289,10 +292,8 @@ apply_filter (GUPnPDIDLLiteWriter *writer, for (i = 0; tokens[i] != NULL; i++) allowed = g_list_append (allowed, tokens[i]); - for (node = writer->priv->xml_node->children; - node != NULL; - node = node->next) - filter_node (node, allowed, writer, tags_only); + for (node = priv->xml_node->children; node != NULL; node = node->next) + filter_node (node, allowed, tags_only); g_list_free (allowed); g_strfreev (tokens); @@ -302,7 +303,6 @@ apply_filter (GUPnPDIDLLiteWriter *writer, static void gupnp_didl_lite_writer_init (GUPnPDIDLLiteWriter *writer) { - writer->priv = gupnp_didl_lite_writer_get_instance_private (writer); } static void @@ -315,10 +315,12 @@ gupnp_didl_lite_writer_set_property (GObject *object, GUPnPDIDLLiteWriter *writer; writer = GUPNP_DIDL_LITE_WRITER (object); + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private (writer); switch (property_id) { case PROP_LANGUAGE: - writer->priv->language = g_value_dup_string (value); + priv->language = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -355,10 +357,11 @@ static void gupnp_didl_lite_writer_constructed (GObject *object) { GObjectClass *object_class; - GUPnPDIDLLiteWriterPrivate *priv; xmlDoc *doc; - priv = GUPNP_DIDL_LITE_WRITER (object)->priv; + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private ( + GUPNP_DIDL_LITE_WRITER (object)); doc = xmlNewDoc ((unsigned char *) "1.0"); priv->xml_doc = av_xml_doc_new (doc); @@ -386,9 +389,9 @@ static void gupnp_didl_lite_writer_dispose (GObject *object) { GObjectClass *object_class; - GUPnPDIDLLiteWriterPrivate *priv; - - priv = GUPNP_DIDL_LITE_WRITER (object)->priv; + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private ( + GUPNP_DIDL_LITE_WRITER (object)); g_clear_pointer (&priv->xml_doc, av_xml_doc_unref); @@ -400,12 +403,11 @@ static void gupnp_didl_lite_writer_finalize (GObject *object) { GObjectClass *object_class; - GUPnPDIDLLiteWriterPrivate *priv; - - priv = GUPNP_DIDL_LITE_WRITER (object)->priv; + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private ( + GUPNP_DIDL_LITE_WRITER (object)); - if (priv->language) - g_free (priv->language); + g_free (priv->language); object_class = G_OBJECT_CLASS (gupnp_didl_lite_writer_parent_class); object_class->finalize (object); @@ -492,20 +494,22 @@ gupnp_didl_lite_writer_add_item (GUPnPDIDLLiteWriter *writer) { xmlNode *item_node; GUPnPDIDLLiteObject *object; + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private (writer); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_WRITER (writer), NULL); - item_node = xmlNewChild (writer->priv->xml_node, - NULL, - (unsigned char *) "item", - NULL); + item_node = xmlNewChild (priv->xml_node, + NULL, + (unsigned char *) "item", + NULL); object = gupnp_didl_lite_object_new_from_xml (item_node, - writer->priv->xml_doc, - writer->priv->upnp_ns, - writer->priv->dc_ns, - writer->priv->dlna_ns, - writer->priv->pv_ns); + priv->xml_doc, + priv->upnp_ns, + priv->dc_ns, + priv->dlna_ns, + priv->pv_ns); return GUPNP_DIDL_LITE_ITEM (object); } @@ -527,6 +531,8 @@ gupnp_didl_lite_writer_add_container_child_item { xmlNode *item_node, *container_node; GUPnPDIDLLiteObject *object; + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private (writer); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_CONTAINER (container), NULL); @@ -539,11 +545,11 @@ gupnp_didl_lite_writer_add_container_child_item NULL); object = gupnp_didl_lite_object_new_from_xml (item_node, - writer->priv->xml_doc, - writer->priv->upnp_ns, - writer->priv->dc_ns, - writer->priv->dlna_ns, - writer->priv->pv_ns); + priv->xml_doc, + priv->upnp_ns, + priv->dc_ns, + priv->dlna_ns, + priv->pv_ns); return GUPNP_DIDL_LITE_ITEM (object); } @@ -560,20 +566,22 @@ gupnp_didl_lite_writer_add_container (GUPnPDIDLLiteWriter *writer) { xmlNode *container_node; GUPnPDIDLLiteObject *object; + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private (writer); g_return_val_if_fail (GUPNP_IS_DIDL_LITE_WRITER (writer), NULL); - container_node = xmlNewChild (writer->priv->xml_node, + container_node = xmlNewChild (priv->xml_node, NULL, (unsigned char *) "container", NULL); object = gupnp_didl_lite_object_new_from_xml (container_node, - writer->priv->xml_doc, - writer->priv->upnp_ns, - writer->priv->dc_ns, - writer->priv->dlna_ns, - writer->priv->pv_ns); + priv->xml_doc, + priv->upnp_ns, + priv->dc_ns, + priv->dlna_ns, + priv->pv_ns); return GUPNP_DIDL_LITE_CONTAINER (object); } @@ -591,14 +599,16 @@ gupnp_didl_lite_writer_add_descriptor (GUPnPDIDLLiteWriter *writer) xmlNode *desc_node; g_return_val_if_fail (GUPNP_IS_DIDL_LITE_WRITER (writer), NULL); + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private (writer); - desc_node = xmlNewChild (writer->priv->xml_node, + desc_node = xmlNewChild (priv->xml_node, NULL, (unsigned char *) "desc", NULL); return gupnp_didl_lite_descriptor_new_from_xml (desc_node, - writer->priv->xml_doc); + priv->xml_doc); } /** @@ -616,13 +626,11 @@ gupnp_didl_lite_writer_get_string (GUPnPDIDLLiteWriter *writer) char *ret; g_return_val_if_fail (GUPNP_IS_DIDL_LITE_WRITER (writer), NULL); + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private (writer); buffer = xmlBufferCreate (); - xmlNodeDump (buffer, - writer->priv->xml_doc->doc, - writer->priv->xml_node, - 0, - 0); + xmlNodeDump (buffer, priv->xml_doc->doc, priv->xml_node, 0, 0); ret = g_strndup ((char *) xmlBufferContent (buffer), xmlBufferLength (buffer)); xmlBufferFree (buffer); @@ -642,8 +650,10 @@ xmlNode * gupnp_didl_lite_writer_get_xml_node (GUPnPDIDLLiteWriter *writer) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_WRITER (writer), NULL); + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private (writer); - return writer->priv->xml_node; + return priv->xml_node; } /** @@ -658,8 +668,10 @@ const char * gupnp_didl_lite_writer_get_language (GUPnPDIDLLiteWriter *writer) { g_return_val_if_fail (GUPNP_IS_DIDL_LITE_WRITER (writer), NULL); + GUPnPDIDLLiteWriterPrivate *priv = + gupnp_didl_lite_writer_get_instance_private (writer); - return writer->priv->language; + return priv->language; } /** diff --git a/libgupnp-av/gupnp-didl-lite-writer.h b/libgupnp-av/gupnp-didl-lite-writer.h index 1546751..9ed160f 100644 --- a/libgupnp-av/gupnp-didl-lite-writer.h +++ b/libgupnp-av/gupnp-didl-lite-writer.h @@ -33,39 +33,17 @@ G_BEGIN_DECLS -GType -gupnp_didl_lite_writer_get_type (void) G_GNUC_CONST; + +G_DECLARE_DERIVABLE_TYPE(GUPnPDIDLLiteWriter, + gupnp_didl_lite_writer, + GUPNP, + DIDL_LITE_WRITER, + GObject) #define GUPNP_TYPE_DIDL_LITE_WRITER \ (gupnp_didl_lite_writer_get_type ()) -#define GUPNP_DIDL_LITE_WRITER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_WRITER, \ - GUPnPDIDLLiteWriter)) -#define GUPNP_DIDL_LITE_WRITER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_DIDL_LITE_WRITER, \ - GUPnPDIDLLiteWriterClass)) -#define GUPNP_IS_DIDL_LITE_WRITER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_WRITER)) -#define GUPNP_IS_DIDL_LITE_WRITER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_DIDL_LITE_WRITER)) -#define GUPNP_DIDL_LITE_WRITER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_DIDL_LITE_WRITER, \ - GUPnPDIDLLiteWriterClass)) - -typedef struct _GUPnPDIDLLiteWriterPrivate GUPnPDIDLLiteWriterPrivate; - -typedef struct { - GObject parent; - - GUPnPDIDLLiteWriterPrivate *priv; -} GUPnPDIDLLiteWriter; - -typedef struct { + +struct _GUPnPDIDLLiteWriterClass { GObjectClass parent_class; /* future padding */ @@ -73,7 +51,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPDIDLLiteWriterClass; +}; #define GUPNP_DIDL_LITE_WRITER_NAMESPACE_DC "dc" #define GUPNP_DIDL_LITE_WRITER_NAMESPACE_UPNP "upnp" @@ -107,4 +85,4 @@ gupnp_didl_lite_writer_filter (GUPnPDIDLLiteWriter *writer, G_END_DECLS -#endif /* __GUPNP_DIDL_LITE_WRITER_H__ */ +#endif /* GUPNP_DIDL_LITE_WRITER_H */ diff --git a/libgupnp-av/gupnp-dlna.h b/libgupnp-av/gupnp-dlna.h index 3ce0562..afee8d3 100644 --- a/libgupnp-av/gupnp-dlna.h +++ b/libgupnp-av/gupnp-dlna.h @@ -19,8 +19,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GUPNP_DLNA_H__ -#define __GUPNP_DLNA_H__ +#ifndef GUPNP_DLNA_H +#define GUPNP_DLNA_H #include <glib-object.h> @@ -152,4 +152,4 @@ gupnp_ocm_flags_get_type (void) G_GNUC_CONST; G_END_DECLS -#endif /* __GUPNP_DLNA_H__ */ +#endif /* GUPNP_DLNA_H */ diff --git a/libgupnp-av/gupnp-feature-list-parser.c b/libgupnp-av/gupnp-feature-list-parser.c index 2f179b1..c4ce5a4 100644 --- a/libgupnp-av/gupnp-feature-list-parser.c +++ b/libgupnp-av/gupnp-feature-list-parser.c @@ -36,7 +36,7 @@ /* GUPnPFeatureListParser */ G_DEFINE_TYPE (GUPnPFeatureListParser, gupnp_feature_list_parser, - G_TYPE_OBJECT); + G_TYPE_OBJECT) static void gupnp_feature_list_parser_init (G_GNUC_UNUSED GUPnPFeatureListParser *parser) @@ -78,31 +78,24 @@ static char * get_feature_object_ids (xmlNode *feature) { xmlNode *element; - char *object_ids = NULL; const char *content; - - object_ids = (char *) g_malloc0(1); + GString *object_ids = g_string_new (""); for (element = feature->children; element; element = element->next) { - gsize new_size; - - if (g_ascii_strcasecmp ((char *) element->name, - "objectIDs") == 0) { + const char *name = (const char *) element->name; + if (g_ascii_strcasecmp (name, "objectIDs") == 0) { content = (const char *) xmlNodeGetContent (element); + if (strlen (content) == 0) + continue; - new_size = strlen (object_ids) + strlen (content) + 1; - if (*object_ids) - new_size++; - - object_ids = g_realloc (object_ids, new_size); + if (object_ids->len > 0) + g_string_append_c (object_ids, ','); - if (*object_ids) - strcat (object_ids, ","); - strcat (object_ids, content); + g_string_append (object_ids, content); } } - return object_ids; + return g_string_free (object_ids, FALSE); } /** @@ -114,7 +107,7 @@ get_feature_object_ids (xmlNode *feature) * Parses @text and returns the list of available features. * If an error occured @error will be set. * - * Return value: (transfer full) (element-type GUPnPFeature): The list of + * Return value: (transfer full) (element-type GUPnPFeature)(nullable): The list of * features or %NULL if an error occured. **/ GList * diff --git a/libgupnp-av/gupnp-feature-list-parser.h b/libgupnp-av/gupnp-feature-list-parser.h index aa7cc68..075d7b9 100644 --- a/libgupnp-av/gupnp-feature-list-parser.h +++ b/libgupnp-av/gupnp-feature-list-parser.h @@ -27,37 +27,18 @@ G_BEGIN_DECLS -GType -gupnp_feature_list_parser_get_type (void) G_GNUC_CONST; +G_DECLARE_DERIVABLE_TYPE(GUPnPFeatureListParser, + gupnp_feature_list_parser, + GUPNP, + FEATURE_LIST_PARSER, + GObject) #define GUPNP_TYPE_FEATURE_LIST_PARSER \ (gupnp_feature_list_parser_get_type ()) -#define GUPNP_FEATURE_LIST_PARSER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_FEATURE_LIST_PARSER, \ - GUPnPFeatureListParser)) -#define GUPNP_FEATURE_LIST_PARSER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_FEATURE_LIST_PARSER, \ - GUPnPFeatureListParserClass)) -#define GUPNP_IS_FEATURE_LIST_PARSER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_FEATURE_LIST_PARSER)) -#define GUPNP_IS_FEATURE_LIST_PARSER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_FEATURE_LIST_PARSER)) -#define GUPNP_FEATURE_LIST_PARSER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_FEATURE_LIST_PARSER, \ - GUPnPFeatureListParserClass)) -typedef struct { - GObject parent; -} GUPnPFeatureListParser; - -typedef struct { +struct _GUPnPFeatureListParserClass{ GObjectClass parent_class; -} GUPnPFeatureListParserClass; +}; GUPnPFeatureListParser * gupnp_feature_list_parser_new (void); diff --git a/libgupnp-av/gupnp-feature.c b/libgupnp-av/gupnp-feature.c index 580bf29..be363a0 100644 --- a/libgupnp-av/gupnp-feature.c +++ b/libgupnp-av/gupnp-feature.c @@ -33,10 +33,11 @@ struct _GUPnPFeaturePrivate { char *version; char *object_ids; }; +typedef struct _GUPnPFeaturePrivate GUPnPFeaturePrivate; G_DEFINE_TYPE_WITH_PRIVATE (GUPnPFeature, gupnp_feature, - G_TYPE_OBJECT); + G_TYPE_OBJECT) enum { PROP_0, @@ -48,7 +49,6 @@ enum { static void gupnp_feature_init (GUPnPFeature *object) { - object->priv = gupnp_feature_get_instance_private (object); } static void @@ -57,7 +57,8 @@ gupnp_feature_finalize (GObject *object) GObjectClass *object_class; GUPnPFeaturePrivate *priv; - priv = GUPNP_FEATURE (object)->priv; + priv = gupnp_feature_get_instance_private (GUPNP_FEATURE (object)); + g_free (priv->name); g_free (priv->version); g_free (priv->object_ids); @@ -99,19 +100,18 @@ gupnp_feature_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - GUPnPFeature *feature; - - feature = GUPNP_FEATURE (object); + GUPnPFeaturePrivate *priv = + gupnp_feature_get_instance_private (GUPNP_FEATURE (object)); switch (property_id) { case PROP_NAME: - feature->priv->name = g_value_dup_string (value); + priv->name = g_value_dup_string (value); break; case PROP_VERSION: - feature->priv->version = g_value_dup_string (value); + priv->version = g_value_dup_string (value); break; case PROP_OBJECT_IDS: - feature->priv->object_ids = g_value_dup_string (value); + priv->object_ids = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -196,7 +196,10 @@ gupnp_feature_class_init (GUPnPFeatureClass *klass) const char * gupnp_feature_get_name (GUPnPFeature *feature) { - return feature->priv->name; + GUPnPFeaturePrivate *priv = + gupnp_feature_get_instance_private (GUPNP_FEATURE (feature)); + + return priv->name; } /** @@ -210,7 +213,10 @@ gupnp_feature_get_name (GUPnPFeature *feature) const char * gupnp_feature_get_version (GUPnPFeature *feature) { - return feature->priv->version; + GUPnPFeaturePrivate *priv = + gupnp_feature_get_instance_private (GUPNP_FEATURE (feature)); + + return priv->version; } /** @@ -224,5 +230,8 @@ gupnp_feature_get_version (GUPnPFeature *feature) const char * gupnp_feature_get_object_ids (GUPnPFeature *feature) { - return feature->priv->object_ids; + GUPnPFeaturePrivate *priv = + gupnp_feature_get_instance_private (GUPNP_FEATURE (feature)); + + return priv->object_ids; } diff --git a/libgupnp-av/gupnp-feature.h b/libgupnp-av/gupnp-feature.h index cc3e259..872f816 100644 --- a/libgupnp-av/gupnp-feature.h +++ b/libgupnp-av/gupnp-feature.h @@ -19,48 +19,24 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GUPNP_FEATURE_H_ -#define __GUPNP_FEATURE_H_ +#ifndef GUPNP_FEATURE_H +#define GUPNP_FEATURE_H #include <glib-object.h> G_BEGIN_DECLS -GType -gupnp_feature_get_type (void) G_GNUC_CONST; +G_DECLARE_DERIVABLE_TYPE(GUPnPFeature, + gupnp_feature, + GUPNP, + FEATURE, + GObject) -#define GUPNP_TYPE_FEATURE \ - (gupnp_feature_get_type ()) -#define GUPNP_FEATURE(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_FEATURE, \ - GUPnPFeature)) -#define GUPNP_FEATURE_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_FEATURE, \ - GUPnPFeatureClass)) -#define GUPNP_IS_FEATURE(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_FEATURE)) -#define GUPNP_IS_FEATURE_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_FEATURE)) -#define GUPNP_FEATURE_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_FEATURE, \ - GUPnPFeatureClass)) +#define GUPNP_TYPE_FEATURE (gupnp_feature_get_type ()) -typedef struct _GUPnPFeaturePrivate GUPnPFeaturePrivate; - -typedef struct { - GObject parent; - - GUPnPFeaturePrivate *priv; -} GUPnPFeature; - -typedef struct { +struct _GUPnPFeatureClass { GObjectClass parent_class; -} GUPnPFeatureClass; +}; const char * gupnp_feature_get_name (GUPnPFeature *feature); @@ -73,4 +49,4 @@ gupnp_feature_get_object_ids (GUPnPFeature *feature); G_END_DECLS -#endif /* __GUPNP_FEATURE_H_ */ +#endif /* GUPNP_FEATURE_H */ diff --git a/libgupnp-av/gupnp-last-change-parser.c b/libgupnp-av/gupnp-last-change-parser.c index 5c969a3..afbc8e7 100644 --- a/libgupnp-av/gupnp-last-change-parser.c +++ b/libgupnp-av/gupnp-last-change-parser.c @@ -39,7 +39,7 @@ G_DEFINE_TYPE (GUPnPLastChangeParser, gupnp_last_change_parser, - G_TYPE_OBJECT); + G_TYPE_OBJECT) static void gupnp_last_change_parser_init (G_GNUC_UNUSED GUPnPLastChangeParser *parser) @@ -90,7 +90,7 @@ read_state_variable (const char *variable_name, return FALSE; } - gvalue_util_set_value_from_string (value, val_str); + av_gvalue_util_set_value_from_string (value, val_str); return TRUE; } diff --git a/libgupnp-av/gupnp-last-change-parser.h b/libgupnp-av/gupnp-last-change-parser.h index cd14ac6..fd533db 100644 --- a/libgupnp-av/gupnp-last-change-parser.h +++ b/libgupnp-av/gupnp-last-change-parser.h @@ -21,42 +21,22 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GUPNP_LAST_CHANGE_PARSER_H__ -#define __GUPNP_LAST_CHANGE_PARSER_H__ +#ifndef GUPNP_LAST_CHANGE_PARSER_H +#define GUPNP_LAST_CHANGE_PARSER_H #include <glib-object.h> G_BEGIN_DECLS -GType -gupnp_last_change_parser_get_type (void) G_GNUC_CONST; +G_DECLARE_DERIVABLE_TYPE (GUPnPLastChangeParser, + gupnp_last_change_parser, + GUPNP, + LAST_CHANGE_PARSER, + GObject) -#define GUPNP_TYPE_LAST_CHANGE_PARSER \ - (gupnp_last_change_parser_get_type ()) -#define GUPNP_LAST_CHANGE_PARSER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_LAST_CHANGE_PARSER, \ - GUPnPLastChangeParser)) -#define GUPNP_LAST_CHANGE_PARSER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_LAST_CHANGE_PARSER, \ - GUPnPLastChangeParserClass)) -#define GUPNP_IS_LAST_CHANGE_PARSER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_LAST_CHANGE_PARSER)) -#define GUPNP_IS_LAST_CHANGE_PARSER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_LAST_CHANGE_PARSER)) -#define GUPNP_LAST_CHANGE_PARSER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_LAST_CHANGE_PARSER, \ - GUPnPLastChangeParserClass)) +#define GUPNP_TYPE_LAST_CHANGE_PARSER (gupnp_last_change_parser_get_type ()) -typedef struct { - GObject parent; -} GUPnPLastChangeParser; - -typedef struct { +struct _GUPnPLastChangeParserClass { GObjectClass parent_class; /* future padding */ @@ -64,7 +44,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPLastChangeParserClass; +}; GUPnPLastChangeParser * gupnp_last_change_parser_new (void); diff --git a/libgupnp-av/gupnp-media-collection.c b/libgupnp-av/gupnp-media-collection.c index 11d30b3..6417799 100644 --- a/libgupnp-av/gupnp-media-collection.c +++ b/libgupnp-av/gupnp-media-collection.c @@ -43,10 +43,11 @@ struct _GUPnPMediaCollectionPrivate { gboolean mutable; char *data; }; +typedef struct _GUPnPMediaCollectionPrivate GUPnPMediaCollectionPrivate; G_DEFINE_TYPE_WITH_PRIVATE (GUPnPMediaCollection, gupnp_media_collection, - G_TYPE_OBJECT); + G_TYPE_OBJECT) enum { PROP_0, @@ -61,17 +62,18 @@ reparent_children (GUPnPMediaCollection *collection) { GList *it; xmlNode *container_node; + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); - container_node = gupnp_didl_lite_object_get_xml_node - (collection->priv->container); + container_node = gupnp_didl_lite_object_get_xml_node (priv->container); /* Reverse iterate the list to get the correct order in XML */ - it = g_list_last (collection->priv->items); + it = g_list_last (priv->items); while (it) { xmlNode *node; - node = gupnp_didl_lite_object_get_xml_node - (GUPNP_DIDL_LITE_OBJECT (it->data)); + node = gupnp_didl_lite_object_get_xml_node ( + GUPNP_DIDL_LITE_OBJECT (it->data)); xmlUnlinkNode (node); xmlAddChild (container_node, node); @@ -84,12 +86,14 @@ on_container_available (GUPnPMediaCollection *self, GUPnPDIDLLiteContainer *container, G_GNUC_UNUSED gpointer user_data) { + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (self); + /* According to media format spec, there's only one container allowed; * We allow any number of containers, but only the last one wins. */ - if (self->priv->container != NULL) - g_object_unref (self->priv->container); + g_clear_object (&priv->container); - self->priv->container = GUPNP_DIDL_LITE_OBJECT (g_object_ref (container)); + priv->container = GUPNP_DIDL_LITE_OBJECT (g_object_ref (container)); } static void @@ -97,8 +101,10 @@ on_item_available (GUPnPMediaCollection *self, GUPnPDIDLLiteItem *item, G_GNUC_UNUSED gpointer user_data) { - self->priv->items = g_list_prepend (self->priv->items, - g_object_ref (item)); + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (self); + + priv->items = g_list_prepend (priv->items, g_object_ref (item)); } static void @@ -123,14 +129,13 @@ parse_data (GUPnPMediaCollection *collection, const char *data) TRUE, &error); if (!result) { - GUPnPMediaCollectionPrivate *priv = collection->priv; + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); g_warning ("Failed to parse DIDL-Lite: %s", error->message); g_error_free (error); - if (priv->container) { - g_object_unref (priv->container); - priv->container = NULL; - } + g_clear_object (&priv->container); + if (priv->items) { g_list_free_full (priv->items, g_object_unref); priv->items = NULL; @@ -141,11 +146,12 @@ parse_data (GUPnPMediaCollection *collection, const char *data) static void gupnp_media_collection_init (GUPnPMediaCollection *collection) { - collection->priv = + GUPnPMediaCollectionPrivate *priv = gupnp_media_collection_get_instance_private (collection); + /* Initialize as mutable and decide later on in constructed() if we * really are. */ - collection->priv->mutable = TRUE; + priv->mutable = TRUE; } static void @@ -154,9 +160,9 @@ gupnp_media_collection_set_property (GObject *object, const GValue *value, GParamSpec *pspec) { - GUPnPMediaCollection *collection; - - collection = GUPNP_MEDIA_COLLECTION (object); + GUPnPMediaCollection *collection = GUPNP_MEDIA_COLLECTION (object); + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); switch (property_id) { case PROP_AUTHOR: @@ -168,7 +174,7 @@ gupnp_media_collection_set_property (GObject *object, g_value_get_string (value)); break; case PROP_DATA: - collection->priv->data = g_value_dup_string (value); + priv->data = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -212,26 +218,20 @@ gupnp_media_collection_constructed (GObject *object) GObjectClass *object_class; collection = GUPNP_MEDIA_COLLECTION (object); + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); /* Check if we have some data. If there's data, we assume that the * user meant to parse a playlist. We ignore title and author then. */ - if (collection->priv->data != NULL) { - if (collection->priv->container != NULL) { - g_object_unref (collection->priv->container); - collection->priv->container = NULL; - } - - if (collection->priv->writer != NULL) { - g_object_unref (collection->priv->writer); - collection->priv->writer = NULL; - } - - parse_data (collection, collection->priv->data); - collection->priv->mutable = FALSE; - } else if (collection->priv->writer == NULL) { - collection->priv->writer = - gupnp_didl_lite_writer_new (NULL); - collection->priv->mutable = TRUE; + if (priv->data != NULL) { + g_clear_object (&priv->container); + g_clear_object (&priv->writer); + + parse_data (collection, priv->data); + priv->mutable = FALSE; + } else if (priv->writer == NULL) { + priv->writer = gupnp_didl_lite_writer_new (NULL); + priv->mutable = TRUE; } /* Chain up */ @@ -247,24 +247,18 @@ gupnp_media_collection_dispose (GObject *object) GObjectClass *object_class; collection = GUPNP_MEDIA_COLLECTION (object); + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); - if (collection->priv->writer) { - g_object_unref (collection->priv->writer); - collection->priv->writer = NULL; - } - - if (collection->priv->items) { - g_list_free_full (collection->priv->items, g_object_unref); - collection->priv->items = NULL; - } + g_clear_object (&priv->writer); - if (collection->priv->container) { - g_object_unref (collection->priv->container); - collection->priv->container = NULL; + if (priv->items) { + g_list_free_full (priv->items, g_object_unref); + priv->items = NULL; } + g_clear_object (&priv->container); - g_free (collection->priv->data); - collection->priv->data = NULL; + g_clear_pointer (&priv->data, g_free); object_class = G_OBJECT_CLASS (gupnp_media_collection_parent_class); object_class->dispose (object); @@ -389,48 +383,49 @@ gupnp_media_collection_set_title (GUPnPMediaCollection *collection, const char *title) { GUPnPDIDLLiteContainer *container; + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); g_return_if_fail (GUPNP_IS_MEDIA_COLLECTION (collection)); - g_return_if_fail (collection->priv->mutable); + g_return_if_fail (priv->mutable); if (title == NULL) return; - if (collection->priv->container != NULL) { - gupnp_didl_lite_object_set_title (collection->priv->container, - title); + if (priv->container != NULL) { + gupnp_didl_lite_object_set_title (priv->container, title); return; } - if (collection->priv->writer == NULL) - collection->priv->writer = gupnp_didl_lite_writer_new (NULL); + if (priv->writer == NULL) + priv->writer = gupnp_didl_lite_writer_new (NULL); - container = gupnp_didl_lite_writer_add_container - (collection->priv->writer); - collection->priv->container = GUPNP_DIDL_LITE_OBJECT (container); + container = gupnp_didl_lite_writer_add_container (priv->writer); + priv->container = GUPNP_DIDL_LITE_OBJECT (container); reparent_children (collection); - gupnp_didl_lite_object_set_title (collection->priv->container, - title); + gupnp_didl_lite_object_set_title (priv->container, title); } /** * gupnp_media_collection_get_title: * @collection: #GUPnPMediaCollection * - * Returns: The title of this media collection or %NULL if not set. + * Returns: (nullable)(transfer none): The title of this media collection or %NULL if not set. **/ const char * gupnp_media_collection_get_title (GUPnPMediaCollection *collection) { g_return_val_if_fail (GUPNP_IS_MEDIA_COLLECTION (collection), NULL); + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); - if (collection->priv->container == NULL) + if (priv->container == NULL) return NULL; - return gupnp_didl_lite_object_get_title (collection->priv->container); + return gupnp_didl_lite_object_get_title (priv->container); } /** @@ -445,31 +440,30 @@ gupnp_media_collection_set_author (GUPnPMediaCollection *collection, const char *author) { GUPnPDIDLLiteContainer *container; + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); g_return_if_fail (GUPNP_IS_MEDIA_COLLECTION (collection)); - g_return_if_fail (collection->priv->mutable); + g_return_if_fail (priv->mutable); if (author == NULL) return; - if (collection->priv->container != NULL) { - gupnp_didl_lite_object_set_creator (collection->priv->container, - author); + if (priv->container != NULL) { + gupnp_didl_lite_object_set_creator (priv->container, author); return; } - if (collection->priv->writer == NULL) - collection->priv->writer = gupnp_didl_lite_writer_new (NULL); + if (priv->writer == NULL) + priv->writer = gupnp_didl_lite_writer_new (NULL); - container = gupnp_didl_lite_writer_add_container - (collection->priv->writer); - collection->priv->container = GUPNP_DIDL_LITE_OBJECT (container); + container = gupnp_didl_lite_writer_add_container (priv->writer); + priv->container = GUPNP_DIDL_LITE_OBJECT (container); reparent_children (collection); - gupnp_didl_lite_object_set_creator (collection->priv->container, - author); + gupnp_didl_lite_object_set_creator (priv->container, author); } /** @@ -482,11 +476,13 @@ const char * gupnp_media_collection_get_author (GUPnPMediaCollection *collection) { g_return_val_if_fail (GUPNP_IS_MEDIA_COLLECTION (collection), NULL); + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); - if (collection->priv->container == NULL) + if (priv->container == NULL) return NULL; - return gupnp_didl_lite_object_get_creator (collection->priv->container); + return gupnp_didl_lite_object_get_creator (priv->container); } /** @@ -501,22 +497,22 @@ gupnp_media_collection_add_item (GUPnPMediaCollection *collection) { GUPnPDIDLLiteItem *item = NULL; + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); + g_return_val_if_fail (collection != NULL, NULL); g_return_val_if_fail (GUPNP_IS_MEDIA_COLLECTION (collection), NULL); - g_return_val_if_fail (collection->priv->mutable, NULL); + g_return_val_if_fail (priv->mutable, NULL); - if (collection->priv->container != NULL) - item = gupnp_didl_lite_writer_add_container_child_item - (collection->priv->writer, - GUPNP_DIDL_LITE_CONTAINER - (collection->priv->container)); + if (priv->container != NULL) + item = gupnp_didl_lite_writer_add_container_child_item ( + priv->writer, + GUPNP_DIDL_LITE_CONTAINER (priv->container)); else - item = gupnp_didl_lite_writer_add_item - (collection->priv->writer); + item = gupnp_didl_lite_writer_add_item (priv->writer); /* Keep a reference of the object in case we need to do reparenting */ - collection->priv->items = g_list_prepend (collection->priv->items, - g_object_ref (item)); + priv->items = g_list_prepend (priv->items, g_object_ref (item)); /* Mandatory in DLNA for object. Not specified if mandatory for * DIDL_S, but to avoid problems with clients reusing their normal @@ -541,14 +537,15 @@ gupnp_media_collection_get_string (GUPnPMediaCollection *collection) { g_return_val_if_fail (collection != NULL, NULL); g_return_val_if_fail (GUPNP_IS_MEDIA_COLLECTION (collection), NULL); + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); - if (collection->priv->data) - return g_strdup (collection->priv->data); + if (priv->data) + return g_strdup (priv->data); - gupnp_didl_lite_writer_filter_tags (collection->priv->writer, - DIDL_S_FILTER); + gupnp_didl_lite_writer_filter_tags (priv->writer, DIDL_S_FILTER); - return gupnp_didl_lite_writer_get_string (collection->priv->writer); + return gupnp_didl_lite_writer_get_string (priv->writer); } /** @@ -562,16 +559,13 @@ gupnp_media_collection_get_string (GUPnPMediaCollection *collection) GList * gupnp_media_collection_get_items (GUPnPMediaCollection *collection) { - GList *tmp = NULL, *iter; - g_return_val_if_fail (collection != NULL, NULL); g_return_val_if_fail (GUPNP_IS_MEDIA_COLLECTION (collection), NULL); + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); - for (iter = collection->priv->items; iter != NULL; iter = iter->next) { - tmp = g_list_prepend (tmp, g_object_ref (iter->data)); - } - - return tmp; + return g_list_reverse ( + g_list_copy_deep (priv->items, (GCopyFunc) g_object_ref, NULL)); } /** @@ -586,5 +580,8 @@ gupnp_media_collection_get_mutable (GUPnPMediaCollection *collection) g_return_val_if_fail (collection != NULL, FALSE); g_return_val_if_fail (GUPNP_IS_MEDIA_COLLECTION (collection), FALSE); - return collection->priv->mutable; + GUPnPMediaCollectionPrivate *priv = + gupnp_media_collection_get_instance_private (collection); + + return priv->mutable; } diff --git a/libgupnp-av/gupnp-media-collection.h b/libgupnp-av/gupnp-media-collection.h index 9c5a755..26f7982 100644 --- a/libgupnp-av/gupnp-media-collection.h +++ b/libgupnp-av/gupnp-media-collection.h @@ -19,8 +19,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GUPNP_DIDL_LITE_MEDIA_COLLECTION_H__ -#define __GUPNP_DIDL_LITE_MEDIA_COLLECTION_H__ +#ifndef GUPNP_DIDL_LITE_MEDIA_COLLECTION_H +#define GUPNP_DIDL_LITE_MEDIA_COLLECTION_H #include <glib-object.h> @@ -28,39 +28,13 @@ G_BEGIN_DECLS -GType -gupnp_media_collection_get_type (void) G_GNUC_CONST; - -#define GUPNP_TYPE_MEDIA_COLLECTION \ - (gupnp_media_collection_get_type ()) -#define GUPNP_MEDIA_COLLECTION(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_MEDIA_COLLECTION, \ - GUPnPMediaCollection)) -#define GUPNP_MEDIA_COLLECTION_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_MEDIA_COLLECTION, \ - GUPnPMediaCollectionClass)) -#define GUPNP_IS_MEDIA_COLLECTION(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_MEDIA_COLLECTION)) -#define GUPNP_IS_MEDIA_COLLECTION_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_MEDIA_COLLECTION)) -#define GUPNP_MEDIA_COLLECTION_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_MEDIA_COLLECTION, \ - GUPnPMediaCollectionClass)) - -typedef struct _GUPnPMediaCollectionPrivate GUPnPMediaCollectionPrivate; -typedef struct _GUPnPMediaCollection GUPnPMediaCollection; -typedef struct _GUPnPMediaCollectionClass GUPnPMediaCollectionClass; - -struct _GUPnPMediaCollection { - GObject parent; - - GUPnPMediaCollectionPrivate *priv; -}; +G_DECLARE_DERIVABLE_TYPE (GUPnPMediaCollection, + gupnp_media_collection, + GUPNP, + MEDIA_COLLECTION, + GObject) + +#define GUPNP_TYPE_MEDIA_COLLECTION (gupnp_media_collection_get_type ()) struct _GUPnPMediaCollectionClass { GObjectClass parent_class; @@ -106,4 +80,4 @@ gupnp_media_collection_get_mutable (GUPnPMediaCollection *collection); G_END_DECLS -#endif /* __GUPNP_DIDL_LITE_MEDIA_COLLECTION_H__ */ +#endif /* GUPNP_DIDL_LITE_MEDIA_COLLECTION_H */ diff --git a/libgupnp-av/gupnp-protocol-info.c b/libgupnp-av/gupnp-protocol-info.c index 2c3c5db..bc7d480 100644 --- a/libgupnp-av/gupnp-protocol-info.c +++ b/libgupnp-av/gupnp-protocol-info.c @@ -46,10 +46,11 @@ struct _GUPnPProtocolInfoPrivate { GUPnPDLNAOperation dlna_operation; GUPnPDLNAFlags dlna_flags; }; +typedef struct _GUPnPProtocolInfoPrivate GUPnPProtocolInfoPrivate; G_DEFINE_TYPE_WITH_PRIVATE (GUPnPProtocolInfo, gupnp_protocol_info, - G_TYPE_OBJECT); + G_TYPE_OBJECT) enum { PROP_0, @@ -300,11 +301,6 @@ add_dlna_info (GString *str, static void gupnp_protocol_info_init (GUPnPProtocolInfo *info) { - info->priv = gupnp_protocol_info_get_instance_private (info); - - info->priv->dlna_conversion = GUPNP_DLNA_CONVERSION_NONE; - info->priv->dlna_operation = GUPNP_DLNA_OPERATION_NONE; - info->priv->dlna_flags = GUPNP_DLNA_FLAGS_NONE; } static void @@ -417,20 +413,15 @@ static void gupnp_protocol_info_finalize (GObject *object) { GObjectClass *object_class; - GUPnPProtocolInfoPrivate *priv; - - priv = GUPNP_PROTOCOL_INFO (object)->priv; - - if (priv->protocol) - g_free (priv->protocol); - if (priv->network) - g_free (priv->network); - if (priv->mime_type) - g_free (priv->mime_type); - if (priv->dlna_profile) - g_free (priv->dlna_profile); - if (priv->play_speeds) - g_strfreev (priv->play_speeds); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private ( + GUPNP_PROTOCOL_INFO (object)); + + g_free (priv->protocol); + g_free (priv->network); + g_free (priv->mime_type); + g_free (priv->dlna_profile); + g_clear_pointer(&priv->play_speeds,g_strfreev); object_class = G_OBJECT_CLASS (gupnp_protocol_info_parent_class); object_class->finalize (object); @@ -541,54 +532,48 @@ gupnp_protocol_info_class_init (GUPnPProtocolInfoClass *klass) * * The DLNA conversion flags. **/ - g_object_class_install_property - (object_class, - PROP_DLNA_CONVERSION, - g_param_spec_flags ("dlna-conversion", - "DLNAConversion", - "The DLNA conversion flags.", - GUPNP_TYPE_DLNA_CONVERSION, - GUPNP_DLNA_CONVERSION_NONE, - G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | - G_PARAM_STATIC_NICK | - G_PARAM_STATIC_BLURB)); + g_object_class_install_property ( + object_class, + PROP_DLNA_CONVERSION, + g_param_spec_flags ("dlna-conversion", + "DLNAConversion", + "The DLNA conversion flags.", + GUPNP_TYPE_DLNA_CONVERSION, + GUPNP_DLNA_CONVERSION_NONE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); /** * GUPnPProtocolInfo:dlna-operation: * * The DLNA operation flags. **/ - g_object_class_install_property - (object_class, - PROP_DLNA_OPERATION, - g_param_spec_flags ("dlna-operation", - "DLNAOperation", - "The DLNA operation flags.", - GUPNP_TYPE_DLNA_OPERATION, - GUPNP_DLNA_OPERATION_NONE, - G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | - G_PARAM_STATIC_NICK | - G_PARAM_STATIC_BLURB)); + g_object_class_install_property ( + object_class, + PROP_DLNA_OPERATION, + g_param_spec_flags ("dlna-operation", + "DLNAOperation", + "The DLNA operation flags.", + GUPNP_TYPE_DLNA_OPERATION, + GUPNP_DLNA_OPERATION_NONE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); /** * GUPnPProtocolInfo:dlna-flags: * * Various generic DLNA flags. **/ - g_object_class_install_property - (object_class, - PROP_DLNA_FLAGS, - g_param_spec_flags ("dlna-flags", - "DLNAFlags", - "Various generic DLNA flags.", - GUPNP_TYPE_DLNA_FLAGS, - GUPNP_DLNA_FLAGS_NONE, - G_PARAM_READWRITE | - G_PARAM_STATIC_NAME | - G_PARAM_STATIC_NICK | - G_PARAM_STATIC_BLURB)); + g_object_class_install_property ( + object_class, + PROP_DLNA_FLAGS, + g_param_spec_flags ("dlna-flags", + "DLNAFlags", + "Various generic DLNA flags.", + GUPNP_TYPE_DLNA_FLAGS, + GUPNP_DLNA_FLAGS_NONE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT | + G_PARAM_STATIC_STRINGS)); } /** @@ -617,6 +602,7 @@ GUPnPProtocolInfo * gupnp_protocol_info_new_from_string (const char *protocol_info, GError **error) { + // FIXME: make a property... GUPnPProtocolInfo *info; char **tokens; @@ -657,7 +643,8 @@ gupnp_protocol_info_new_from_string (const char *protocol_info, * * Provides the string representation of @info. * - * Return value: String representation of @info. #g_free after usage. + * Return value:(transfer full)(nullable): String representation of @info. + * #g_free after usage. **/ char * gupnp_protocol_info_to_string (GUPnPProtocolInfo *info) @@ -698,15 +685,17 @@ gupnp_protocol_info_to_string (GUPnPProtocolInfo *info) * * Get the protocol of this info. * - * Return value: The protocol of this info or %NULL. This string should not + * Return value:(transfer none)(nullable): The protocol of this info or %NULL. This string should not * be freed. **/ const char * gupnp_protocol_info_get_protocol (GUPnPProtocolInfo *info) { g_return_val_if_fail (GUPNP_IS_PROTOCOL_INFO (info), NULL); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - return info->priv->protocol; + return priv->protocol; } /** @@ -715,14 +704,16 @@ gupnp_protocol_info_get_protocol (GUPnPProtocolInfo *info) * * Get the network this info is associated with. * - * Return value: The network string or %NULL. This string should not be freed. + * Return value:(transfer none)(nullable): The network string or %NULL. This string should not be freed. **/ const char * gupnp_protocol_info_get_network (GUPnPProtocolInfo *info) { g_return_val_if_fail (GUPNP_IS_PROTOCOL_INFO (info), NULL); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - return info->priv->network; + return priv->network; } /** @@ -731,15 +722,17 @@ gupnp_protocol_info_get_network (GUPnPProtocolInfo *info) * * Get the MIME-type of this info. * - * Return value: The MIME-type of this info or %NULL. This string should not + * Return value:(transfer none)(nullable): The MIME-type of this info or %NULL. This string should not * be freed. **/ const char * gupnp_protocol_info_get_mime_type (GUPnPProtocolInfo *info) { g_return_val_if_fail (GUPNP_IS_PROTOCOL_INFO (info), NULL); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - return info->priv->mime_type; + return priv->mime_type; } /** @@ -748,15 +741,17 @@ gupnp_protocol_info_get_mime_type (GUPnPProtocolInfo *info) * * Get the DLNA profile of this info. * - * Return value: The DLNA profile of this info or %NULL. This string should + * Return value:(transfer none)(nullable): The DLNA profile of this info or %NULL. This string should * not be freed. **/ const char * gupnp_protocol_info_get_dlna_profile (GUPnPProtocolInfo *info) { g_return_val_if_fail (GUPNP_IS_PROTOCOL_INFO (info), NULL); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - return info->priv->dlna_profile; + return priv->dlna_profile; } /** @@ -765,15 +760,17 @@ gupnp_protocol_info_get_dlna_profile (GUPnPProtocolInfo *info) * * Get the allowed play speeds on this info in the form of array of strings. * - * Returns: (transfer none): The allowed play speeds as array of strings or %NULL. This + * Returns: (transfer none)(nullable): The allowed play speeds as array of strings or %NULL. This * return array and it's content must not be modified or freed. **/ const char ** gupnp_protocol_info_get_play_speeds (GUPnPProtocolInfo *info) { g_return_val_if_fail (GUPNP_IS_PROTOCOL_INFO (info), NULL); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - return (const char **) info->priv->play_speeds; + return (const char **) priv->play_speeds; } /** @@ -789,8 +786,10 @@ gupnp_protocol_info_get_dlna_conversion (GUPnPProtocolInfo *info) { g_return_val_if_fail (GUPNP_IS_PROTOCOL_INFO (info), GUPNP_DLNA_CONVERSION_NONE); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - return info->priv->dlna_conversion; + return priv->dlna_conversion; } /** @@ -806,8 +805,10 @@ gupnp_protocol_info_get_dlna_operation (GUPnPProtocolInfo *info) { g_return_val_if_fail (GUPNP_IS_PROTOCOL_INFO (info), GUPNP_DLNA_OPERATION_NONE); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - return info->priv->dlna_operation; + return priv->dlna_operation; } /** @@ -823,8 +824,10 @@ gupnp_protocol_info_get_dlna_flags (GUPnPProtocolInfo *info) { g_return_val_if_fail (GUPNP_IS_PROTOCOL_INFO (info), GUPNP_DLNA_FLAGS_NONE); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - return info->priv->dlna_flags; + return priv->dlna_flags; } /** @@ -839,10 +842,11 @@ gupnp_protocol_info_set_protocol (GUPnPProtocolInfo *info, const char *protocol) { g_return_if_fail (GUPNP_IS_PROTOCOL_INFO (info)); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - if (info->priv->protocol) - g_free (info->priv->protocol); - info->priv->protocol = g_strdup (protocol); + g_free (priv->protocol); + priv->protocol = g_strdup (protocol); g_object_notify (G_OBJECT (info), "protocol"); } @@ -859,10 +863,11 @@ gupnp_protocol_info_set_network (GUPnPProtocolInfo *info, const char *network) { g_return_if_fail (GUPNP_IS_PROTOCOL_INFO (info)); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - if (info->priv->network) - g_free (info->priv->network); - info->priv->network = g_strdup (network); + g_free (priv->network); + priv->network = g_strdup (network); g_object_notify (G_OBJECT (info), "network"); } @@ -879,10 +884,11 @@ gupnp_protocol_info_set_mime_type (GUPnPProtocolInfo *info, const char *mime_type) { g_return_if_fail (GUPNP_IS_PROTOCOL_INFO (info)); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - if (info->priv->mime_type) - g_free (info->priv->mime_type); - info->priv->mime_type = g_strdup (mime_type); + g_free (priv->mime_type); + priv->mime_type = g_strdup (mime_type); g_object_notify (G_OBJECT (info), "mime-type"); } @@ -899,10 +905,11 @@ gupnp_protocol_info_set_dlna_profile (GUPnPProtocolInfo *info, const char *profile) { g_return_if_fail (GUPNP_IS_PROTOCOL_INFO (info)); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - if (info->priv->dlna_profile) - g_free (info->priv->dlna_profile); - info->priv->dlna_profile = g_strdup (profile); + g_free (priv->dlna_profile); + priv->dlna_profile = g_strdup (profile); g_object_notify (G_OBJECT (info), "dlna-profile"); } @@ -919,10 +926,12 @@ gupnp_protocol_info_set_play_speeds (GUPnPProtocolInfo *info, const char **speeds) { g_return_if_fail (GUPNP_IS_PROTOCOL_INFO (info)); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - if (info->priv->play_speeds) - g_strfreev (info->priv->play_speeds); - info->priv->play_speeds = (char **) g_boxed_copy (G_TYPE_STRV, speeds); + if (priv->play_speeds) + g_strfreev (priv->play_speeds); + priv->play_speeds = (char **) g_boxed_copy (G_TYPE_STRV, speeds); g_object_notify (G_OBJECT (info), "play-speeds"); } @@ -939,8 +948,10 @@ gupnp_protocol_info_set_dlna_conversion (GUPnPProtocolInfo *info, GUPnPDLNAConversion conversion) { g_return_if_fail (GUPNP_IS_PROTOCOL_INFO (info)); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - info->priv->dlna_conversion = conversion; + priv->dlna_conversion = conversion; g_object_notify (G_OBJECT (info), "dlna-conversion"); } @@ -957,8 +968,10 @@ gupnp_protocol_info_set_dlna_operation (GUPnPProtocolInfo *info, GUPnPDLNAOperation operation) { g_return_if_fail (GUPNP_IS_PROTOCOL_INFO (info)); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - info->priv->dlna_operation = operation; + priv->dlna_operation = operation; g_object_notify (G_OBJECT (info), "dlna-operation"); } @@ -975,8 +988,10 @@ gupnp_protocol_info_set_dlna_flags (GUPnPProtocolInfo *info, GUPnPDLNAFlags flags) { g_return_if_fail (GUPNP_IS_PROTOCOL_INFO (info)); + GUPnPProtocolInfoPrivate *priv = + gupnp_protocol_info_get_instance_private (info); - info->priv->dlna_flags = flags; + priv->dlna_flags = flags; g_object_notify (G_OBJECT (info), "dlna-flags"); } diff --git a/libgupnp-av/gupnp-protocol-info.h b/libgupnp-av/gupnp-protocol-info.h index 078ad4e..74dbed3 100644 --- a/libgupnp-av/gupnp-protocol-info.h +++ b/libgupnp-av/gupnp-protocol-info.h @@ -22,8 +22,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GUPNP_PROTOCOL_INFO_H__ -#define __GUPNP_PROTOCOL_INFO_H__ +#ifndef GUPNP_PROTOCOL_INFO_H +#define GUPNP_PROTOCOL_INFO_H #include <stdarg.h> #include <glib-object.h> @@ -32,39 +32,15 @@ G_BEGIN_DECLS -GType -gupnp_protocol_info_get_type (void) G_GNUC_CONST; - -#define GUPNP_TYPE_PROTOCOL_INFO \ - (gupnp_protocol_info_get_type ()) -#define GUPNP_PROTOCOL_INFO(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_PROTOCOL_INFO, \ - GUPnPProtocolInfo)) -#define GUPNP_PROTOCOL_INFO_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_PROTOCOL_INFO, \ - GUPnPProtocolInfoClass)) -#define GUPNP_IS_PROTOCOL_INFO(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_PROTOCOL_INFO)) -#define GUPNP_IS_PROTOCOL_INFO_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_PROTOCOL_INFO)) -#define GUPNP_PROTOCOL_INFO_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_PROTOCOL_INFO, \ - GUPnPProtocolInfoClass)) - -typedef struct _GUPnPProtocolInfoPrivate GUPnPProtocolInfoPrivate; - -typedef struct { - GObject parent; - - GUPnPProtocolInfoPrivate *priv; -} GUPnPProtocolInfo; - -typedef struct { +G_DECLARE_DERIVABLE_TYPE (GUPnPProtocolInfo, + gupnp_protocol_info, + GUPNP, + PROTOCOL_INFO, + GObject) + +#define GUPNP_TYPE_PROTOCOL_INFO (gupnp_protocol_info_get_type ()) + +struct _GUPnPProtocolInfoClass { GObjectClass parent_class; /* future padding */ @@ -72,7 +48,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPProtocolInfoClass; +}; GUPnPProtocolInfo * gupnp_protocol_info_new (void); @@ -146,4 +122,4 @@ gupnp_protocol_info_get_dlna_flags (GUPnPProtocolInfo *info); G_END_DECLS -#endif /* __GUPNP_PROTOCOL_INFO_H__ */ +#endif /* GUPNP_PROTOCOL_INFO_H */ diff --git a/libgupnp-av/gupnp-search-criteria-parser.c b/libgupnp-av/gupnp-search-criteria-parser.c index 1fcac5b..b8ed6f7 100644 --- a/libgupnp-av/gupnp-search-criteria-parser.c +++ b/libgupnp-av/gupnp-search-criteria-parser.c @@ -98,10 +98,13 @@ struct _GUPnPSearchCriteriaParserPrivate { GScanner *scanner; }; +typedef struct _GUPnPSearchCriteriaParserPrivate + GUPnPSearchCriteriaParserPrivate; + /* GUPnPSearchCriteriaParser */ G_DEFINE_TYPE_WITH_PRIVATE (GUPnPSearchCriteriaParser, gupnp_search_criteria_parser, - G_TYPE_OBJECT); + G_TYPE_OBJECT) enum { BEGIN_PARENS, @@ -169,30 +172,28 @@ struct { static void gupnp_search_criteria_parser_init (GUPnPSearchCriteriaParser *parser) { - int i; - - parser->priv = + GUPnPSearchCriteriaParserPrivate *priv = gupnp_search_criteria_parser_get_instance_private (parser); /* Set up GScanner */ - parser->priv->scanner = g_scanner_new (NULL); + priv->scanner = g_scanner_new (NULL); - parser->priv->scanner->config->cset_skip_characters = (char *)" \t\n\r\012" + priv->scanner->config->cset_skip_characters = (char *)" \t\n\r\012" "\013\014\015"; - parser->priv->scanner->config->scan_identifier_1char = TRUE; - parser->priv->scanner->config->cset_identifier_first = (char *) G_CSET_a_2_z + priv->scanner->config->scan_identifier_1char = TRUE; + priv->scanner->config->cset_identifier_first = (char *) G_CSET_a_2_z "_*<>=!@" G_CSET_A_2_Z; - parser->priv->scanner->config->cset_identifier_nth = (char *)G_CSET_a_2_z + priv->scanner->config->cset_identifier_nth = (char *)G_CSET_a_2_z "_0123456789=:@" G_CSET_A_2_Z G_CSET_LATINS G_CSET_LATINC; - parser->priv->scanner->config->symbol_2_token = TRUE; + priv->scanner->config->symbol_2_token = TRUE; /* Add symbols */ - for (i = 0; i < NUM_SYMBOLS; i++) { - g_scanner_scope_add_symbol (parser->priv->scanner, + for (int i = 0; i < NUM_SYMBOLS; i++) { + g_scanner_scope_add_symbol (priv->scanner, 0, symbols[i].name, GINT_TO_POINTER (symbols[i].token)); @@ -206,9 +207,11 @@ gupnp_search_criteria_parser_finalize (GObject *object) GUPnPSearchCriteriaParser *parser; parser = GUPNP_SEARCH_CRITERIA_PARSER (object); + GUPnPSearchCriteriaParserPrivate *priv = + gupnp_search_criteria_parser_get_instance_private (parser); /* Destroy GScanner */ - g_scanner_destroy (parser->priv->scanner); + g_scanner_destroy (priv->scanner); gobject_class = G_OBJECT_CLASS (gupnp_search_criteria_parser_parent_class); @@ -350,14 +353,16 @@ scan_rel_exp (GUPnPSearchCriteriaParser *parser, guint token; GUPnPSearchCriteriaOp op; char *arg1; + GUPnPSearchCriteriaParserPrivate *priv = + gupnp_search_criteria_parser_get_instance_private (parser); - token = g_scanner_get_next_token (parser->priv->scanner); + token = g_scanner_get_next_token (priv->scanner); g_assert (token == G_TOKEN_IDENTIFIER); /* Already checked */ - value = g_scanner_cur_value (parser->priv->scanner); + value = g_scanner_cur_value (priv->scanner); arg1 = g_strdup (value.v_string); - token = g_scanner_get_next_token (parser->priv->scanner); + token = g_scanner_get_next_token (priv->scanner); switch (token) { case GUPNP_SEARCH_CRITERIA_OP_EQ: case GUPNP_SEARCH_CRITERIA_OP_NEQ: @@ -370,32 +375,36 @@ scan_rel_exp (GUPnPSearchCriteriaParser *parser, case GUPNP_SEARCH_CRITERIA_OP_DERIVED_FROM: op = token; - token = g_scanner_get_next_token (parser->priv->scanner); + token = g_scanner_get_next_token (priv->scanner); if (token != G_TOKEN_STRING) { - g_set_error - (error, - GUPNP_SEARCH_CRITERIA_PARSER_ERROR, - GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED, - "Expected quoted string at position %u", - g_scanner_cur_position - (parser->priv->scanner)); + g_set_error (error, + GUPNP_SEARCH_CRITERIA_PARSER_ERROR, + GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED, + "Expected quoted string at position %u", + g_scanner_cur_position (priv->scanner)); ret = FALSE; break; } - value = g_scanner_cur_value (parser->priv->scanner); + value = g_scanner_cur_value (priv->scanner); - g_signal_emit (parser, signals[EXPRESSION], 0, - arg1, op, value.v_string, error, &ret); + g_signal_emit (parser, + signals[EXPRESSION], + 0, + arg1, + op, + value.v_string, + error, + &ret); break; case GUPNP_SEARCH_CRITERIA_OP_EXISTS: op = token; - token = g_scanner_get_next_token (parser->priv->scanner); + token = g_scanner_get_next_token (priv->scanner); switch (token) { case SYMBOL_TRUE: g_signal_emit (parser, signals[EXPRESSION], 0, @@ -408,13 +417,11 @@ scan_rel_exp (GUPnPSearchCriteriaParser *parser, break; default: - g_set_error - (error, - GUPNP_SEARCH_CRITERIA_PARSER_ERROR, - GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED, - "Expected boolean value at position %u", - g_scanner_cur_position - (parser->priv->scanner)); + g_set_error (error, + GUPNP_SEARCH_CRITERIA_PARSER_ERROR, + GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED, + "Expected boolean value at position %u", + g_scanner_cur_position (priv->scanner)); ret = FALSE; @@ -428,8 +435,7 @@ scan_rel_exp (GUPnPSearchCriteriaParser *parser, GUPNP_SEARCH_CRITERIA_PARSER_ERROR, GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED, "Expected operator at position %u", - g_scanner_cur_position - (parser->priv->scanner)); + g_scanner_cur_position (priv->scanner)); ret = FALSE; } @@ -450,12 +456,14 @@ scan_logical_op (GUPnPSearchCriteriaParser *parser, { gboolean ret; guint token; + GUPnPSearchCriteriaParserPrivate *priv = + gupnp_search_criteria_parser_get_instance_private (parser); - token = g_scanner_peek_next_token (parser->priv->scanner); + token = g_scanner_peek_next_token (priv->scanner); switch (token) { case SYMBOL_AND: - g_scanner_get_next_token (parser->priv->scanner); + g_scanner_get_next_token (priv->scanner); g_signal_emit (parser, signals[CONJUNCTION], 0); @@ -464,7 +472,7 @@ scan_logical_op (GUPnPSearchCriteriaParser *parser, break; case SYMBOL_OR: - g_scanner_get_next_token (parser->priv->scanner); + g_scanner_get_next_token (priv->scanner); g_signal_emit (parser, signals[DISJUNCTION], 0); @@ -490,11 +498,13 @@ scan_search_exp (GUPnPSearchCriteriaParser *parser, { gboolean ret; guint token; + GUPnPSearchCriteriaParserPrivate *priv = + gupnp_search_criteria_parser_get_instance_private (parser); - token = g_scanner_peek_next_token (parser->priv->scanner); + token = g_scanner_peek_next_token (priv->scanner); switch (token) { case G_TOKEN_LEFT_PAREN: - g_scanner_get_next_token (parser->priv->scanner); + g_scanner_get_next_token (priv->scanner); g_signal_emit (parser, signals[BEGIN_PARENS], 0); @@ -502,15 +512,14 @@ scan_search_exp (GUPnPSearchCriteriaParser *parser, if (ret == FALSE) break; - token = g_scanner_get_next_token (parser->priv->scanner); + token = g_scanner_get_next_token (priv->scanner); if (token != G_TOKEN_RIGHT_PAREN) { - g_set_error - (error, - GUPNP_SEARCH_CRITERIA_PARSER_ERROR, - GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED, - "Expected right parenthesis at position %u", - g_scanner_cur_position - (parser->priv->scanner)); + g_set_error ( + error, + GUPNP_SEARCH_CRITERIA_PARSER_ERROR, + GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED, + "Expected right parenthesis at position %u", + g_scanner_cur_position (priv->scanner)); ret = FALSE; @@ -533,14 +542,14 @@ scan_search_exp (GUPnPSearchCriteriaParser *parser, break; default: - g_scanner_get_next_token (parser->priv->scanner); + g_scanner_get_next_token (priv->scanner); g_set_error (error, GUPNP_SEARCH_CRITERIA_PARSER_ERROR, GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED, "Expected property name or left parenthesis at " "position %u", - g_scanner_cur_position (parser->priv->scanner)); + g_scanner_cur_position (priv->scanner)); ret = FALSE; } @@ -570,13 +579,15 @@ gupnp_search_criteria_parser_parse_text (GUPnPSearchCriteriaParser *parser, g_return_val_if_fail (GUPNP_IS_SEARCH_CRITERIA_PARSER (parser), FALSE); g_return_val_if_fail (text != NULL, FALSE); + GUPnPSearchCriteriaParserPrivate *priv = + gupnp_search_criteria_parser_get_instance_private (parser); /* Feed into scanner */ - g_scanner_input_text (parser->priv->scanner, text, strlen (text)); + g_scanner_input_text (priv->scanner, text, strlen (text)); - token = g_scanner_peek_next_token (parser->priv->scanner); + token = g_scanner_peek_next_token (priv->scanner); if (token == SYMBOL_ASTERISK) { - g_scanner_get_next_token (parser->priv->scanner); + g_scanner_get_next_token (priv->scanner); /* Do nothing. */ @@ -586,15 +597,13 @@ gupnp_search_criteria_parser_parse_text (GUPnPSearchCriteriaParser *parser, if (ret == TRUE) { /* Confirm that we have EOF now */ - token = g_scanner_get_next_token (parser->priv->scanner); + token = g_scanner_get_next_token (priv->scanner); if (token != G_TOKEN_EOF) { - g_set_error - (error, - GUPNP_SEARCH_CRITERIA_PARSER_ERROR, - GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED, - "Expected EOF at position %u", - g_scanner_cur_position - (parser->priv->scanner)); + g_set_error (error, + GUPNP_SEARCH_CRITERIA_PARSER_ERROR, + GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED, + "Expected EOF at position %u", + g_scanner_cur_position (priv->scanner)); } } diff --git a/libgupnp-av/gupnp-search-criteria-parser.h b/libgupnp-av/gupnp-search-criteria-parser.h index 832a17a..7a0878c 100644 --- a/libgupnp-av/gupnp-search-criteria-parser.h +++ b/libgupnp-av/gupnp-search-criteria-parser.h @@ -19,36 +19,21 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GUPNP_SEARCH_CRITERIA_PARSER_H__ -#define __GUPNP_SEARCH_CRITERIA_PARSER_H__ +#ifndef GUPNP_SEARCH_CRITERIA_PARSER_H +#define GUPNP_SEARCH_CRITERIA_PARSER_H #include <glib-object.h> G_BEGIN_DECLS -GType -gupnp_search_criteria_parser_get_type (void) G_GNUC_CONST; - -#define GUPNP_TYPE_SEARCH_CRITERIA_PARSER \ - (gupnp_search_criteria_parser_get_type ()) -#define GUPNP_SEARCH_CRITERIA_PARSER(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST ((obj), \ - GUPNP_TYPE_SEARCH_CRITERIA_PARSER, \ - GUPnPSearchCriteriaParser)) -#define GUPNP_SEARCH_CRITERIA_PARSER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_CAST ((obj), \ - GUPNP_TYPE_SEARCH_CRITERIA_PARSER, \ - GUPnPSearchCriteriaParserClass)) -#define GUPNP_IS_SEARCH_CRITERIA_PARSER(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \ - GUPNP_TYPE_SEARCH_CRITERIA_PARSER)) -#define GUPNP_IS_SEARCH_CRITERIA_PARSER_CLASS(obj) \ - (G_TYPE_CHECK_CLASS_TYPE ((obj), \ - GUPNP_TYPE_SEARCH_CRITERIA_PARSER)) -#define GUPNP_SEARCH_CRITERIA_PARSER_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - GUPNP_TYPE_SEARCH_CRITERIA_PARSER, \ - GUPnPSearchCriteriaParserClass)) +G_DECLARE_DERIVABLE_TYPE(GUPnPSearchCriteriaParser, + gupnp_search_criteria_parser, + GUPNP, + SEARCH_CRITERIA_PARSER, + GObject) + +#define GUPNP_TYPE_SEARCH_CRITERIA_PARSER \ + (gupnp_search_criteria_parser_get_type ()) /** * GUPnPSearchCriteriaOp: @@ -87,8 +72,8 @@ gupnp_search_criteria_op_get_type (void) G_GNUC_CONST; #define GUPNP_TYPE_SEARCH_CRITERIA_OP (gupnp_search_criteria_op_get_type ()) -#define GUPNP_SEARCH_CRITERIA_PARSER_ERROR \ - (gupnp_search_criteria_parser_error_quark ()) +#define GUPNP_SEARCH_CRITERIA_PARSER_ERROR \ + (gupnp_search_criteria_parser_error_quark ()) GQuark gupnp_search_criteria_parser_error_quark (void); @@ -102,16 +87,8 @@ typedef enum { GUPNP_SEARCH_CRITERIA_PARSER_ERROR_FAILED } GUPnPSearchCriteriaParserError; -typedef struct _GUPnPSearchCriteriaParserPrivate - GUPnPSearchCriteriaParserPrivate; - -typedef struct { - GObject parent; - - GUPnPSearchCriteriaParserPrivate *priv; -} GUPnPSearchCriteriaParser; -typedef struct { +struct _GUPnPSearchCriteriaParserClass { GObjectClass parent_class; /* signals */ @@ -130,7 +107,7 @@ typedef struct { void (* _gupnp_reserved2) (void); void (* _gupnp_reserved3) (void); void (* _gupnp_reserved4) (void); -} GUPnPSearchCriteriaParserClass; +}; GUPnPSearchCriteriaParser * gupnp_search_criteria_parser_new (void); @@ -142,4 +119,4 @@ gupnp_search_criteria_parser_parse_text (GUPnPSearchCriteriaParser *parser, G_END_DECLS -#endif /* __GUPNP_SEARCH_CRITERIA_PARSER_H__ */ +#endif /* GUPNP_SEARCH_CRITERIA_PARSER_H */ diff --git a/libgupnp-av/gvalue-util.c b/libgupnp-av/gvalue-util.c index daece3b..abfee66 100644 --- a/libgupnp-av/gvalue-util.c +++ b/libgupnp-av/gvalue-util.c @@ -25,8 +25,7 @@ #include "gvalue-util.h" gboolean -gvalue_util_set_value_from_string (GValue *value, - const char *str) +av_gvalue_util_set_value_from_string (GValue *value, const char *str) { GValue tmp_value = {0, }; int i; @@ -42,11 +41,7 @@ gvalue_util_set_value_from_string (GValue *value, break; case G_TYPE_CHAR: -#if GLIB_CHECK_VERSION(2,32,0) g_value_set_schar (value, *str); -#else - g_value_set_char (value, *str); -#endif break; diff --git a/libgupnp-av/gvalue-util.h b/libgupnp-av/gvalue-util.h index c3b883a..1af32fd 100644 --- a/libgupnp-av/gvalue-util.h +++ b/libgupnp-av/gvalue-util.h @@ -19,14 +19,13 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __GVALUE_UTIL_H__ -#define __GVALUE_UTIL_H__ +#ifndef GVALUE_UTIL_H +#define GVALUE_UTIL_H #include <glib-object.h> G_GNUC_INTERNAL gboolean -gvalue_util_set_value_from_string (GValue *value, - const char *str); +av_gvalue_util_set_value_from_string (GValue *value, const char *str); #endif /* __GVALUE_UTIL_H__ */ diff --git a/libgupnp-av/meson.build b/libgupnp-av/meson.build index deb14e3..2dc1bb9 100644 --- a/libgupnp-av/meson.build +++ b/libgupnp-av/meson.build @@ -22,7 +22,7 @@ introspection_sources = [ ] v = meson.project_version().split('.') -soversion = 2 +soversion = 3 library_minor = v[0].to_int() * 100 + v[1].to_int() library_micro = v[2].to_int() diff --git a/libgupnp-av/time-utils.h b/libgupnp-av/time-utils.h index d15c598..d5a8ad2 100644 --- a/libgupnp-av/time-utils.h +++ b/libgupnp-av/time-utils.h @@ -19,8 +19,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __TIME_UTILS_H__ -#define __TIME_UTILS_H__ +#ifndef TIME_UTILS_H +#define TIME_UTILS_H G_BEGIN_DECLS diff --git a/libgupnp-av/xml-util.c b/libgupnp-av/xml-util.c index ba3b1d1..bb1c2b4 100644 --- a/libgupnp-av/xml-util.c +++ b/libgupnp-av/xml-util.c @@ -24,6 +24,7 @@ */ #include <string.h> +#include <glib/gprintf.h> #include "xml-util.h" @@ -41,7 +42,7 @@ static GUPnPXMLNamespaceDescription gupnp_xml_namespaces[] = { "urn:schemas-dlna-org:metadata-1-0/", "dlna" }, { "http://www.pv.com/pvns/", "pv" }, { "urn:schemas-upnp-org:metadata-1-0/upnp/", "upnp" }, - { NULL } + { NULL, NULL } }; GUPnPAVXMLDoc * @@ -558,4 +559,47 @@ av_xml_util_get_ns (xmlDocPtr doc, GUPnPXMLNamespace ns, xmlNsPtr *ns_out) return tmp_ns; } +void +av_xml_util_set_int_prop (xmlNodePtr node, const char *name, int value) +{ + char *str; + + str = g_strdup_printf ("%d", value); + xmlSetProp (node, (unsigned char *) name, (unsigned char *) str); + g_free (str); +} + +void +av_xml_util_set_prop (xmlNodePtr node, + const char *name, + const char *format, + ...) +{ + va_list args; + + va_start (args, format); + char *str = NULL; + g_vasprintf (&str, format, args); + xmlSetProp (node, (xmlChar *) name, (xmlChar *) str); + g_free (str); + va_end (args); +} + +void +av_xml_util_set_ns_prop (xmlNodePtr node, + xmlNsPtr ns, + const char *name, + const char *format, + ...) +{ + va_list args; + + va_start (args, format); + char *str = NULL; + g_vasprintf(&str, format, args); + xmlSetNsProp (node, ns, (xmlChar *) name, (xmlChar *) str); + g_free (str); + va_end (args); +} + G_DEFINE_BOXED_TYPE (GUPnPAVXMLDoc, av_xml_doc, g_rc_box_acquire, av_xml_doc_unref) diff --git a/libgupnp-av/xml-util.h b/libgupnp-av/xml-util.h index 0010837..9c52d5f 100644 --- a/libgupnp-av/xml-util.h +++ b/libgupnp-av/xml-util.h @@ -23,8 +23,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __XML_UTIL_H__ -#define __XML_UTIL_H__ +#ifndef XML_UTIL_H +#define XML_UTIL_H #include <glib.h> #include <libxml/tree.h> @@ -45,7 +45,6 @@ G_BEGIN_DECLS typedef struct _GPnPAVXMLDoc { - volatile int refcount; xmlDoc *doc; } GUPnPAVXMLDoc; @@ -159,6 +158,14 @@ G_GNUC_INTERNAL xmlNsPtr av_xml_util_get_ns (xmlDocPtr doc, GUPnPXMLNamespace ns, xmlNsPtr *ns_out); +G_GNUC_INTERNAL void +av_xml_util_set_int_prop (xmlNodePtr node, const char *name, int value); + +G_GNUC_INTERNAL void +av_xml_util_set_prop (xmlNodePtr node, const char *name, const char *format, ...) G_GNUC_PRINTF(3, 4); + +G_GNUC_INTERNAL void +av_xml_util_set_ns_prop (xmlNodePtr node, xmlNsPtr ns, const char *name, const char *format, ...) G_GNUC_PRINTF(4, 5); G_END_DECLS diff --git a/libgupnp-av/xsd-data.c b/libgupnp-av/xsd-data.c index 3f985a4..276a973 100644 --- a/libgupnp-av/xsd-data.c +++ b/libgupnp-av/xsd-data.c @@ -64,10 +64,9 @@ xsd_data_free (XSDData *xsd_data) { if (xsd_data == NULL) return; - if (xsd_data->valid_context != NULL) - xmlSchemaFreeValidCtxt (xsd_data->valid_context); - if (xsd_data->schema != NULL) - xmlSchemaFree (xsd_data->schema); + g_clear_pointer (&xsd_data->valid_context, xmlSchemaFreeValidCtxt); + g_clear_pointer (&xsd_data->schema, xmlSchemaFree); + g_slice_free (XSDData, xsd_data); } diff --git a/libgupnp-av/xsd-data.h b/libgupnp-av/xsd-data.h index b89dcd6..55d86f2 100644 --- a/libgupnp-av/xsd-data.h +++ b/libgupnp-av/xsd-data.h @@ -19,8 +19,8 @@ * Boston, MA 02110-1301, USA. */ -#ifndef __XSD_DATA_H__ -#define __XSD_DATA_H__ +#ifndef XSD_DATA_H +#define XSD_DATA_H #include <glib.h> #include <libxml/tree.h> |