Update to gupnp-av-0.12.4
[profile/ivi/GUPnP-AV.git] / libgupnp-av / gupnp-didl-lite-object.h
1 /*
2  * Copyright (C) 2009 Nokia Corporation.
3  * Copyright (C) 2007, 2008 OpenedHand Ltd.
4  * Copyright (C) 2012 Intel Corporation
5  *
6  * Authors: Zeeshan Ali (Khattak) <zeeshan.ali@nokia.com>
7  *                                <zeeshanak@gnome.org>
8  *          Jorn Baayen <jorn@openedhand.com>
9  *          Krzesimir Nowak <krnowak@openismus.com>
10  *
11  * This library is free software; you can redistribute it and/or
12  * modify it under the terms of the GNU Library General Public
13  * License as published by the Free Software Foundation; either
14  * version 2 of the License, or (at your option) any later version.
15  *
16  * This library is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19  * Library General Public License for more details.
20  *
21  * You should have received a copy of the GNU Library General Public
22  * License along with this library; if not, write to the
23  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
24  * Boston, MA 02110-1301, USA.
25  */
26
27 #ifndef __GUPNP_DIDL_LITE_OBJECT_H__
28 #define __GUPNP_DIDL_LITE_OBJECT_H__
29
30 #include <stdarg.h>
31 #include <glib-object.h>
32 #include <libxml/tree.h>
33
34 #include "gupnp-didl-lite-resource.h"
35 #include "gupnp-didl-lite-descriptor.h"
36 #include "gupnp-didl-lite-contributor.h"
37 #include "gupnp-av-enums.h"
38
39 G_BEGIN_DECLS
40
41 GType
42 gupnp_didl_lite_object_get_type (void) G_GNUC_CONST;
43
44 #define GUPNP_TYPE_DIDL_LITE_OBJECT \
45                 (gupnp_didl_lite_object_get_type ())
46 #define GUPNP_DIDL_LITE_OBJECT(obj) \
47                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
48                  GUPNP_TYPE_DIDL_LITE_OBJECT, \
49                  GUPnPDIDLLiteObject))
50 #define GUPNP_DIDL_LITE_OBJECT_CLASS(obj) \
51                 (G_TYPE_CHECK_CLASS_CAST ((obj), \
52                  GUPNP_TYPE_DIDL_LITE_OBJECT, \
53                  GUPnPDIDLLiteObjectClass))
54 #define GUPNP_IS_DIDL_LITE_OBJECT(obj) \
55                 (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
56                  GUPNP_TYPE_DIDL_LITE_OBJECT))
57 #define GUPNP_IS_DIDL_LITE_OBJECT_CLASS(obj) \
58                 (G_TYPE_CHECK_CLASS_TYPE ((obj), \
59                  GUPNP_TYPE_DIDL_LITE_OBJECT))
60 #define GUPNP_DIDL_LITE_OBJECT_GET_CLASS(obj) \
61                 (G_TYPE_INSTANCE_GET_CLASS ((obj), \
62                  GUPNP_TYPE_DIDL_LITE_OBJECT, \
63                  GUPnPDIDLLiteObjectClass))
64
65 typedef struct _GUPnPDIDLLiteObjectPrivate GUPnPDIDLLiteObjectPrivate;
66
67 typedef struct {
68         GObject parent;
69
70         GUPnPDIDLLiteObjectPrivate *priv;
71 } GUPnPDIDLLiteObject;
72
73 typedef struct {
74         GObjectClass parent_class;
75
76         /* future padding */
77         void (* _gupnp_reserved1) (void);
78         void (* _gupnp_reserved2) (void);
79         void (* _gupnp_reserved3) (void);
80         void (* _gupnp_reserved4) (void);
81 } GUPnPDIDLLiteObjectClass;
82
83 xmlNode *
84 gupnp_didl_lite_object_get_xml_node     (GUPnPDIDLLiteObject *object);
85
86 xmlNsPtr
87 gupnp_didl_lite_object_get_upnp_namespace
88                                         (GUPnPDIDLLiteObject *object);
89
90 xmlNsPtr
91 gupnp_didl_lite_object_get_dc_namespace (GUPnPDIDLLiteObject *object);
92
93 xmlNsPtr
94 gupnp_didl_lite_object_get_dlna_namespace
95                                         (GUPnPDIDLLiteObject *object);
96
97 xmlNsPtr
98 gupnp_didl_lite_object_get_pv_namespace
99                                         (GUPnPDIDLLiteObject *object);
100 const char *
101 gupnp_didl_lite_object_get_upnp_class   (GUPnPDIDLLiteObject *object);
102
103 const char *
104 gupnp_didl_lite_object_get_id           (GUPnPDIDLLiteObject *object);
105
106 const char *
107 gupnp_didl_lite_object_get_parent_id    (GUPnPDIDLLiteObject *object);
108
109 GList *
110 gupnp_didl_lite_object_get_properties   (GUPnPDIDLLiteObject *object,
111                                          const char          *name);
112
113 gboolean
114 gupnp_didl_lite_object_get_restricted   (GUPnPDIDLLiteObject *object);
115
116 const char *
117 gupnp_didl_lite_object_get_title        (GUPnPDIDLLiteObject *object);
118
119 const char *
120 gupnp_didl_lite_object_get_creator      (GUPnPDIDLLiteObject *object);
121
122 #ifndef GUPNP_DISABLE_DEPRECATED
123 const char *
124 gupnp_didl_lite_object_get_artist       (GUPnPDIDLLiteObject *object);
125
126 const char *
127 gupnp_didl_lite_object_get_author       (GUPnPDIDLLiteObject *object);
128
129 #endif /* GUPNP_DISABLE_DEPRECATED */
130
131 GList *
132 gupnp_didl_lite_object_get_creators     (GUPnPDIDLLiteObject *object);
133
134 GList *
135 gupnp_didl_lite_object_get_artists      (GUPnPDIDLLiteObject *object);
136
137 GList *
138 gupnp_didl_lite_object_get_authors      (GUPnPDIDLLiteObject *object);
139
140 GList *
141 gupnp_didl_lite_object_get_descriptors  (GUPnPDIDLLiteObject *object);
142
143 const char *
144 gupnp_didl_lite_object_get_genre        (GUPnPDIDLLiteObject *object);
145
146 const char *
147 gupnp_didl_lite_object_get_write_status (GUPnPDIDLLiteObject *object);
148
149 const char *
150 gupnp_didl_lite_object_get_album        (GUPnPDIDLLiteObject *object);
151
152 const char *
153 gupnp_didl_lite_object_get_album_art    (GUPnPDIDLLiteObject *object);
154
155 const char *
156 gupnp_didl_lite_object_get_description  (GUPnPDIDLLiteObject *object);
157
158 const char *
159 gupnp_didl_lite_object_get_date         (GUPnPDIDLLiteObject *object);
160
161 int
162 gupnp_didl_lite_object_get_track_number (GUPnPDIDLLiteObject *object);
163
164 GUPnPOCMFlags
165 gupnp_didl_lite_object_get_dlna_managed (GUPnPDIDLLiteObject *object);
166
167 guint
168 gupnp_didl_lite_object_get_update_id    (GUPnPDIDLLiteObject *object);
169
170 gboolean
171 gupnp_didl_lite_object_update_id_is_set (GUPnPDIDLLiteObject *object);
172
173 GList *
174 gupnp_didl_lite_object_get_resources    (GUPnPDIDLLiteObject *object);
175
176 GUPnPDIDLLiteResource *
177 gupnp_didl_lite_object_get_compat_resource
178                                         (GUPnPDIDLLiteObject *object,
179                                          const char
180                                          *sink_protocol_info,
181                                          gboolean             lenient);
182
183 GUPnPDIDLLiteResource *
184 gupnp_didl_lite_object_add_resource     (GUPnPDIDLLiteObject *object);
185
186 GUPnPDIDLLiteDescriptor *
187 gupnp_didl_lite_object_add_descriptor   (GUPnPDIDLLiteObject *object);
188
189 void
190 gupnp_didl_lite_object_set_upnp_class   (GUPnPDIDLLiteObject *object,
191                                          const char          *upnp_class);
192
193 void
194 gupnp_didl_lite_object_set_id           (GUPnPDIDLLiteObject *object,
195                                          const char          *id);
196
197 void
198 gupnp_didl_lite_object_set_parent_id    (GUPnPDIDLLiteObject *object,
199                                          const char          *parent_id);
200
201 void
202 gupnp_didl_lite_object_set_restricted   (GUPnPDIDLLiteObject *object,
203                                          gboolean             restricted);
204
205 void
206 gupnp_didl_lite_object_set_title        (GUPnPDIDLLiteObject *object,
207                                          const char          *title);
208
209 void
210 gupnp_didl_lite_object_set_creator      (GUPnPDIDLLiteObject *object,
211                                          const char          *creator);
212
213 #ifndef GUPNP_DISABLE_DEPRECATED
214 void
215 gupnp_didl_lite_object_set_artist       (GUPnPDIDLLiteObject *object,
216                                          const char          *artist);
217
218 void
219 gupnp_didl_lite_object_set_author       (GUPnPDIDLLiteObject *object,
220                                          const char          *author);
221
222 #endif /* GUPNP_DISABLE_DEPRECATED */
223
224 GUPnPDIDLLiteContributor *
225 gupnp_didl_lite_object_add_creator      (GUPnPDIDLLiteObject *object);
226
227 GUPnPDIDLLiteContributor *
228 gupnp_didl_lite_object_add_artist       (GUPnPDIDLLiteObject *object);
229
230 GUPnPDIDLLiteContributor *
231 gupnp_didl_lite_object_add_author       (GUPnPDIDLLiteObject *object);
232
233 void
234 gupnp_didl_lite_object_set_genre        (GUPnPDIDLLiteObject *object,
235                                          const char          *genre);
236
237 void
238 gupnp_didl_lite_object_set_write_status (GUPnPDIDLLiteObject *object,
239                                          const char          *write_status);
240
241 void
242 gupnp_didl_lite_object_set_album        (GUPnPDIDLLiteObject *object,
243                                          const char          *album);
244
245 void
246 gupnp_didl_lite_object_set_album_art    (GUPnPDIDLLiteObject *object,
247                                          const char          *album_art);
248
249 void
250 gupnp_didl_lite_object_set_description  (GUPnPDIDLLiteObject *object,
251                                          const char          *description);
252
253 void
254 gupnp_didl_lite_object_set_date         (GUPnPDIDLLiteObject *object,
255                                          const char          *date);
256
257 void
258 gupnp_didl_lite_object_set_track_number (GUPnPDIDLLiteObject *object,
259                                          int                  track_number);
260
261 void
262 gupnp_didl_lite_object_set_dlna_managed (GUPnPDIDLLiteObject *object,
263                                          GUPnPOCMFlags        dlna_managed);
264
265 void
266 gupnp_didl_lite_object_set_update_id    (GUPnPDIDLLiteObject *object,
267                                          guint                update_id);
268
269 void
270 gupnp_didl_lite_object_unset_update_id  (GUPnPDIDLLiteObject *object);
271
272 char *
273 gupnp_didl_lite_object_get_title_xml_string
274                                         (GUPnPDIDLLiteObject *object);
275
276 char *
277 gupnp_didl_lite_object_get_date_xml_string
278                                         (GUPnPDIDLLiteObject *object);
279
280 char *
281 gupnp_didl_lite_object_get_upnp_class_xml_string
282                                         (GUPnPDIDLLiteObject *object);
283
284 char *
285 gupnp_didl_lite_object_get_album_xml_string
286                                         (GUPnPDIDLLiteObject *object);
287
288 char *
289 gupnp_didl_lite_object_get_track_number_xml_string
290                                         (GUPnPDIDLLiteObject *object);
291
292 char *
293 gupnp_didl_lite_object_get_artists_xml_string
294                                         (GUPnPDIDLLiteObject *object);
295
296 void
297 gupnp_didl_lite_object_unset_artists    (GUPnPDIDLLiteObject *object);
298
299 GUPnPDIDLLiteFragmentResult
300 gupnp_didl_lite_object_apply_fragments
301                                       (GUPnPDIDLLiteObject  *object,
302                                        gchar               **current_fragments,
303                                        gint                  current_size,
304                                        gchar               **new_fragments,
305                                        gint                  new_size);
306
307 char *
308 gupnp_didl_lite_object_get_xml_string   (GUPnPDIDLLiteObject *object);
309
310 G_END_DECLS
311
312 #endif /* __GUPNP_DIDL_LITE_OBJECT_H__ */