~ubuntu-branches/ubuntu/utopic/rhythmbox/utopic-proposed

« back to all changes in this revision

Viewing changes to doc/reference/xml/rhythmdb.xml

Tags: upstream-0.9.2
ImportĀ upstreamĀ versionĀ 0.9.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0"?>
 
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">
 
5
<refmeta>
 
6
<refentrytitle>rhythmdb</refentrytitle>
 
7
<manvolnum>3</manvolnum>
 
8
<refmiscinfo>RHYTHMBOX Library</refmiscinfo>
 
9
</refmeta>
 
10
 
 
11
<refnamediv>
 
12
<refname>rhythmdb</refname><refpurpose></refpurpose>
 
13
</refnamediv>
 
14
 
 
15
<refsynopsisdiv><title>Synopsis</title>
 
16
 
 
17
<synopsis>
 
18
 
 
19
 
 
20
 
 
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,
 
97
                                             ...);
 
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,
 
103
                                             ...);
 
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,
 
114
                                             ...);
 
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,
 
117
                                             ...);
 
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>
 
134
                                            (void);
 
135
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> <link linkend="rhythmdb-entry-song-get-type">rhythmdb_entry_song_get_type</link>
 
136
                                            (void);
 
137
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> <link linkend="rhythmdb-entry-iradio-get-type">rhythmdb_entry_iradio_get_type</link>
 
138
                                            (void);
 
139
<link linkend="RhythmDBEntryType">RhythmDBEntryType</link> <link linkend="rhythmdb-entry-icecast-get-type">rhythmdb_entry_icecast_get_type</link>
 
140
                                            (void);
 
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);
 
147
 
 
148
</synopsis>
 
149
</refsynopsisdiv>
 
150
 
 
151
 
 
152
 
 
153
 
 
154
 
 
155
 
 
156
 
 
157
 
 
158
 
 
159
<refsect1>
 
160
<title>Description</title>
 
161
<para>
 
162
 
 
163
</para>
 
164
</refsect1>
 
165
 
 
166
<refsect1>
 
167
<title>Details</title>
 
168
<refsect2>
 
169
<title><anchor id="RHYTHMDB-TYPE:CAPS"/>RHYTHMDB_TYPE</title>
 
170
<indexterm><primary>RHYTHMDB_TYPE</primary></indexterm><programlisting>#define RHYTHMDB_TYPE      (rhythmdb_get_type ())
 
171
</programlisting>
 
172
<para>
 
173
 
 
174
</para></refsect2>
 
175
<refsect2>
 
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))
 
178
</programlisting>
 
179
<para>
 
180
 
 
181
</para><variablelist role="params">
 
182
<varlistentry><term><parameter>o</parameter>&nbsp;:</term>
 
183
<listitem><simpara>
 
184
 
 
185
 
 
186
</simpara></listitem></varlistentry>
 
187
</variablelist></refsect2>
 
188
<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))
 
191
</programlisting>
 
192
<para>
 
193
 
 
194
</para><variablelist role="params">
 
195
<varlistentry><term><parameter>o</parameter>&nbsp;:</term>
 
196
<listitem><simpara>
 
197
 
 
198
 
 
199
</simpara></listitem></varlistentry>
 
200
</variablelist></refsect2>
 
201
<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))
 
204
</programlisting>
 
205
<para>
 
206
 
 
207
</para><variablelist role="params">
 
208
<varlistentry><term><parameter>o</parameter>&nbsp;:</term>
 
209
<listitem><simpara>
 
210
 
 
211
 
 
212
</simpara></listitem></varlistentry>
 
213
</variablelist></refsect2>
 
214
<refsect2>
 
215
<title><anchor id="RhythmDBEntryType"/>RhythmDBEntryType</title>
 
216
<indexterm><primary>RhythmDBEntryType</primary></indexterm><programlisting>typedef gint32 RhythmDBEntryType;
 
217
</programlisting>
 
218
<para>
 
219
 
 
220
</para></refsect2>
 
221
<refsect2>
 
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 ())
 
224
</programlisting>
 
225
<para>
 
226
 
 
227
</para></refsect2>
 
228
<refsect2>
 
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 ())
 
231
</programlisting>
 
232
<para>
 
233
 
 
234
</para></refsect2>
 
235
<refsect2>
 
236
<title><anchor id="RhythmDBQueryType"/>enum RhythmDBQueryType</title>
 
237
<indexterm><primary>RhythmDBQueryType</primary></indexterm><programlisting>typedef enum
 
238
{
 
239
        RHYTHMDB_QUERY_END,
 
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,
 
249
} RhythmDBQueryType;
 
250
</programlisting>
 
251
<para>
 
252
 
 
253
</para></refsect2>
 
254
<refsect2>
 
255
<title><anchor id="RhythmDBPropType"/>enum RhythmDBPropType</title>
 
256
<indexterm><primary>RhythmDBPropType</primary></indexterm><programlisting>typedef enum
 
257
{
 
258
        RHYTHMDB_PROP_TYPE = 0,
 
259
        RHYTHMDB_PROP_TITLE,
 
260
        RHYTHMDB_PROP_GENRE,
 
261
        RHYTHMDB_PROP_ARTIST,
 
262
        RHYTHMDB_PROP_ALBUM,
 
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,
 
269
        RHYTHMDB_PROP_MTIME,
 
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,
 
276
        RHYTHMDB_PROP_DATE,
 
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,
 
295
 
 
296
//podcast propriets
 
297
        RHYTHMDB_PROP_STATUS,
 
298
        RHYTHMDB_PROP_DESCRIPTION,
 
299
        RHYTHMDB_PROP_SUBTITLE,
 
300
        RHYTHMDB_PROP_SUMMARY,
 
301
        RHYTHMDB_PROP_LANG,
 
302
        RHYTHMDB_PROP_COPYRIGHT,
 
303
        RHYTHMDB_PROP_IMAGE,
 
304
        RHYTHMDB_PROP_POST_TIME,
 
305
        
 
306
        RHYTHMDB_NUM_PROPERTIES
 
307
} RhythmDBPropType;
 
308
</programlisting>
 
309
<para>
 
310
 
 
311
</para></refsect2>
 
312
<refsect2>
 
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>
 
315
<para>
 
316
 
 
317
</para><variablelist role="params">
 
318
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
319
 
 
320
 
 
321
</simpara></listitem></varlistentry>
 
322
</variablelist></refsect2>
 
323
<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 ())
 
326
</programlisting>
 
327
<para>
 
328
 
 
329
</para></refsect2>
 
330
<refsect2>
 
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 ())
 
333
</programlisting>
 
334
<para>
 
335
 
 
336
</para></refsect2>
 
337
<refsect2>
 
338
<title><anchor id="RhythmDBQueryData"/>RhythmDBQueryData</title>
 
339
<indexterm><primary>RhythmDBQueryData</primary></indexterm><programlisting>typedef struct {
 
340
        guint type;
 
341
        guint propid;
 
342
        GValue *val;
 
343
        GPtrArray *subquery;
 
344
} RhythmDBQueryData;
 
345
</programlisting>
 
346
<para>
 
347
 
 
348
</para></refsect2>
 
349
<refsect2>
 
350
<title><anchor id="RhythmDBEntry"/>RhythmDBEntry</title>
 
351
<indexterm><primary>RhythmDBEntry</primary></indexterm><programlisting>typedef struct {
 
352
        /* internal bits */
 
353
#ifndef G_DISABLE_ASSERT
 
354
        guint magic;
 
355
#endif  
 
356
        gboolean inserted;
 
357
        gint refcount;
 
358
        void *data;
 
359
        gulong type;
 
360
        
 
361
        /* metadata */
 
362
        RBRefString *title;
 
363
        RBRefString *artist;
 
364
        RBRefString *album;
 
365
        RBRefString *genre;
 
366
        gulong tracknum;
 
367
        gulong discnum;
 
368
        gulong duration;
 
369
        gulong bitrate;
 
370
        double track_gain;
 
371
        double track_peak;
 
372
        double album_gain;
 
373
        double album_peak;
 
374
        GDate *date;
 
375
 
 
376
        /* filesystem */
 
377
        char *location;
 
378
        RBRefString *mountpoint;
 
379
        guint64 file_size;
 
380
        RBRefString *mimetype;
 
381
#if 0
 
382
        dev_t device;
 
383
        GnomeVFSInodeNumber inode;
 
384
#endif
 
385
        gulong mtime;
 
386
        gulong first_seen;
 
387
        gulong last_seen;
 
388
 
 
389
        /* user data */
 
390
        gdouble rating;
 
391
        glong play_count;
 
392
        gulong last_played;
 
393
 
 
394
        /* cached data */
 
395
        RBRefString *last_played_str;
 
396
        RBRefString *first_seen_str;
 
397
 
 
398
        /* playback error string */
 
399
        char *playback_error;
 
400
 
 
401
        /* visibility (to hide entries on unmounted volumes) */
 
402
        gboolean hidden;
 
403
 
 
404
        /*Podcast*/
 
405
        RhythmDBPodcastFields *podcast;
 
406
} RhythmDBEntry;
 
407
</programlisting>
 
408
<para>
 
409
 
 
410
</para></refsect2>
 
411
<refsect2>
 
412
<title><anchor id="RhythmDBEntryChange"/>RhythmDBEntryChange</title>
 
413
<indexterm><primary>RhythmDBEntryChange</primary></indexterm><programlisting>typedef struct {
 
414
        RhythmDBPropType prop;
 
415
        GValue old;
 
416
        GValue new;
 
417
} RhythmDBEntryChange;
 
418
</programlisting>
 
419
<para>
 
420
 
 
421
</para></refsect2>
 
422
<refsect2>
 
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>
 
427
<para>
 
428
Gets a property of an entry, storing it in the given <link linkend="GValue"><type>GValue</type></link>.</para>
 
429
<para>
 
430
 
 
431
</para><variablelist role="params">
 
432
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
433
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
 
434
</simpara></listitem></varlistentry>
 
435
<varlistentry><term><parameter>propid</parameter>&nbsp;:</term>
 
436
<listitem><simpara> the id of the property to get.
 
437
</simpara></listitem></varlistentry>
 
438
<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
 
439
<listitem><simpara> return location for the property value.
 
440
</simpara></listitem></varlistentry>
 
441
</variablelist></refsect2>
 
442
<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>
 
446
<para>
 
447
 
 
448
</para><variablelist role="params">
 
449
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
450
<listitem><simpara>
 
451
</simpara></listitem></varlistentry>
 
452
<varlistentry><term><parameter>propid</parameter>&nbsp;:</term>
 
453
<listitem><simpara>
 
454
</simpara></listitem></varlistentry>
 
455
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
456
 
 
457
 
 
458
</simpara></listitem></varlistentry>
 
459
</variablelist></refsect2>
 
460
<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>
 
464
<para>
 
465
 
 
466
</para><variablelist role="params">
 
467
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
468
<listitem><simpara>
 
469
</simpara></listitem></varlistentry>
 
470
<varlistentry><term><parameter>propid</parameter>&nbsp;:</term>
 
471
<listitem><simpara>
 
472
</simpara></listitem></varlistentry>
 
473
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
474
 
 
475
 
 
476
</simpara></listitem></varlistentry>
 
477
</variablelist></refsect2>
 
478
<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>
 
482
<para>
 
483
 
 
484
</para><variablelist role="params">
 
485
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
486
<listitem><simpara>
 
487
</simpara></listitem></varlistentry>
 
488
<varlistentry><term><parameter>propid</parameter>&nbsp;:</term>
 
489
<listitem><simpara>
 
490
</simpara></listitem></varlistentry>
 
491
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
492
 
 
493
 
 
494
</simpara></listitem></varlistentry>
 
495
</variablelist></refsect2>
 
496
<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>
 
500
<para>
 
501
 
 
502
</para><variablelist role="params">
 
503
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
504
<listitem><simpara>
 
505
</simpara></listitem></varlistentry>
 
506
<varlistentry><term><parameter>propid</parameter>&nbsp;:</term>
 
507
<listitem><simpara>
 
508
</simpara></listitem></varlistentry>
 
509
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
510
 
 
511
 
 
512
</simpara></listitem></varlistentry>
 
513
</variablelist></refsect2>
 
514
<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>
 
518
<para>
 
519
 
 
520
</para><variablelist role="params">
 
521
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
522
<listitem><simpara>
 
523
</simpara></listitem></varlistentry>
 
524
<varlistentry><term><parameter>propid</parameter>&nbsp;:</term>
 
525
<listitem><simpara>
 
526
</simpara></listitem></varlistentry>
 
527
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
528
 
 
529
 
 
530
</simpara></listitem></varlistentry>
 
531
</variablelist></refsect2>
 
532
<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>
 
535
<para>
 
536
 
 
537
</para><variablelist role="params">
 
538
<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
 
539
<listitem><simpara>
 
540
</simpara></listitem></varlistentry>
 
541
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
542
 
 
543
 
 
544
</simpara></listitem></varlistentry>
 
545
</variablelist></refsect2>
 
546
<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>
 
549
<para>
 
550
 
 
551
</para><variablelist role="params">
 
552
<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
 
553
<listitem><simpara>
 
554
</simpara></listitem></varlistentry>
 
555
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
556
 
 
557
 
 
558
</simpara></listitem></varlistentry>
 
559
</variablelist></refsect2>
 
560
<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>
 
563
<para>
 
564
 
 
565
</para><variablelist role="params">
 
566
<varlistentry><term><parameter>val</parameter>&nbsp;:</term>
 
567
<listitem><simpara>
 
568
</simpara></listitem></varlistentry>
 
569
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
570
 
 
571
 
 
572
</simpara></listitem></varlistentry>
 
573
</variablelist></refsect2>
 
574
<refsect2>
 
575
<title><anchor id="RhythmDBError"/>enum RhythmDBError</title>
 
576
<indexterm><primary>RhythmDBError</primary></indexterm><programlisting>typedef enum
 
577
{
 
578
        RHYTHMDB_ERROR_ACCESS_FAILED,
 
579
} RhythmDBError;
 
580
</programlisting>
 
581
<para>
 
582
 
 
583
</para></refsect2>
 
584
<refsect2>
 
585
<title><anchor id="RHYTHMDB-ERROR:CAPS"/>RHYTHMDB_ERROR</title>
 
586
<indexterm><primary>RHYTHMDB_ERROR</primary></indexterm><programlisting>#define RHYTHMDB_ERROR (rhythmdb_error_quark ())
 
587
</programlisting>
 
588
<para>
 
589
 
 
590
</para></refsect2>
 
591
<refsect2>
 
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>
 
594
<para>
 
595
 
 
596
</para><variablelist role="params">
 
597
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
598
 
 
599
 
 
600
</simpara></listitem></varlistentry>
 
601
</variablelist></refsect2>
 
602
<refsect2>
 
603
<title><anchor id="RhythmDBPrivate"/>RhythmDBPrivate</title>
 
604
<indexterm><primary>RhythmDBPrivate</primary></indexterm><programlisting>typedef struct RhythmDBPrivate RhythmDBPrivate;
 
605
</programlisting>
 
606
<para>
 
607
 
 
608
</para></refsect2>
 
609
<refsect2>
 
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>
 
612
<para>
 
613
 
 
614
</para><variablelist role="params">
 
615
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
616
 
 
617
 
 
618
</simpara></listitem></varlistentry>
 
619
</variablelist></refsect2>
 
620
<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>
 
623
<para>
 
624
 
 
625
</para><variablelist role="params">
 
626
<varlistentry><term><parameter>name</parameter>&nbsp;:</term>
 
627
<listitem><simpara>
 
628
</simpara></listitem></varlistentry>
 
629
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
630
 
 
631
 
 
632
</simpara></listitem></varlistentry>
 
633
</variablelist></refsect2>
 
634
<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>
 
637
<para>
 
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>
 
640
<para>
 
641
 
 
642
</para><variablelist role="params">
 
643
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
644
<listitem><simpara>
 
645
 
 
646
 
 
647
</simpara></listitem></varlistentry>
 
648
</variablelist></refsect2>
 
649
<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>
 
652
<para>
 
653
Load the database from disk.</para>
 
654
<para>
 
655
 
 
656
</para><variablelist role="params">
 
657
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
658
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
659
</simpara></listitem></varlistentry>
 
660
</variablelist></refsect2>
 
661
<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>
 
664
<para>
 
665
Save the database to disk, not returning until it has been saved.</para>
 
666
<para>
 
667
 
 
668
</para><variablelist role="params">
 
669
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
670
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
671
</simpara></listitem></varlistentry>
 
672
</variablelist></refsect2>
 
673
<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>
 
676
<para>
 
677
Save the database to disk, asynchronously.</para>
 
678
<para>
 
679
 
 
680
</para><variablelist role="params">
 
681
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
682
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
683
</simpara></listitem></varlistentry>
 
684
</variablelist></refsect2>
 
685
<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>
 
688
<para>
 
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>
 
692
<para>
 
693
 
 
694
</para><variablelist role="params">
 
695
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
696
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
697
</simpara></listitem></varlistentry>
 
698
</variablelist></refsect2>
 
699
<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>
 
703
<para>
 
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>
 
707
<para>
 
708
 
 
709
</para><variablelist role="params">
 
710
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
711
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
712
</simpara></listitem></varlistentry>
 
713
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
714
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
 
715
</simpara></listitem></varlistentry>
 
716
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> whether the entries metadata can be changed.
 
717
</simpara></listitem></varlistentry>
 
718
</variablelist></refsect2>
 
719
<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>
 
724
<para>
 
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>
 
728
<para>
 
729
 
 
730
</para><variablelist role="params">
 
731
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
732
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
733
</simpara></listitem></varlistentry>
 
734
<varlistentry><term><parameter>type</parameter>&nbsp;:</term>
 
735
<listitem><simpara> type of entry to create
 
736
</simpara></listitem></varlistentry>
 
737
<varlistentry><term><parameter>uri</parameter>&nbsp;:</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>&nbsp;:</term><listitem><simpara> the newly created <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>
 
741
</simpara></listitem></varlistentry>
 
742
</variablelist></refsect2>
 
743
<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>
 
747
<para>
 
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>
 
751
<para>
 
752
 
 
753
</para><variablelist role="params">
 
754
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
755
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
756
</simpara></listitem></varlistentry>
 
757
<varlistentry><term><parameter>uri</parameter>&nbsp;:</term>
 
758
<listitem><simpara> the URI to add an entry/entries for
 
759
</simpara></listitem></varlistentry>
 
760
</variablelist></refsect2>
 
761
<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>
 
767
<para>
 
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.
 
777
</para>
 
778
<para>
 
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>
 
782
<para>
 
783
 
 
784
</para><variablelist role="params">
 
785
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
786
<listitem><simpara># a RhythmDB.
 
787
</simpara></listitem></varlistentry>
 
788
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
789
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
 
790
</simpara></listitem></varlistentry>
 
791
<varlistentry><term><parameter>propid</parameter>&nbsp;:</term>
 
792
<listitem><simpara> the id of the property to set.
 
793
</simpara></listitem></varlistentry>
 
794
<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
 
795
<listitem><simpara> the property value.
 
796
</simpara></listitem></varlistentry>
 
797
</variablelist></refsect2>
 
798
<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>
 
804
<para>
 
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.
 
808
</para>
 
809
<para>
 
810
Note that you do not need to call <link linkend="rhythmdb-commit"><function>rhythmdb_commit()</function></link> after this.</para>
 
811
<para>
 
812
 
 
813
</para><variablelist role="params">
 
814
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
815
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
816
</simpara></listitem></varlistentry>
 
817
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
818
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
 
819
</simpara></listitem></varlistentry>
 
820
<varlistentry><term><parameter>propid</parameter>&nbsp;:</term>
 
821
<listitem><simpara> the id of the property to set.
 
822
</simpara></listitem></varlistentry>
 
823
<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
 
824
<listitem><simpara> the property value.
 
825
</simpara></listitem></varlistentry>
 
826
</variablelist></refsect2>
 
827
<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>
 
833
<para>
 
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>).
 
837
</para>
 
838
<para>
 
839
Note that you need to call <link linkend="rhythmdb-commit"><function>rhythmdb_commit()</function></link> after all properties are set.</para>
 
840
<para>
 
841
 
 
842
</para><variablelist role="params">
 
843
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
844
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
845
</simpara></listitem></varlistentry>
 
846
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
847
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
 
848
</simpara></listitem></varlistentry>
 
849
<varlistentry><term><parameter>propid</parameter>&nbsp;:</term>
 
850
<listitem><simpara> the id of the property to set.
 
851
</simpara></listitem></varlistentry>
 
852
<varlistentry><term><parameter>value</parameter>&nbsp;:</term>
 
853
<listitem><simpara> the property value.
 
854
</simpara></listitem></varlistentry>
 
855
</variablelist></refsect2>
 
856
<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>
 
860
<para>
 
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>
 
864
<para>
 
865
 
 
866
</para><variablelist role="params">
 
867
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
868
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
869
</simpara></listitem></varlistentry>
 
870
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
871
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
 
872
</simpara></listitem></varlistentry>
 
873
</variablelist></refsect2>
 
874
<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>
 
878
<para>
 
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>
 
882
<para>
 
883
 
 
884
</para><variablelist role="params">
 
885
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
886
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
887
</simpara></listitem></varlistentry>
 
888
<varlistentry><term><parameter>type</parameter>&nbsp;:</term>
 
889
<listitem><simpara> type of entried to delete.
 
890
</simpara></listitem></varlistentry>
 
891
</variablelist></refsect2>
 
892
<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>
 
897
<para>
 
898
Looks up the entry with location <parameter>uri</parameter>.</para>
 
899
<para>
 
900
 
 
901
</para><variablelist role="params">
 
902
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
903
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
904
</simpara></listitem></varlistentry>
 
905
<varlistentry><term><parameter>uri</parameter>&nbsp;:</term>
 
906
<listitem><simpara> the URI of the entry to lookup.
 
907
</simpara></listitem></varlistentry>
 
908
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the entry with location <parameter>uri</parameter>, or NULL if no such entry exists.
 
909
</simpara></listitem></varlistentry>
 
910
</variablelist></refsect2>
 
911
<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>
 
916
<para>
 
917
Evaluates the given entry against the given query.</para>
 
918
<para>
 
919
 
 
920
</para><variablelist role="params">
 
921
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
922
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
923
</simpara></listitem></varlistentry>
 
924
<varlistentry><term><parameter>query</parameter>&nbsp;:</term>
 
925
<listitem><simpara> a query.
 
926
<parameter>entry</parameter> a <parameter>RhythmDBEntry</parameter>.
 
927
</simpara></listitem></varlistentry>
 
928
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
929
<listitem><simpara>
 
930
</simpara></listitem></varlistentry>
 
931
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> whether the given entry matches the criteria of the given query.
 
932
</simpara></listitem></varlistentry>
 
933
</variablelist></refsect2>
 
934
<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>
 
939
<para>
 
940
Calls the given function for each of the entries in the database.</para>
 
941
<para>
 
942
 
 
943
</para><variablelist role="params">
 
944
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
945
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
946
</simpara></listitem></varlistentry>
 
947
<varlistentry><term><parameter>func</parameter>&nbsp;:</term>
 
948
<listitem><simpara> the function to call with each entry.
 
949
</simpara></listitem></varlistentry>
 
950
<varlistentry><term><parameter>data</parameter>&nbsp;:</term>
 
951
<listitem><simpara> user data to pass to the function.
 
952
</simpara></listitem></varlistentry>
 
953
</variablelist></refsect2>
 
954
<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>
 
959
<para>
 
960
 
 
961
</para><variablelist role="params">
 
962
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
963
<listitem><simpara>
 
964
</simpara></listitem></varlistentry>
 
965
<varlistentry><term><parameter>main_model</parameter>&nbsp;:</term>
 
966
<listitem><simpara>
 
967
</simpara></listitem></varlistentry>
 
968
<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
 
969
<listitem><simpara>
 
970
 
 
971
 
 
972
</simpara></listitem></varlistentry>
 
973
</variablelist></refsect2>
 
974
<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>
 
979
<para>
 
980
 
 
981
</para><variablelist role="params">
 
982
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
983
<listitem><simpara>
 
984
</simpara></listitem></varlistentry>
 
985
<varlistentry><term><parameter>main_model</parameter>&nbsp;:</term>
 
986
<listitem><simpara>
 
987
</simpara></listitem></varlistentry>
 
988
<varlistentry><term><parameter>query</parameter>&nbsp;:</term>
 
989
<listitem><simpara>
 
990
 
 
991
 
 
992
</simpara></listitem></varlistentry>
 
993
</variablelist></refsect2>
 
994
<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>
 
999
<para>
 
1000
 
 
1001
</para><variablelist role="params">
 
1002
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1003
<listitem><simpara>
 
1004
</simpara></listitem></varlistentry>
 
1005
<varlistentry><term><parameter>main_model</parameter>&nbsp;:</term>
 
1006
<listitem><simpara>
 
1007
</simpara></listitem></varlistentry>
 
1008
<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
 
1009
<listitem><simpara>
 
1010
 
 
1011
 
 
1012
</simpara></listitem></varlistentry>
 
1013
</variablelist></refsect2>
 
1014
<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>
 
1020
<para>
 
1021
 
 
1022
</para><variablelist role="params">
 
1023
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1024
<listitem><simpara>
 
1025
</simpara></listitem></varlistentry>
 
1026
<varlistentry><term><parameter>main_model</parameter>&nbsp;:</term>
 
1027
<listitem><simpara>
 
1028
</simpara></listitem></varlistentry>
 
1029
<varlistentry><term><parameter>query</parameter>&nbsp;:</term>
 
1030
<listitem><simpara>
 
1031
 
 
1032
 
 
1033
</simpara></listitem></varlistentry>
 
1034
</variablelist></refsect2>
 
1035
<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>
 
1039
<para>
 
1040
 
 
1041
</para><variablelist role="params">
 
1042
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1043
<listitem><simpara>
 
1044
</simpara></listitem></varlistentry>
 
1045
<varlistentry><term><parameter>query_model</parameter>&nbsp;:</term>
 
1046
<listitem><simpara>
 
1047
 
 
1048
 
 
1049
</simpara></listitem></varlistentry>
 
1050
</variablelist></refsect2>
 
1051
<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>
 
1056
<para>
 
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
 
1059
original property.
 
1060
</para>
 
1061
<para>
 
1062
This should only be used by RhythmDB itself, or a backend (such as rhythmdb-tree).</para>
 
1063
<para>
 
1064
 
 
1065
</para><variablelist role="params">
 
1066
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1067
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
1068
</simpara></listitem></varlistentry>
 
1069
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
1070
<listitem><simpara>
 
1071
</simpara></listitem></varlistentry>
 
1072
<varlistentry><term><parameter>propid</parameter>&nbsp;:</term>
 
1073
<listitem><simpara> the property to sync the mirrored version of.
 
1074
</simpara></listitem></varlistentry>
 
1075
</variablelist></refsect2>
 
1076
<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>
 
1080
<para>
 
1081
Creates a query from a list of criteria.
 
1082
</para>
 
1083
<para>
 
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
 
1088
argument.
 
1089
</para>
 
1090
<para>
 
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.
 
1093
</para>
 
1094
<para>
 
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.
 
1098
</para>
 
1099
<para>
 
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.
 
1104
</para>
 
1105
<para>
 
1106
Example:
 
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);
 
1115
</para>
 
1116
<para>
 
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>
 
1121
<para>
 
1122
 
 
1123
</para><variablelist role="params">
 
1124
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1125
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link> instance
 
1126
</simpara></listitem></varlistentry>
 
1127
<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
 
1128
<listitem><simpara>
 
1129
</simpara></listitem></varlistentry>
 
1130
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</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>
 
1133
<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>
 
1138
<para>
 
1139
Appends new criteria to the query <parameter>query</parameter>.
 
1140
</para>
 
1141
<para>
 
1142
The list of criteria must be in the same format as for rhythmdb_query_parse,
 
1143
and ended by RHYTHMDB_QUERY_END.</para>
 
1144
<para>
 
1145
 
 
1146
</para><variablelist role="params">
 
1147
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1148
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link> instance
 
1149
</simpara></listitem></varlistentry>
 
1150
<varlistentry><term><parameter>query</parameter>&nbsp;:</term>
 
1151
<listitem><simpara> a query.
 
1152
</simpara></listitem></varlistentry>
 
1153
<varlistentry><term><parameter>...</parameter>&nbsp;:</term>
 
1154
<listitem><simpara>
 
1155
 
 
1156
 
 
1157
</simpara></listitem></varlistentry>
 
1158
</variablelist></refsect2>
 
1159
<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>
 
1162
<para>
 
1163
Frees the query <parameter>query</parameter></para>
 
1164
<para>
 
1165
 
 
1166
</para><variablelist role="params">
 
1167
<varlistentry><term><parameter>query</parameter>&nbsp;:</term>
 
1168
<listitem><simpara> a query.
 
1169
</simpara></listitem></varlistentry>
 
1170
</variablelist></refsect2>
 
1171
<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>
 
1174
<para>
 
1175
Creates a copy of a query.</para>
 
1176
<para>
 
1177
 
 
1178
</para><variablelist role="params">
 
1179
<varlistentry><term><parameter>array</parameter>&nbsp;:</term>
 
1180
<listitem><simpara> the query to copy.
 
1181
</simpara></listitem></varlistentry>
 
1182
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</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>
 
1185
<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>
 
1190
<para>
 
1191
 
 
1192
</para><variablelist role="params">
 
1193
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1194
<listitem><simpara>
 
1195
</simpara></listitem></varlistentry>
 
1196
<varlistentry><term><parameter>query</parameter>&nbsp;:</term>
 
1197
<listitem><simpara>
 
1198
</simpara></listitem></varlistentry>
 
1199
<varlistentry><term><parameter>node</parameter>&nbsp;:</term>
 
1200
<listitem><simpara>
 
1201
 
 
1202
 
 
1203
</simpara></listitem></varlistentry>
 
1204
</variablelist></refsect2>
 
1205
<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>
 
1209
<para>
 
1210
 
 
1211
</para><variablelist role="params">
 
1212
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1213
<listitem><simpara>
 
1214
</simpara></listitem></varlistentry>
 
1215
<varlistentry><term><parameter>node</parameter>&nbsp;:</term>
 
1216
<listitem><simpara>
 
1217
</simpara></listitem></varlistentry>
 
1218
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
1219
 
 
1220
 
 
1221
</simpara></listitem></varlistentry>
 
1222
</variablelist></refsect2>
 
1223
<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>
 
1227
<para>
 
1228
 
 
1229
</para><variablelist role="params">
 
1230
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1231
<listitem><simpara>
 
1232
</simpara></listitem></varlistentry>
 
1233
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
1234
<listitem><simpara>
 
1235
 
 
1236
 
 
1237
</simpara></listitem></varlistentry>
 
1238
</variablelist></refsect2>
 
1239
<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>
 
1243
<para>
 
1244
 
 
1245
</para><variablelist role="params">
 
1246
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1247
<listitem><simpara>
 
1248
</simpara></listitem></varlistentry>
 
1249
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
1250
<listitem><simpara>
 
1251
 
 
1252
 
 
1253
</simpara></listitem></varlistentry>
 
1254
</variablelist></refsect2>
 
1255
<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>
 
1258
<para>
 
1259
</para>
 
1260
<para>
 
1261
 
 
1262
</para><variablelist role="params">
 
1263
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1264
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
1265
</simpara></listitem></varlistentry>
 
1266
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> whether the <link linkend="RhythmDB"><type>RhythmDB</type></link> has events to process.
 
1267
</simpara></listitem></varlistentry>
 
1268
</variablelist></refsect2>
 
1269
<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>
 
1274
<para>
 
1275
Creates a string containing the "status" information about a list of tracks.</para>
 
1276
<para>
 
1277
 
 
1278
</para><variablelist role="params">
 
1279
<varlistentry><term><parameter>n_songs</parameter>&nbsp;:</term>
 
1280
<listitem><simpara> the number of tracks.
 
1281
</simpara></listitem></varlistentry>
 
1282
<varlistentry><term><parameter>duration</parameter>&nbsp;:</term>
 
1283
<listitem><simpara> the total duration of the tracks.
 
1284
</simpara></listitem></varlistentry>
 
1285
<varlistentry><term><parameter>size</parameter>&nbsp;:</term>
 
1286
<listitem><simpara> the total size of the tracks.
 
1287
</simpara></listitem></varlistentry>
 
1288
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the string, which should be freed with g_free.
 
1289
</simpara></listitem></varlistentry>
 
1290
</variablelist></refsect2>
 
1291
<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>
 
1295
<para>
 
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>
 
1298
<para>
 
1299
 
 
1300
</para><variablelist role="params">
 
1301
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara> the new <link linkend="RhythmDBEntryType"><type>RhythmDBEntryType</type></link>.
 
1302
</simpara></listitem></varlistentry>
 
1303
</variablelist></refsect2>
 
1304
<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>
 
1308
<para>
 
1309
 
 
1310
</para><variablelist role="params">
 
1311
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
1312
 
 
1313
 
 
1314
</simpara></listitem></varlistentry>
 
1315
</variablelist></refsect2>
 
1316
<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>
 
1320
<para>
 
1321
 
 
1322
</para><variablelist role="params">
 
1323
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
1324
 
 
1325
 
 
1326
</simpara></listitem></varlistentry>
 
1327
</variablelist></refsect2>
 
1328
<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>
 
1332
<para>
 
1333
 
 
1334
</para><variablelist role="params">
 
1335
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
1336
 
 
1337
 
 
1338
</simpara></listitem></varlistentry>
 
1339
</variablelist></refsect2>
 
1340
<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>
 
1344
<para>
 
1345
 
 
1346
</para><variablelist role="params">
 
1347
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1348
<listitem><simpara>
 
1349
</simpara></listitem></varlistentry>
 
1350
<varlistentry><term><parameter>property_id</parameter>&nbsp;:</term>
 
1351
<listitem><simpara>
 
1352
</simpara></listitem></varlistentry>
 
1353
<varlistentry><term><emphasis>Returns</emphasis>&nbsp;:</term><listitem><simpara>
 
1354
 
 
1355
 
 
1356
</simpara></listitem></varlistentry>
 
1357
</variablelist></refsect2>
 
1358
<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>
 
1362
<para>
 
1363
Increase the reference count of the entry.</para>
 
1364
<para>
 
1365
 
 
1366
</para><variablelist role="params">
 
1367
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1368
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
1369
</simpara></listitem></varlistentry>
 
1370
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
1371
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
 
1372
</simpara></listitem></varlistentry>
 
1373
</variablelist></refsect2>
 
1374
<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>
 
1378
<para>
 
1379
Decrease the reference count of the entry, and destroy it if there are
 
1380
no references left.</para>
 
1381
<para>
 
1382
 
 
1383
</para><variablelist role="params">
 
1384
<varlistentry><term><parameter>db</parameter>&nbsp;:</term>
 
1385
<listitem><simpara> a <link linkend="RhythmDB"><type>RhythmDB</type></link>.
 
1386
</simpara></listitem></varlistentry>
 
1387
<varlistentry><term><parameter>entry</parameter>&nbsp;:</term>
 
1388
<listitem><simpara> a <link linkend="RhythmDBEntry"><type>RhythmDBEntry</type></link>.
 
1389
</simpara></listitem></varlistentry>
 
1390
</variablelist></refsect2>
 
1391
 
 
1392
</refsect1>
 
1393
 
 
1394
 
 
1395
 
 
1396
 
 
1397
</refentry>