2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
4
<refentry id="rhythmbox-rhythmdb">
6
<refentrytitle>rhythmdb</refentrytitle>
7
<manvolnum>3</manvolnum>
8
<refmiscinfo>RHYTHMBOX Library</refmiscinfo>
12
<refname>rhythmdb</refname><refpurpose></refpurpose>
15
<refsynopsisdiv><title>Synopsis</title>
21
#define <link linkend="RHYTHMDB-TYPE:CAPS">RHYTHMDB_TYPE</link>
22
#define <link linkend="RHYTHMDB:CAPS">RHYTHMDB</link> (o)
23
#define <link linkend="RHYTHMDB-IS:CAPS">RHYTHMDB_IS</link> (o)
24
#define <link linkend="RHYTHMDB-GET-CLASS:CAPS">RHYTHMDB_GET_CLASS</link> (o)
25
typedef <link linkend="RhythmDBEntryType">RhythmDBEntryType</link>;
26
#define <link linkend="RHYTHMDB-ENTRY-TYPE-SONG:CAPS">RHYTHMDB_ENTRY_TYPE_SONG</link>
27
#define <link linkend="RHYTHMDB-ENTRY-TYPE-IRADIO-STATION:CAPS">RHYTHMDB_ENTRY_TYPE_IRADIO_STATION</link>
28
enum <link linkend="RhythmDBQueryType">RhythmDBQueryType</link>;
29
enum <link linkend="RhythmDBPropType">RhythmDBPropType</link>;
30
<link linkend="GType">GType</link> <link linkend="rhythmdb-prop-get-type">rhythmdb_prop_get_type</link> (void);
31
#define <link linkend="RHYTHMDB-TYPE-QUERY:CAPS">RHYTHMDB_TYPE_QUERY</link>
32
#define <link linkend="RHYTHMDB-TYPE-PROP:CAPS">RHYTHMDB_TYPE_PROP</link>
33
<link linkend="RhythmDBQueryData">RhythmDBQueryData</link>;
34
<link linkend="RhythmDBEntry">RhythmDBEntry</link>;
35
<link linkend="RhythmDBEntryChange">RhythmDBEntryChange</link>;
36
<link linkend="void">void</link> <link linkend="rhythmdb-entry-get">rhythmdb_entry_get</link> (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
37
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid,
38
<link linkend="GValue">GValue</link> *val);
39
const <link linkend="char">char</link>* <link linkend="rhythmdb-entry-get-string">rhythmdb_entry_get_string</link> (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
40
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid);
41
<link linkend="gboolean">gboolean</link> <link linkend="rhythmdb-entry-get-boolean">rhythmdb_entry_get_boolean</link> (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
42
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid);
43
<link linkend="guint64">guint64</link> <link linkend="rhythmdb-entry-get-uint64">rhythmdb_entry_get_uint64</link> (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
44
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid);
45
<link linkend="gulong">gulong</link> <link linkend="rhythmdb-entry-get-ulong">rhythmdb_entry_get_ulong</link> (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
46
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid);
47
<link linkend="double">double</link> <link linkend="rhythmdb-entry-get-double">rhythmdb_entry_get_double</link> (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
48
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid);
49
const <link linkend="char">char</link>* <link linkend="rb-refstring-get">rb_refstring_get</link> (const <link linkend="RBRefString">RBRefString</link> *val);
50
const <link linkend="char">char</link>* <link linkend="rb-refstring-get-sort-key">rb_refstring_get_sort_key</link> (const <link linkend="RBRefString">RBRefString</link> *val);
51
const <link linkend="char">char</link>* <link linkend="rb-refstring-get-folded">rb_refstring_get_folded</link> (const <link linkend="RBRefString">RBRefString</link> *val);
52
enum <link linkend="RhythmDBError">RhythmDBError</link>;
53
#define <link linkend="RHYTHMDB-ERROR:CAPS">RHYTHMDB_ERROR</link>
54
<link linkend="GQuark">GQuark</link> <link linkend="rhythmdb-error-quark">rhythmdb_error_quark</link> (void);
55
typedef <link linkend="RhythmDBPrivate">RhythmDBPrivate</link>;
56
<link linkend="GType">GType</link> <link linkend="rhythmdb-get-type">rhythmdb_get_type</link> (void);
57
<link linkend="RhythmDB">RhythmDB</link>* <link linkend="rhythmdb-new">rhythmdb_new</link> (const <link linkend="char">char</link> *name);
58
<link linkend="void">void</link> <link linkend="rhythmdb-shutdown">rhythmdb_shutdown</link> (<link linkend="RhythmDB">RhythmDB</link> *db);
59
<link linkend="void">void</link> <link linkend="rhythmdb-load">rhythmdb_load</link> (<link linkend="RhythmDB">RhythmDB</link> *db);
60
<link linkend="void">void</link> <link linkend="rhythmdb-save">rhythmdb_save</link> (<link linkend="RhythmDB">RhythmDB</link> *db);
61
<link linkend="void">void</link> <link linkend="rhythmdb-save-async">rhythmdb_save_async</link> (<link linkend="RhythmDB">RhythmDB</link> *db);
62
<link linkend="void">void</link> <link linkend="rhythmdb-commit">rhythmdb_commit</link> (<link linkend="RhythmDB">RhythmDB</link> *db);
63
<link linkend="gboolean">gboolean</link> <link linkend="rhythmdb-entry-is-editable">rhythmdb_entry_is_editable</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
64
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);
65
<link linkend="RhythmDBEntry">RhythmDBEntry</link>* <link linkend="rhythmdb-entry-new">rhythmdb_entry_new</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
66
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> type,
67
const <link linkend="char">char</link> *uri);
68
<link linkend="void">void</link> <link linkend="rhythmdb-add-uri">rhythmdb_add_uri</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
69
const <link linkend="char">char</link> *uri);
70
<link linkend="void">void</link> <link linkend="rhythmdb-entry-set">rhythmdb_entry_set</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
71
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
72
<link linkend="guint">guint</link> propid,
73
const <link linkend="GValue">GValue</link> *value);
74
<link linkend="void">void</link> <link linkend="rhythmdb-entry-set-nonotify">rhythmdb_entry_set_nonotify</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
75
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
76
<link linkend="guint">guint</link> propid,
77
const <link linkend="GValue">GValue</link> *value);
78
<link linkend="void">void</link> <link linkend="rhythmdb-entry-set-uninserted">rhythmdb_entry_set_uninserted</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
79
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
80
<link linkend="guint">guint</link> propid,
81
const <link linkend="GValue">GValue</link> *value);
82
<link linkend="void">void</link> <link linkend="rhythmdb-entry-delete">rhythmdb_entry_delete</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
83
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);
84
<link linkend="void">void</link> <link linkend="rhythmdb-entry-delete-by-type">rhythmdb_entry_delete_by_type</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
85
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> type);
86
<link linkend="RhythmDBEntry">RhythmDBEntry</link>* <link linkend="rhythmdb-entry-lookup-by-location">rhythmdb_entry_lookup_by_location</link>
87
(<link linkend="RhythmDB">RhythmDB</link> *db,
88
const <link linkend="char">char</link> *uri);
89
<link linkend="gboolean">gboolean</link> <link linkend="rhythmdb-evaluate-query">rhythmdb_evaluate_query</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
90
<link linkend="GPtrArray">GPtrArray</link> *query,
91
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);
92
<link linkend="void">void</link> <link linkend="rhythmdb-entry-foreach">rhythmdb_entry_foreach</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
93
<link linkend="GFunc">GFunc</link> func,
94
<link linkend="gpointer">gpointer</link> data);
95
<link linkend="void">void</link> <link linkend="rhythmdb-do-full-query">rhythmdb_do_full_query</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
96
<link linkend="GtkTreeModel">GtkTreeModel</link> *main_model,
98
<link linkend="void">void</link> <link linkend="rhythmdb-do-full-query-parsed">rhythmdb_do_full_query_parsed</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
99
<link linkend="GtkTreeModel">GtkTreeModel</link> *main_model,
100
<link linkend="GPtrArray">GPtrArray</link> *query);
101
<link linkend="void">void</link> <link linkend="rhythmdb-do-full-query-async">rhythmdb_do_full_query_async</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
102
<link linkend="GtkTreeModel">GtkTreeModel</link> *main_model,
104
<link linkend="void">void</link> <link linkend="rhythmdb-do-full-query-async-parsed">rhythmdb_do_full_query_async_parsed</link>
105
(<link linkend="RhythmDB">RhythmDB</link> *db,
106
<link linkend="GtkTreeModel">GtkTreeModel</link> *main_model,
107
<link linkend="GPtrArray">GPtrArray</link> *query);
108
<link linkend="void">void</link> <link linkend="rhythmdb-query-cancel">rhythmdb_query_cancel</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
109
<link linkend="GtkTreeModel">GtkTreeModel</link> *query_model);
110
<link linkend="void">void</link> <link linkend="rhythmdb-entry-sync-mirrored">rhythmdb_entry_sync_mirrored</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
111
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
112
<link linkend="guint">guint</link> propid);
113
<link linkend="GPtrArray">GPtrArray</link>* <link linkend="rhythmdb-query-parse">rhythmdb_query_parse</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
115
<link linkend="void">void</link> <link linkend="rhythmdb-query-append">rhythmdb_query_append</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
116
<link linkend="GPtrArray">GPtrArray</link> *query,
118
<link linkend="void">void</link> <link linkend="rhythmdb-query-free">rhythmdb_query_free</link> (<link linkend="GPtrArray">GPtrArray</link> *query);
119
<link linkend="GPtrArray">GPtrArray</link>* <link linkend="rhythmdb-query-copy">rhythmdb_query_copy</link> (<link linkend="GPtrArray">GPtrArray</link> *array);
120
<link linkend="void">void</link> <link linkend="rhythmdb-query-serialize">rhythmdb_query_serialize</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
121
<link linkend="GPtrArray">GPtrArray</link> *query,
122
<link linkend="xmlNodePtr">xmlNodePtr</link> node);
123
<link linkend="GPtrArray">GPtrArray</link>* <link linkend="rhythmdb-query-deserialize">rhythmdb_query_deserialize</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
124
<link linkend="xmlNodePtr">xmlNodePtr</link> node);
125
<link linkend="void">void</link> <link linkend="rhythmdb-emit-entry-added">rhythmdb_emit_entry_added</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
126
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);
127
<link linkend="void">void</link> <link linkend="rhythmdb-emit-entry-deleted">rhythmdb_emit_entry_deleted</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
128
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);
129
<link linkend="gboolean">gboolean</link> <link linkend="rhythmdb-is-busy">rhythmdb_is_busy</link> (<link linkend="RhythmDB">RhythmDB</link> *db);
130
<link linkend="char">char</link>* <link linkend="rhythmdb-compute-status-normal">rhythmdb_compute_status_normal</link> (<link linkend="gint">gint</link> n_songs,
131
<link linkend="glong">glong</link> duration,
132
<link linkend="GnomeVFSFileSize">GnomeVFSFileSize</link> size);
133
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> <link linkend="rhythmdb-entry-register-type">rhythmdb_entry_register_type</link>
135
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> <link linkend="rhythmdb-entry-song-get-type">rhythmdb_entry_song_get_type</link>
137
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> <link linkend="rhythmdb-entry-iradio-get-type">rhythmdb_entry_iradio_get_type</link>
139
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> <link linkend="rhythmdb-entry-icecast-get-type">rhythmdb_entry_icecast_get_type</link>
141
<link linkend="GType">GType</link> <link linkend="rhythmdb-get-property-type">rhythmdb_get_property_type</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
142
<link linkend="guint">guint</link> property_id);
143
<link linkend="void">void</link> <link linkend="rhythmdb-entry-ref">rhythmdb_entry_ref</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
144
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);
145
<link linkend="void">void</link> <link linkend="rhythmdb-entry-unref">rhythmdb_entry_unref</link> (<link linkend="RhythmDB">RhythmDB</link> *db,
146
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);
160
<title>Description</title>
167
<title>Details</title>
169
<title><anchor id="RHYTHMDB-TYPE:CAPS"/>RHYTHMDB_TYPE</title>
170
<indexterm><primary>RHYTHMDB_TYPE</primary></indexterm><programlisting>#define RHYTHMDB_TYPE (rhythmdb_get_type ())
176
<title><anchor id="RHYTHMDB:CAPS"/>RHYTHMDB()</title>
177
<indexterm><primary>RHYTHMDB</primary></indexterm><programlisting>#define RHYTHMDB(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), RHYTHMDB_TYPE, RhythmDB))
181
</para><variablelist role="params">
182
<varlistentry><term><parameter>o</parameter> :</term>
186
</simpara></listitem></varlistentry>
187
</variablelist></refsect2>
189
<title><anchor id="RHYTHMDB-IS:CAPS"/>RHYTHMDB_IS()</title>
190
<indexterm><primary>RHYTHMDB_IS</primary></indexterm><programlisting>#define RHYTHMDB_IS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), RHYTHMDB_TYPE))
194
</para><variablelist role="params">
195
<varlistentry><term><parameter>o</parameter> :</term>
199
</simpara></listitem></varlistentry>
200
</variablelist></refsect2>
202
<title><anchor id="RHYTHMDB-GET-CLASS:CAPS"/>RHYTHMDB_GET_CLASS()</title>
203
<indexterm><primary>RHYTHMDB_GET_CLASS</primary></indexterm><programlisting>#define RHYTHMDB_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), RHYTHMDB_TYPE, RhythmDBClass))
207
</para><variablelist role="params">
208
<varlistentry><term><parameter>o</parameter> :</term>
212
</simpara></listitem></varlistentry>
213
</variablelist></refsect2>
215
<title><anchor id="RhythmDBEntryType"/>RhythmDBEntryType</title>
216
<indexterm><primary>RhythmDBEntryType</primary></indexterm><programlisting>typedef gint32 RhythmDBEntryType;
222
<title><anchor id="RHYTHMDB-ENTRY-TYPE-SONG:CAPS"/>RHYTHMDB_ENTRY_TYPE_SONG</title>
223
<indexterm><primary>RHYTHMDB_ENTRY_TYPE_SONG</primary></indexterm><programlisting>#define RHYTHMDB_ENTRY_TYPE_SONG (rhythmdb_entry_song_get_type ())
229
<title><anchor id="RHYTHMDB-ENTRY-TYPE-IRADIO-STATION:CAPS"/>RHYTHMDB_ENTRY_TYPE_IRADIO_STATION</title>
230
<indexterm><primary>RHYTHMDB_ENTRY_TYPE_IRADIO_STATION</primary></indexterm><programlisting>#define RHYTHMDB_ENTRY_TYPE_IRADIO_STATION (rhythmdb_entry_iradio_get_type ())
236
<title><anchor id="RhythmDBQueryType"/>enum RhythmDBQueryType</title>
237
<indexterm><primary>RhythmDBQueryType</primary></indexterm><programlisting>typedef enum
240
RHYTHMDB_QUERY_DISJUNCTION,
241
RHYTHMDB_QUERY_SUBQUERY,
242
RHYTHMDB_QUERY_PROP_EQUALS,
243
RHYTHMDB_QUERY_PROP_LIKE,
244
RHYTHMDB_QUERY_PROP_NOT_LIKE,
245
RHYTHMDB_QUERY_PROP_GREATER,
246
RHYTHMDB_QUERY_PROP_LESS,
247
RHYTHMDB_QUERY_PROP_CURRENT_TIME_WITHIN,
248
RHYTHMDB_QUERY_PROP_CURRENT_TIME_NOT_WITHIN,
255
<title><anchor id="RhythmDBPropType"/>enum RhythmDBPropType</title>
256
<indexterm><primary>RhythmDBPropType</primary></indexterm><programlisting>typedef enum
258
RHYTHMDB_PROP_TYPE = 0,
261
RHYTHMDB_PROP_ARTIST,
263
RHYTHMDB_PROP_TRACK_NUMBER,
264
RHYTHMDB_PROP_DISC_NUMBER,
265
RHYTHMDB_PROP_DURATION,
266
RHYTHMDB_PROP_FILE_SIZE,
267
RHYTHMDB_PROP_LOCATION,
268
RHYTHMDB_PROP_MOUNTPOINT,
270
RHYTHMDB_PROP_FIRST_SEEN,
271
RHYTHMDB_PROP_LAST_SEEN,
272
RHYTHMDB_PROP_RATING,
273
RHYTHMDB_PROP_PLAY_COUNT,
274
RHYTHMDB_PROP_LAST_PLAYED,
275
RHYTHMDB_PROP_BITRATE,
277
RHYTHMDB_PROP_TRACK_GAIN,
278
RHYTHMDB_PROP_TRACK_PEAK,
279
RHYTHMDB_PROP_ALBUM_GAIN,
280
RHYTHMDB_PROP_ALBUM_PEAK,
281
RHYTHMDB_PROP_MIMETYPE,
282
RHYTHMDB_PROP_TITLE_SORT_KEY,
283
RHYTHMDB_PROP_GENRE_SORT_KEY,
284
RHYTHMDB_PROP_ARTIST_SORT_KEY,
285
RHYTHMDB_PROP_ALBUM_SORT_KEY,
286
RHYTHMDB_PROP_TITLE_FOLDED,
287
RHYTHMDB_PROP_GENRE_FOLDED,
288
RHYTHMDB_PROP_ARTIST_FOLDED,
289
RHYTHMDB_PROP_ALBUM_FOLDED,
290
RHYTHMDB_PROP_LAST_PLAYED_STR,
291
RHYTHMDB_PROP_HIDDEN,
292
RHYTHMDB_PROP_PLAYBACK_ERROR,
293
RHYTHMDB_PROP_FIRST_SEEN_STR,
294
RHYTHMDB_PROP_SEARCH_MATCH,
297
RHYTHMDB_PROP_STATUS,
298
RHYTHMDB_PROP_DESCRIPTION,
299
RHYTHMDB_PROP_SUBTITLE,
300
RHYTHMDB_PROP_SUMMARY,
302
RHYTHMDB_PROP_COPYRIGHT,
304
RHYTHMDB_PROP_POST_TIME,
306
RHYTHMDB_NUM_PROPERTIES
313
<title><anchor id="rhythmdb-prop-get-type"/>rhythmdb_prop_get_type ()</title>
314
<indexterm><primary>rhythmdb_prop_get_type</primary></indexterm><programlisting><link linkend="GType">GType</link> rhythmdb_prop_get_type (void);</programlisting>
317
</para><variablelist role="params">
318
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
321
</simpara></listitem></varlistentry>
322
</variablelist></refsect2>
324
<title><anchor id="RHYTHMDB-TYPE-QUERY:CAPS"/>RHYTHMDB_TYPE_QUERY</title>
325
<indexterm><primary>RHYTHMDB_TYPE_QUERY</primary></indexterm><programlisting>#define RHYTHMDB_TYPE_QUERY (rhythmdb_query_get_type ())
331
<title><anchor id="RHYTHMDB-TYPE-PROP:CAPS"/>RHYTHMDB_TYPE_PROP</title>
332
<indexterm><primary>RHYTHMDB_TYPE_PROP</primary></indexterm><programlisting>#define RHYTHMDB_TYPE_PROP (rhythmdb_prop_get_type ())
338
<title><anchor id="RhythmDBQueryData"/>RhythmDBQueryData</title>
339
<indexterm><primary>RhythmDBQueryData</primary></indexterm><programlisting>typedef struct {
350
<title><anchor id="RhythmDBEntry"/>RhythmDBEntry</title>
351
<indexterm><primary>RhythmDBEntry</primary></indexterm><programlisting>typedef struct {
353
#ifndef G_DISABLE_ASSERT
378
RBRefString *mountpoint;
380
RBRefString *mimetype;
383
GnomeVFSInodeNumber inode;
395
RBRefString *last_played_str;
396
RBRefString *first_seen_str;
398
/* playback error string */
399
char *playback_error;
401
/* visibility (to hide entries on unmounted volumes) */
405
RhythmDBPodcastFields *podcast;
412
<title><anchor id="RhythmDBEntryChange"/>RhythmDBEntryChange</title>
413
<indexterm><primary>RhythmDBEntryChange</primary></indexterm><programlisting>typedef struct {
414
RhythmDBPropType prop;
417
} RhythmDBEntryChange;
423
<title><anchor id="rhythmdb-entry-get"/>rhythmdb_entry_get ()</title>
424
<indexterm><primary>rhythmdb_entry_get</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_entry_get (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
425
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid,
426
<link linkend="GValue">GValue</link> *val);</programlisting>
428
Gets a property of an entry, storing it in the given <link linkend="GValue"><type>GValue</type></link>.</para>
431
</para><variablelist role="params">
432
<varlistentry><term><parameter>entry</parameter> :</term>
433
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
434
</simpara></listitem></varlistentry>
435
<varlistentry><term><parameter>propid</parameter> :</term>
436
<listitem><simpara> the id of the property to get.
437
</simpara></listitem></varlistentry>
438
<varlistentry><term><parameter>val</parameter> :</term>
439
<listitem><simpara> return location for the property value.
440
</simpara></listitem></varlistentry>
441
</variablelist></refsect2>
443
<title><anchor id="rhythmdb-entry-get-string"/>rhythmdb_entry_get_string ()</title>
444
<indexterm><primary>rhythmdb_entry_get_string</primary></indexterm><programlisting>const <link linkend="char">char</link>* rhythmdb_entry_get_string (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
445
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid);</programlisting>
448
</para><variablelist role="params">
449
<varlistentry><term><parameter>entry</parameter> :</term>
451
</simpara></listitem></varlistentry>
452
<varlistentry><term><parameter>propid</parameter> :</term>
454
</simpara></listitem></varlistentry>
455
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
458
</simpara></listitem></varlistentry>
459
</variablelist></refsect2>
461
<title><anchor id="rhythmdb-entry-get-boolean"/>rhythmdb_entry_get_boolean ()</title>
462
<indexterm><primary>rhythmdb_entry_get_boolean</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> rhythmdb_entry_get_boolean (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
463
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid);</programlisting>
466
</para><variablelist role="params">
467
<varlistentry><term><parameter>entry</parameter> :</term>
469
</simpara></listitem></varlistentry>
470
<varlistentry><term><parameter>propid</parameter> :</term>
472
</simpara></listitem></varlistentry>
473
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
476
</simpara></listitem></varlistentry>
477
</variablelist></refsect2>
479
<title><anchor id="rhythmdb-entry-get-uint64"/>rhythmdb_entry_get_uint64 ()</title>
480
<indexterm><primary>rhythmdb_entry_get_uint64</primary></indexterm><programlisting><link linkend="guint64">guint64</link> rhythmdb_entry_get_uint64 (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
481
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid);</programlisting>
484
</para><variablelist role="params">
485
<varlistentry><term><parameter>entry</parameter> :</term>
487
</simpara></listitem></varlistentry>
488
<varlistentry><term><parameter>propid</parameter> :</term>
490
</simpara></listitem></varlistentry>
491
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
494
</simpara></listitem></varlistentry>
495
</variablelist></refsect2>
497
<title><anchor id="rhythmdb-entry-get-ulong"/>rhythmdb_entry_get_ulong ()</title>
498
<indexterm><primary>rhythmdb_entry_get_ulong</primary></indexterm><programlisting><link linkend="gulong">gulong</link> rhythmdb_entry_get_ulong (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
499
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid);</programlisting>
502
</para><variablelist role="params">
503
<varlistentry><term><parameter>entry</parameter> :</term>
505
</simpara></listitem></varlistentry>
506
<varlistentry><term><parameter>propid</parameter> :</term>
508
</simpara></listitem></varlistentry>
509
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
512
</simpara></listitem></varlistentry>
513
</variablelist></refsect2>
515
<title><anchor id="rhythmdb-entry-get-double"/>rhythmdb_entry_get_double ()</title>
516
<indexterm><primary>rhythmdb_entry_get_double</primary></indexterm><programlisting><link linkend="double">double</link> rhythmdb_entry_get_double (<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
517
<link linkend="RhythmDBPropType">RhythmDBPropType</link> propid);</programlisting>
520
</para><variablelist role="params">
521
<varlistentry><term><parameter>entry</parameter> :</term>
523
</simpara></listitem></varlistentry>
524
<varlistentry><term><parameter>propid</parameter> :</term>
526
</simpara></listitem></varlistentry>
527
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
530
</simpara></listitem></varlistentry>
531
</variablelist></refsect2>
533
<title><anchor id="rb-refstring-get"/>rb_refstring_get ()</title>
534
<indexterm><primary>rb_refstring_get</primary></indexterm><programlisting>const <link linkend="char">char</link>* rb_refstring_get (const <link linkend="RBRefString">RBRefString</link> *val);</programlisting>
537
</para><variablelist role="params">
538
<varlistentry><term><parameter>val</parameter> :</term>
540
</simpara></listitem></varlistentry>
541
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
544
</simpara></listitem></varlistentry>
545
</variablelist></refsect2>
547
<title><anchor id="rb-refstring-get-sort-key"/>rb_refstring_get_sort_key ()</title>
548
<indexterm><primary>rb_refstring_get_sort_key</primary></indexterm><programlisting>const <link linkend="char">char</link>* rb_refstring_get_sort_key (const <link linkend="RBRefString">RBRefString</link> *val);</programlisting>
551
</para><variablelist role="params">
552
<varlistentry><term><parameter>val</parameter> :</term>
554
</simpara></listitem></varlistentry>
555
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
558
</simpara></listitem></varlistentry>
559
</variablelist></refsect2>
561
<title><anchor id="rb-refstring-get-folded"/>rb_refstring_get_folded ()</title>
562
<indexterm><primary>rb_refstring_get_folded</primary></indexterm><programlisting>const <link linkend="char">char</link>* rb_refstring_get_folded (const <link linkend="RBRefString">RBRefString</link> *val);</programlisting>
565
</para><variablelist role="params">
566
<varlistentry><term><parameter>val</parameter> :</term>
568
</simpara></listitem></varlistentry>
569
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
572
</simpara></listitem></varlistentry>
573
</variablelist></refsect2>
575
<title><anchor id="RhythmDBError"/>enum RhythmDBError</title>
576
<indexterm><primary>RhythmDBError</primary></indexterm><programlisting>typedef enum
578
RHYTHMDB_ERROR_ACCESS_FAILED,
585
<title><anchor id="RHYTHMDB-ERROR:CAPS"/>RHYTHMDB_ERROR</title>
586
<indexterm><primary>RHYTHMDB_ERROR</primary></indexterm><programlisting>#define RHYTHMDB_ERROR (rhythmdb_error_quark ())
592
<title><anchor id="rhythmdb-error-quark"/>rhythmdb_error_quark ()</title>
593
<indexterm><primary>rhythmdb_error_quark</primary></indexterm><programlisting><link linkend="GQuark">GQuark</link> rhythmdb_error_quark (void);</programlisting>
596
</para><variablelist role="params">
597
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
600
</simpara></listitem></varlistentry>
601
</variablelist></refsect2>
603
<title><anchor id="RhythmDBPrivate"/>RhythmDBPrivate</title>
604
<indexterm><primary>RhythmDBPrivate</primary></indexterm><programlisting>typedef struct RhythmDBPrivate RhythmDBPrivate;
610
<title><anchor id="rhythmdb-get-type"/>rhythmdb_get_type ()</title>
611
<indexterm><primary>rhythmdb_get_type</primary></indexterm><programlisting><link linkend="GType">GType</link> rhythmdb_get_type (void);</programlisting>
614
</para><variablelist role="params">
615
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
618
</simpara></listitem></varlistentry>
619
</variablelist></refsect2>
621
<title><anchor id="rhythmdb-new"/>rhythmdb_new ()</title>
622
<indexterm><primary>rhythmdb_new</primary></indexterm><programlisting><link linkend="RhythmDB">RhythmDB</link>* rhythmdb_new (const <link linkend="char">char</link> *name);</programlisting>
625
</para><variablelist role="params">
626
<varlistentry><term><parameter>name</parameter> :</term>
628
</simpara></listitem></varlistentry>
629
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
632
</simpara></listitem></varlistentry>
633
</variablelist></refsect2>
635
<title><anchor id="rhythmdb-shutdown"/>rhythmdb_shutdown ()</title>
636
<indexterm><primary>rhythmdb_shutdown</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_shutdown (<link linkend="RhythmDB">RhythmDB</link> *db);</programlisting>
638
Ceases all <link linkend="RhythmDB"><type>RhythmDB</type></link> operations, including stopping all directory monitoring, and
639
removing all actions and events currently queued.</para>
642
</para><variablelist role="params">
643
<varlistentry><term><parameter>db</parameter> :</term>
647
</simpara></listitem></varlistentry>
648
</variablelist></refsect2>
650
<title><anchor id="rhythmdb-load"/>rhythmdb_load ()</title>
651
<indexterm><primary>rhythmdb_load</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_load (<link linkend="RhythmDB">RhythmDB</link> *db);</programlisting>
653
Load the database from disk.</para>
656
</para><variablelist role="params">
657
<varlistentry><term><parameter>db</parameter> :</term>
658
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
659
</simpara></listitem></varlistentry>
660
</variablelist></refsect2>
662
<title><anchor id="rhythmdb-save"/>rhythmdb_save ()</title>
663
<indexterm><primary>rhythmdb_save</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_save (<link linkend="RhythmDB">RhythmDB</link> *db);</programlisting>
665
Save the database to disk, not returning until it has been saved.</para>
668
</para><variablelist role="params">
669
<varlistentry><term><parameter>db</parameter> :</term>
670
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
671
</simpara></listitem></varlistentry>
672
</variablelist></refsect2>
674
<title><anchor id="rhythmdb-save-async"/>rhythmdb_save_async ()</title>
675
<indexterm><primary>rhythmdb_save_async</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_save_async (<link linkend="RhythmDB">RhythmDB</link> *db);</programlisting>
677
Save the database to disk, asynchronously.</para>
680
</para><variablelist role="params">
681
<varlistentry><term><parameter>db</parameter> :</term>
682
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
683
</simpara></listitem></varlistentry>
684
</variablelist></refsect2>
686
<title><anchor id="rhythmdb-commit"/>rhythmdb_commit ()</title>
687
<indexterm><primary>rhythmdb_commit</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_commit (<link linkend="RhythmDB">RhythmDB</link> *db);</programlisting>
689
Apply all database changes, and send notification of changes and new entries.
690
This needs to be called after any changes have been made, such as a group of
691
<link linkend="rhythmdb-entry-set"><function>rhythmdb_entry_set()</function></link> calls, or a new entry has been added.</para>
694
</para><variablelist role="params">
695
<varlistentry><term><parameter>db</parameter> :</term>
696
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
697
</simpara></listitem></varlistentry>
698
</variablelist></refsect2>
700
<title><anchor id="rhythmdb-entry-is-editable"/>rhythmdb_entry_is_editable ()</title>
701
<indexterm><primary>rhythmdb_entry_is_editable</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> rhythmdb_entry_is_editable (<link linkend="RhythmDB">RhythmDB</link> *db,
702
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);</programlisting>
704
This determines whether any changes to the entries metadata can be saved.
705
Usually this is only true for entries backed by files, where tag-writing is
706
enabled, and the appropriate tag-writing facilities are available.</para>
709
</para><variablelist role="params">
710
<varlistentry><term><parameter>db</parameter> :</term>
711
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
712
</simpara></listitem></varlistentry>
713
<varlistentry><term><parameter>entry</parameter> :</term>
714
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
715
</simpara></listitem></varlistentry>
716
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> whether the entries metadata can be changed.
717
</simpara></listitem></varlistentry>
718
</variablelist></refsect2>
720
<title><anchor id="rhythmdb-entry-new"/>rhythmdb_entry_new ()</title>
721
<indexterm><primary>rhythmdb_entry_new</primary></indexterm><programlisting><link linkend="RhythmDBEntry">RhythmDBEntry</link>* rhythmdb_entry_new (<link linkend="RhythmDB">RhythmDB</link> *db,
722
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> type,
723
const <link linkend="char">char</link> *uri);</programlisting>
725
Creates a new entry of type <parameter>type</parameter> and location <parameter>uri</parameter>, and inserts
726
it into the database. You must call <link linkend="rhythmdb-commit"><function>rhythmdb_commit()</function></link> at some point
727
after invoking this function.</para>
730
</para><variablelist role="params">
731
<varlistentry><term><parameter>db</parameter> :</term>
732
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
733
</simpara></listitem></varlistentry>
734
<varlistentry><term><parameter>type</parameter> :</term>
735
<listitem><simpara> type of entry to create
736
</simpara></listitem></varlistentry>
737
<varlistentry><term><parameter>uri</parameter> :</term>
738
<listitem><simpara> the location of the entry, this be unique amongst all entries.
739
</simpara></listitem></varlistentry>
740
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the newly created <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>
741
</simpara></listitem></varlistentry>
742
</variablelist></refsect2>
744
<title><anchor id="rhythmdb-add-uri"/>rhythmdb_add_uri ()</title>
745
<indexterm><primary>rhythmdb_add_uri</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_add_uri (<link linkend="RhythmDB">RhythmDB</link> *db,
746
const <link linkend="char">char</link> *uri);</programlisting>
748
Adds the file(s) pointed to by <parameter>uri</parameter> to the database, as entries of type
749
RHYTHMDB_ENTRY_TYPE_SONG. If the URI is that of a file, they will be added.
750
If the URI is that of a directory, everything under it will be added recursively.</para>
753
</para><variablelist role="params">
754
<varlistentry><term><parameter>db</parameter> :</term>
755
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
756
</simpara></listitem></varlistentry>
757
<varlistentry><term><parameter>uri</parameter> :</term>
758
<listitem><simpara> the URI to add an entry/entries for
759
</simpara></listitem></varlistentry>
760
</variablelist></refsect2>
762
<title><anchor id="rhythmdb-entry-set"/>rhythmdb_entry_set ()</title>
763
<indexterm><primary>rhythmdb_entry_set</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_entry_set (<link linkend="RhythmDB">RhythmDB</link> *db,
764
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
765
<link linkend="guint">guint</link> propid,
766
const <link linkend="GValue">GValue</link> *value);</programlisting>
768
This function can be called by any code which wishes to change a
769
song property and send a notification. It may be called when the
770
database is read-only; in this case the change will be queued for
771
an unspecified time in the future. The implication of this is that
772
<link linkend="rhythmdb-entry-get"><function>rhythmdb_entry_get()</function></link> may not reflect the changes immediately. However,
773
if this property is exposed in the user interface, you should still
774
make the change in the widget. Then when the database returns to a
775
writable state, your change will take effect in the database too,
776
and a notification will be sent at that point.
779
Note that you must call <link linkend="rhythmdb-commit"><function>rhythmdb_commit()</function></link> at some point after invoking
780
this function, and that even after the commit, your change may not
781
have taken effect.</para>
784
</para><variablelist role="params">
785
<varlistentry><term><parameter>db</parameter> :</term>
786
<listitem><simpara># a RhythmDB.
787
</simpara></listitem></varlistentry>
788
<varlistentry><term><parameter>entry</parameter> :</term>
789
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
790
</simpara></listitem></varlistentry>
791
<varlistentry><term><parameter>propid</parameter> :</term>
792
<listitem><simpara> the id of the property to set.
793
</simpara></listitem></varlistentry>
794
<varlistentry><term><parameter>value</parameter> :</term>
795
<listitem><simpara> the property value.
796
</simpara></listitem></varlistentry>
797
</variablelist></refsect2>
799
<title><anchor id="rhythmdb-entry-set-nonotify"/>rhythmdb_entry_set_nonotify ()</title>
800
<indexterm><primary>rhythmdb_entry_set_nonotify</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_entry_set_nonotify (<link linkend="RhythmDB">RhythmDB</link> *db,
801
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
802
<link linkend="guint">guint</link> propid,
803
const <link linkend="GValue">GValue</link> *value);</programlisting>
805
This function is like <link linkend="rhythmdb-entry-set"><function>rhythmdb_entry_set()</function></link>, except no notification
806
of the change will be sent. This is useful if you know no
807
one could possibly be listening for the change.
810
Note that you do not need to call <link linkend="rhythmdb-commit"><function>rhythmdb_commit()</function></link> after this.</para>
813
</para><variablelist role="params">
814
<varlistentry><term><parameter>db</parameter> :</term>
815
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
816
</simpara></listitem></varlistentry>
817
<varlistentry><term><parameter>entry</parameter> :</term>
818
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
819
</simpara></listitem></varlistentry>
820
<varlistentry><term><parameter>propid</parameter> :</term>
821
<listitem><simpara> the id of the property to set.
822
</simpara></listitem></varlistentry>
823
<varlistentry><term><parameter>value</parameter> :</term>
824
<listitem><simpara> the property value.
825
</simpara></listitem></varlistentry>
826
</variablelist></refsect2>
828
<title><anchor id="rhythmdb-entry-set-uninserted"/>rhythmdb_entry_set_uninserted ()</title>
829
<indexterm><primary>rhythmdb_entry_set_uninserted</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_entry_set_uninserted (<link linkend="RhythmDB">RhythmDB</link> *db,
830
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
831
<link linkend="guint">guint</link> propid,
832
const <link linkend="GValue">GValue</link> *value);</programlisting>
834
This function is like <link linkend="rhythmdb-entry-set"><function>rhythmdb_entry_set()</function></link>, except that it should only
835
be called for entries that have been created with <link linkend="rhythmdb-entry-new"><function>rhythmdb_entry_new()</function></link>
836
but not yet committed to the database (i.e. before <link linkend="rhythmdb-commit"><function>rhythmdb_commit()</function></link>).
839
Note that you need to call <link linkend="rhythmdb-commit"><function>rhythmdb_commit()</function></link> after all properties are set.</para>
842
</para><variablelist role="params">
843
<varlistentry><term><parameter>db</parameter> :</term>
844
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
845
</simpara></listitem></varlistentry>
846
<varlistentry><term><parameter>entry</parameter> :</term>
847
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
848
</simpara></listitem></varlistentry>
849
<varlistentry><term><parameter>propid</parameter> :</term>
850
<listitem><simpara> the id of the property to set.
851
</simpara></listitem></varlistentry>
852
<varlistentry><term><parameter>value</parameter> :</term>
853
<listitem><simpara> the property value.
854
</simpara></listitem></varlistentry>
855
</variablelist></refsect2>
857
<title><anchor id="rhythmdb-entry-delete"/>rhythmdb_entry_delete ()</title>
858
<indexterm><primary>rhythmdb_entry_delete</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_entry_delete (<link linkend="RhythmDB">RhythmDB</link> *db,
859
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);</programlisting>
861
Delete entry <parameter>entry</parameter> from the database, sending notification of it's deletion.
862
This is usually used by sources where entries can disappear randomly, such
863
as a network source.</para>
866
</para><variablelist role="params">
867
<varlistentry><term><parameter>db</parameter> :</term>
868
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
869
</simpara></listitem></varlistentry>
870
<varlistentry><term><parameter>entry</parameter> :</term>
871
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
872
</simpara></listitem></varlistentry>
873
</variablelist></refsect2>
875
<title><anchor id="rhythmdb-entry-delete-by-type"/>rhythmdb_entry_delete_by_type ()</title>
876
<indexterm><primary>rhythmdb_entry_delete_by_type</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_entry_delete_by_type (<link linkend="RhythmDB">RhythmDB</link> *db,
877
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> type);</programlisting>
879
Delete all entries from the database of the given type.
880
This is usually used by non-permanent sources when they disappear, such as
881
removable media being removed, or a network share becoming unavailable.</para>
884
</para><variablelist role="params">
885
<varlistentry><term><parameter>db</parameter> :</term>
886
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
887
</simpara></listitem></varlistentry>
888
<varlistentry><term><parameter>type</parameter> :</term>
889
<listitem><simpara> type of entried to delete.
890
</simpara></listitem></varlistentry>
891
</variablelist></refsect2>
893
<title><anchor id="rhythmdb-entry-lookup-by-location"/>rhythmdb_entry_lookup_by_location ()</title>
894
<indexterm><primary>rhythmdb_entry_lookup_by_location</primary></indexterm><programlisting><link linkend="RhythmDBEntry">RhythmDBEntry</link>* rhythmdb_entry_lookup_by_location
895
(<link linkend="RhythmDB">RhythmDB</link> *db,
896
const <link linkend="char">char</link> *uri);</programlisting>
898
Looks up the entry with location <parameter>uri</parameter>.</para>
901
</para><variablelist role="params">
902
<varlistentry><term><parameter>db</parameter> :</term>
903
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
904
</simpara></listitem></varlistentry>
905
<varlistentry><term><parameter>uri</parameter> :</term>
906
<listitem><simpara> the URI of the entry to lookup.
907
</simpara></listitem></varlistentry>
908
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the entry with location <parameter>uri</parameter>, or NULL if no such entry exists.
909
</simpara></listitem></varlistentry>
910
</variablelist></refsect2>
912
<title><anchor id="rhythmdb-evaluate-query"/>rhythmdb_evaluate_query ()</title>
913
<indexterm><primary>rhythmdb_evaluate_query</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> rhythmdb_evaluate_query (<link linkend="RhythmDB">RhythmDB</link> *db,
914
<link linkend="GPtrArray">GPtrArray</link> *query,
915
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);</programlisting>
917
Evaluates the given entry against the given query.</para>
920
</para><variablelist role="params">
921
<varlistentry><term><parameter>db</parameter> :</term>
922
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
923
</simpara></listitem></varlistentry>
924
<varlistentry><term><parameter>query</parameter> :</term>
925
<listitem><simpara> a query.
926
<parameter>entry</parameter> a <parameter>RhythmDBEntry</parameter>.
927
</simpara></listitem></varlistentry>
928
<varlistentry><term><parameter>entry</parameter> :</term>
930
</simpara></listitem></varlistentry>
931
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> whether the given entry matches the criteria of the given query.
932
</simpara></listitem></varlistentry>
933
</variablelist></refsect2>
935
<title><anchor id="rhythmdb-entry-foreach"/>rhythmdb_entry_foreach ()</title>
936
<indexterm><primary>rhythmdb_entry_foreach</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_entry_foreach (<link linkend="RhythmDB">RhythmDB</link> *db,
937
<link linkend="GFunc">GFunc</link> func,
938
<link linkend="gpointer">gpointer</link> data);</programlisting>
940
Calls the given function for each of the entries in the database.</para>
943
</para><variablelist role="params">
944
<varlistentry><term><parameter>db</parameter> :</term>
945
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
946
</simpara></listitem></varlistentry>
947
<varlistentry><term><parameter>func</parameter> :</term>
948
<listitem><simpara> the function to call with each entry.
949
</simpara></listitem></varlistentry>
950
<varlistentry><term><parameter>data</parameter> :</term>
951
<listitem><simpara> user data to pass to the function.
952
</simpara></listitem></varlistentry>
953
</variablelist></refsect2>
955
<title><anchor id="rhythmdb-do-full-query"/>rhythmdb_do_full_query ()</title>
956
<indexterm><primary>rhythmdb_do_full_query</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_do_full_query (<link linkend="RhythmDB">RhythmDB</link> *db,
957
<link linkend="GtkTreeModel">GtkTreeModel</link> *main_model,
958
...);</programlisting>
961
</para><variablelist role="params">
962
<varlistentry><term><parameter>db</parameter> :</term>
964
</simpara></listitem></varlistentry>
965
<varlistentry><term><parameter>main_model</parameter> :</term>
967
</simpara></listitem></varlistentry>
968
<varlistentry><term><parameter>...</parameter> :</term>
972
</simpara></listitem></varlistentry>
973
</variablelist></refsect2>
975
<title><anchor id="rhythmdb-do-full-query-parsed"/>rhythmdb_do_full_query_parsed ()</title>
976
<indexterm><primary>rhythmdb_do_full_query_parsed</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_do_full_query_parsed (<link linkend="RhythmDB">RhythmDB</link> *db,
977
<link linkend="GtkTreeModel">GtkTreeModel</link> *main_model,
978
<link linkend="GPtrArray">GPtrArray</link> *query);</programlisting>
981
</para><variablelist role="params">
982
<varlistentry><term><parameter>db</parameter> :</term>
984
</simpara></listitem></varlistentry>
985
<varlistentry><term><parameter>main_model</parameter> :</term>
987
</simpara></listitem></varlistentry>
988
<varlistentry><term><parameter>query</parameter> :</term>
992
</simpara></listitem></varlistentry>
993
</variablelist></refsect2>
995
<title><anchor id="rhythmdb-do-full-query-async"/>rhythmdb_do_full_query_async ()</title>
996
<indexterm><primary>rhythmdb_do_full_query_async</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_do_full_query_async (<link linkend="RhythmDB">RhythmDB</link> *db,
997
<link linkend="GtkTreeModel">GtkTreeModel</link> *main_model,
998
...);</programlisting>
1001
</para><variablelist role="params">
1002
<varlistentry><term><parameter>db</parameter> :</term>
1004
</simpara></listitem></varlistentry>
1005
<varlistentry><term><parameter>main_model</parameter> :</term>
1007
</simpara></listitem></varlistentry>
1008
<varlistentry><term><parameter>...</parameter> :</term>
1012
</simpara></listitem></varlistentry>
1013
</variablelist></refsect2>
1015
<title><anchor id="rhythmdb-do-full-query-async-parsed"/>rhythmdb_do_full_query_async_parsed ()</title>
1016
<indexterm><primary>rhythmdb_do_full_query_async_parsed</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_do_full_query_async_parsed
1017
(<link linkend="RhythmDB">RhythmDB</link> *db,
1018
<link linkend="GtkTreeModel">GtkTreeModel</link> *main_model,
1019
<link linkend="GPtrArray">GPtrArray</link> *query);</programlisting>
1022
</para><variablelist role="params">
1023
<varlistentry><term><parameter>db</parameter> :</term>
1025
</simpara></listitem></varlistentry>
1026
<varlistentry><term><parameter>main_model</parameter> :</term>
1028
</simpara></listitem></varlistentry>
1029
<varlistentry><term><parameter>query</parameter> :</term>
1033
</simpara></listitem></varlistentry>
1034
</variablelist></refsect2>
1036
<title><anchor id="rhythmdb-query-cancel"/>rhythmdb_query_cancel ()</title>
1037
<indexterm><primary>rhythmdb_query_cancel</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_query_cancel (<link linkend="RhythmDB">RhythmDB</link> *db,
1038
<link linkend="GtkTreeModel">GtkTreeModel</link> *query_model);</programlisting>
1041
</para><variablelist role="params">
1042
<varlistentry><term><parameter>db</parameter> :</term>
1044
</simpara></listitem></varlistentry>
1045
<varlistentry><term><parameter>query_model</parameter> :</term>
1049
</simpara></listitem></varlistentry>
1050
</variablelist></refsect2>
1052
<title><anchor id="rhythmdb-entry-sync-mirrored"/>rhythmdb_entry_sync_mirrored ()</title>
1053
<indexterm><primary>rhythmdb_entry_sync_mirrored</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_entry_sync_mirrored (<link linkend="RhythmDB">RhythmDB</link> *db,
1054
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry,
1055
<link linkend="guint">guint</link> propid);</programlisting>
1057
Synchronise "mirrored" properties, such as the string version of the last-played
1058
time. This should be called when a property is directly modified, passing the
1062
This should only be used by RhythmDB itself, or a backend (such as rhythmdb-tree).</para>
1065
</para><variablelist role="params">
1066
<varlistentry><term><parameter>db</parameter> :</term>
1067
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
1068
</simpara></listitem></varlistentry>
1069
<varlistentry><term><parameter>entry</parameter> :</term>
1071
</simpara></listitem></varlistentry>
1072
<varlistentry><term><parameter>propid</parameter> :</term>
1073
<listitem><simpara> the property to sync the mirrored version of.
1074
</simpara></listitem></varlistentry>
1075
</variablelist></refsect2>
1077
<title><anchor id="rhythmdb-query-parse"/>rhythmdb_query_parse ()</title>
1078
<indexterm><primary>rhythmdb_query_parse</primary></indexterm><programlisting><link linkend="GPtrArray">GPtrArray</link>* rhythmdb_query_parse (<link linkend="RhythmDB">RhythmDB</link> *db,
1079
...);</programlisting>
1081
Creates a query from a list of criteria.
1084
Most criteria consists of an operator (<link linkend="RhythmDBQueryType"><type>RhythmDBQueryType</type></link>),
1085
a property (<link linkend="RhythmDBPropType"><type>RhythmDBPropType</type></link>) and the data to compare with. An entry
1086
matches a criteria if the operator returns true with the value of the
1087
entries property as the first argument, and the given data as the second
1091
Three types criteria are special. Passing RHYTHMDB_QUERY_END indicates the
1092
end of the list of criteria, and must be the last passes parameter.
1095
The second special criteria is a subquery which is defined by passing
1096
RHYTHMDB_QUERY_SUBQUERY, followed by a query (<link linkend="GPtrArray"><type>GPtrArray</type></link>). An entry will
1097
match a subquery criteria if it matches all criteria in the subquery.
1100
The third special criteria is a disjunction which is defined by passing
1101
RHYTHMDB_QUERY_DISJUNCTION, which will make an entry match the query if
1102
it matches the criteria before the disjunction, the criteria after the
1103
disjunction, or both.
1107
rhythmdb_query_parse (db,
1108
RHYTHMDB_QUERY_SUBQUERY, subquery,
1109
RHYTHMDB_QUERY_DISJUNCTION
1110
RHYTHMDB_QUERY_PROP_LIKE, RHYTHMDB_PROP_TITLE, "cat",
1111
RHYTHMDB_QUERY_DISJUNCTION
1112
RHYTHMDB_QUERY_PROP_GREATER, RHYTHMDB_PROP_RATING, 2.5,
1113
RHYTHMDB_QUERY_PROP_LESS, RHYTHMDB_PROP_PLAY_COUNT, 10,
1114
RHYTHMDB_QUERY_END);
1117
will create a query that matches entries:
1118
a) that match the query "subquery", or
1119
b) that have "cat" in their title, or
1120
c) have a rating of at least 2.5, and a play count of at most 10</para>
1123
</para><variablelist role="params">
1124
<varlistentry><term><parameter>db</parameter> :</term>
1125
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link> instance
1126
</simpara></listitem></varlistentry>
1127
<varlistentry><term><parameter>...</parameter> :</term>
1129
</simpara></listitem></varlistentry>
1130
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a the newly created query. It must be freed with <link linkend="rhythmdb-query-free"><function>rhythmdb_query_free()</function></link>
1131
</simpara></listitem></varlistentry>
1132
</variablelist></refsect2>
1134
<title><anchor id="rhythmdb-query-append"/>rhythmdb_query_append ()</title>
1135
<indexterm><primary>rhythmdb_query_append</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_query_append (<link linkend="RhythmDB">RhythmDB</link> *db,
1136
<link linkend="GPtrArray">GPtrArray</link> *query,
1137
...);</programlisting>
1139
Appends new criteria to the query <parameter>query</parameter>.
1142
The list of criteria must be in the same format as for rhythmdb_query_parse,
1143
and ended by RHYTHMDB_QUERY_END.</para>
1146
</para><variablelist role="params">
1147
<varlistentry><term><parameter>db</parameter> :</term>
1148
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link> instance
1149
</simpara></listitem></varlistentry>
1150
<varlistentry><term><parameter>query</parameter> :</term>
1151
<listitem><simpara> a query.
1152
</simpara></listitem></varlistentry>
1153
<varlistentry><term><parameter>...</parameter> :</term>
1157
</simpara></listitem></varlistentry>
1158
</variablelist></refsect2>
1160
<title><anchor id="rhythmdb-query-free"/>rhythmdb_query_free ()</title>
1161
<indexterm><primary>rhythmdb_query_free</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_query_free (<link linkend="GPtrArray">GPtrArray</link> *query);</programlisting>
1163
Frees the query <parameter>query</parameter></para>
1166
</para><variablelist role="params">
1167
<varlistentry><term><parameter>query</parameter> :</term>
1168
<listitem><simpara> a query.
1169
</simpara></listitem></varlistentry>
1170
</variablelist></refsect2>
1172
<title><anchor id="rhythmdb-query-copy"/>rhythmdb_query_copy ()</title>
1173
<indexterm><primary>rhythmdb_query_copy</primary></indexterm><programlisting><link linkend="GPtrArray">GPtrArray</link>* rhythmdb_query_copy (<link linkend="GPtrArray">GPtrArray</link> *array);</programlisting>
1175
Creates a copy of a query.</para>
1178
</para><variablelist role="params">
1179
<varlistentry><term><parameter>array</parameter> :</term>
1180
<listitem><simpara> the query to copy.
1181
</simpara></listitem></varlistentry>
1182
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a copy of the passed query. It must be freed with <link linkend="rhythmdb-query-free"><function>rhythmdb_query_free()</function></link>
1183
</simpara></listitem></varlistentry>
1184
</variablelist></refsect2>
1186
<title><anchor id="rhythmdb-query-serialize"/>rhythmdb_query_serialize ()</title>
1187
<indexterm><primary>rhythmdb_query_serialize</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_query_serialize (<link linkend="RhythmDB">RhythmDB</link> *db,
1188
<link linkend="GPtrArray">GPtrArray</link> *query,
1189
<link linkend="xmlNodePtr">xmlNodePtr</link> node);</programlisting>
1192
</para><variablelist role="params">
1193
<varlistentry><term><parameter>db</parameter> :</term>
1195
</simpara></listitem></varlistentry>
1196
<varlistentry><term><parameter>query</parameter> :</term>
1198
</simpara></listitem></varlistentry>
1199
<varlistentry><term><parameter>node</parameter> :</term>
1203
</simpara></listitem></varlistentry>
1204
</variablelist></refsect2>
1206
<title><anchor id="rhythmdb-query-deserialize"/>rhythmdb_query_deserialize ()</title>
1207
<indexterm><primary>rhythmdb_query_deserialize</primary></indexterm><programlisting><link linkend="GPtrArray">GPtrArray</link>* rhythmdb_query_deserialize (<link linkend="RhythmDB">RhythmDB</link> *db,
1208
<link linkend="xmlNodePtr">xmlNodePtr</link> node);</programlisting>
1211
</para><variablelist role="params">
1212
<varlistentry><term><parameter>db</parameter> :</term>
1214
</simpara></listitem></varlistentry>
1215
<varlistentry><term><parameter>node</parameter> :</term>
1217
</simpara></listitem></varlistentry>
1218
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
1221
</simpara></listitem></varlistentry>
1222
</variablelist></refsect2>
1224
<title><anchor id="rhythmdb-emit-entry-added"/>rhythmdb_emit_entry_added ()</title>
1225
<indexterm><primary>rhythmdb_emit_entry_added</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_emit_entry_added (<link linkend="RhythmDB">RhythmDB</link> *db,
1226
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);</programlisting>
1229
</para><variablelist role="params">
1230
<varlistentry><term><parameter>db</parameter> :</term>
1232
</simpara></listitem></varlistentry>
1233
<varlistentry><term><parameter>entry</parameter> :</term>
1237
</simpara></listitem></varlistentry>
1238
</variablelist></refsect2>
1240
<title><anchor id="rhythmdb-emit-entry-deleted"/>rhythmdb_emit_entry_deleted ()</title>
1241
<indexterm><primary>rhythmdb_emit_entry_deleted</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_emit_entry_deleted (<link linkend="RhythmDB">RhythmDB</link> *db,
1242
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);</programlisting>
1245
</para><variablelist role="params">
1246
<varlistentry><term><parameter>db</parameter> :</term>
1248
</simpara></listitem></varlistentry>
1249
<varlistentry><term><parameter>entry</parameter> :</term>
1253
</simpara></listitem></varlistentry>
1254
</variablelist></refsect2>
1256
<title><anchor id="rhythmdb-is-busy"/>rhythmdb_is_busy ()</title>
1257
<indexterm><primary>rhythmdb_is_busy</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> rhythmdb_is_busy (<link linkend="RhythmDB">RhythmDB</link> *db);</programlisting>
1262
</para><variablelist role="params">
1263
<varlistentry><term><parameter>db</parameter> :</term>
1264
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
1265
</simpara></listitem></varlistentry>
1266
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> whether the <link linkend="RhythmDB"><type>RhythmDB</type></link> has events to process.
1267
</simpara></listitem></varlistentry>
1268
</variablelist></refsect2>
1270
<title><anchor id="rhythmdb-compute-status-normal"/>rhythmdb_compute_status_normal ()</title>
1271
<indexterm><primary>rhythmdb_compute_status_normal</primary></indexterm><programlisting><link linkend="char">char</link>* rhythmdb_compute_status_normal (<link linkend="gint">gint</link> n_songs,
1272
<link linkend="glong">glong</link> duration,
1273
<link linkend="GnomeVFSFileSize">GnomeVFSFileSize</link> size);</programlisting>
1275
Creates a string containing the "status" information about a list of tracks.</para>
1278
</para><variablelist role="params">
1279
<varlistentry><term><parameter>n_songs</parameter> :</term>
1280
<listitem><simpara> the number of tracks.
1281
</simpara></listitem></varlistentry>
1282
<varlistentry><term><parameter>duration</parameter> :</term>
1283
<listitem><simpara> the total duration of the tracks.
1284
</simpara></listitem></varlistentry>
1285
<varlistentry><term><parameter>size</parameter> :</term>
1286
<listitem><simpara> the total size of the tracks.
1287
</simpara></listitem></varlistentry>
1288
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the string, which should be freed with g_free.
1289
</simpara></listitem></varlistentry>
1290
</variablelist></refsect2>
1292
<title><anchor id="rhythmdb-entry-register-type"/>rhythmdb_entry_register_type ()</title>
1293
<indexterm><primary>rhythmdb_entry_register_type</primary></indexterm><programlisting><link linkend="RhythmDBEntryType">RhythmDBEntryType</link> rhythmdb_entry_register_type
1294
(void);</programlisting>
1296
Registers a new <link linkend="RhythmDBEntryType"><type>RhythmDBEntryType</type></link>. This should be called to create a new
1297
entry type for non-permanent sources.</para>
1300
</para><variablelist role="params">
1301
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the new <link linkend="RhythmDBEntryType"><type>RhythmDBEntryType</type></link>.
1302
</simpara></listitem></varlistentry>
1303
</variablelist></refsect2>
1305
<title><anchor id="rhythmdb-entry-song-get-type"/>rhythmdb_entry_song_get_type ()</title>
1306
<indexterm><primary>rhythmdb_entry_song_get_type</primary></indexterm><programlisting><link linkend="RhythmDBEntryType">RhythmDBEntryType</link> rhythmdb_entry_song_get_type
1307
(void);</programlisting>
1310
</para><variablelist role="params">
1311
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
1314
</simpara></listitem></varlistentry>
1315
</variablelist></refsect2>
1317
<title><anchor id="rhythmdb-entry-iradio-get-type"/>rhythmdb_entry_iradio_get_type ()</title>
1318
<indexterm><primary>rhythmdb_entry_iradio_get_type</primary></indexterm><programlisting><link linkend="RhythmDBEntryType">RhythmDBEntryType</link> rhythmdb_entry_iradio_get_type
1319
(void);</programlisting>
1322
</para><variablelist role="params">
1323
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
1326
</simpara></listitem></varlistentry>
1327
</variablelist></refsect2>
1329
<title><anchor id="rhythmdb-entry-icecast-get-type"/>rhythmdb_entry_icecast_get_type ()</title>
1330
<indexterm><primary>rhythmdb_entry_icecast_get_type</primary></indexterm><programlisting><link linkend="RhythmDBEntryType">RhythmDBEntryType</link> rhythmdb_entry_icecast_get_type
1331
(void);</programlisting>
1334
</para><variablelist role="params">
1335
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
1338
</simpara></listitem></varlistentry>
1339
</variablelist></refsect2>
1341
<title><anchor id="rhythmdb-get-property-type"/>rhythmdb_get_property_type ()</title>
1342
<indexterm><primary>rhythmdb_get_property_type</primary></indexterm><programlisting><link linkend="GType">GType</link> rhythmdb_get_property_type (<link linkend="RhythmDB">RhythmDB</link> *db,
1343
<link linkend="guint">guint</link> property_id);</programlisting>
1346
</para><variablelist role="params">
1347
<varlistentry><term><parameter>db</parameter> :</term>
1349
</simpara></listitem></varlistentry>
1350
<varlistentry><term><parameter>property_id</parameter> :</term>
1352
</simpara></listitem></varlistentry>
1353
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
1356
</simpara></listitem></varlistentry>
1357
</variablelist></refsect2>
1359
<title><anchor id="rhythmdb-entry-ref"/>rhythmdb_entry_ref ()</title>
1360
<indexterm><primary>rhythmdb_entry_ref</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_entry_ref (<link linkend="RhythmDB">RhythmDB</link> *db,
1361
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);</programlisting>
1363
Increase the reference count of the entry.</para>
1366
</para><variablelist role="params">
1367
<varlistentry><term><parameter>db</parameter> :</term>
1368
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
1369
</simpara></listitem></varlistentry>
1370
<varlistentry><term><parameter>entry</parameter> :</term>
1371
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
1372
</simpara></listitem></varlistentry>
1373
</variablelist></refsect2>
1375
<title><anchor id="rhythmdb-entry-unref"/>rhythmdb_entry_unref ()</title>
1376
<indexterm><primary>rhythmdb_entry_unref</primary></indexterm><programlisting><link linkend="void">void</link> rhythmdb_entry_unref (<link linkend="RhythmDB">RhythmDB</link> *db,
1377
<link linkend="RhythmDBEntry">RhythmDBEntry</link> *entry);</programlisting>
1379
Decrease the reference count of the entry, and destroy it if there are
1380
no references left.</para>
1383
</para><variablelist role="params">
1384
<varlistentry><term><parameter>db</parameter> :</term>
1385
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
1386
</simpara></listitem></varlistentry>
1387
<varlistentry><term><parameter>entry</parameter> :</term>
1388
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
1389
</simpara></listitem></varlistentry>
1390
</variablelist></refsect2>