~ubuntu-branches/ubuntu/maverick/xmms2/maverick

1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
1
#include "perl_xmmsclient.h"
2
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
3
MODULE = Audio::XMMSClient::Collection	PACKAGE = Audio::XMMSClient::Collection	PREFIX = xmmsv_coll_
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
4
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
5
=head1 NAME
6
7
Audio::XMMSClient::Collection - Media collections for Audio::XMMSClient
8
9
=head1 SYNOPSIS
10
11
  use Audio::XMMSClient;
12
13
  my $coll = Audio::XMMSClient::Collection->new('match', {
14
          artist => 'Solche',
15
  });
16
17
=head1 METHODS
18
19
=head2 new
20
21
=over 4
22
23
=item Arguments: $type, \%attributes?
24
25
=item Arguments: $type, %attributes?
26
27
=item Return Value: $collection
28
29
=back
30
31
  my $coll = Audio::XMMSClient::Collection->new('match', {
32
          artist => 'Solche',
33
  });
34
35
Create a new collection instance of type C<$type>. Also sets the
36
collections C<%attributes>, if given.
37
38
=cut
39
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
40
xmmsv_coll_t *
41
xmmsv_coll_new (class, type, ...)
42
		xmmsv_coll_type_t type
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
43
	PREINIT:
44
		int i, nargs;
45
		HV *args;
46
		HE *iter;
47
	CODE:
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
48
		RETVAL = xmmsv_coll_new (type);
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
49
50
		nargs = items - 2;
51
		if (nargs == 1) {
52
			if (!SvOK (ST (2)) || !SvROK (ST (2)) || !(SvTYPE (SvRV (ST (2))) == SVt_PVHV))
53
				croak ("expected hash reference or hash");
54
55
			args = (HV *)SvRV (ST (2));
56
57
			hv_iterinit (args);
58
			while ((iter = hv_iternext (args))) {
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
59
				xmmsv_coll_attribute_set (RETVAL, HePV (iter, PL_na), SvPV_nolen (HeVAL (iter)));
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
60
			}
61
		}
62
		else {
63
			if (nargs % 2 != 0)
64
				croak ("expected even number of attributes/values");
65
66
			for (i = 2; i <= nargs; i += 2) {
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
67
				xmmsv_coll_attribute_set (RETVAL, SvPV_nolen (ST (i)), SvPV_nolen (ST (i+1)));
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
68
			}
69
		}
70
	OUTPUT:
71
		RETVAL
72
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
73
=head2 parse
74
75
=over 4
76
77
=item Arguments: $pattern
78
79
=item Return Value: $collection
80
81
=back
82
83
  my $coll = Audio::XMMSClient::Collection->parse("artist:Solche +compilation");
84
85
Try to parse the given C<$pattern> to produce a collection structure.
86
87
=cut
88
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
89
xmmsv_coll_t *
90
xmmsv_coll_parse (class, const char *pattern)
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
91
	PREINIT:
92
		int ret;
93
	CODE:
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
94
		ret = xmmsv_coll_parse (pattern, &RETVAL);
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
95
	POSTCALL:
96
		if (RETVAL == 0)
97
			XSRETURN_UNDEF;
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
98
	OUTPUT:
99
		RETVAL
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
100
101
void
102
DESTROY (coll)
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
103
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
104
	CODE:
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
105
		xmmsv_coll_unref (coll);
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
106
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
107
=head2 set_idlist
108
109
=over 4
110
111
=item Arguments: @ids
112
113
=item Return Value: none
114
115
=back
116
117
  $coll->set_idlist(qw/1 42 1337/);
118
119
Set the list of ids in the given collection. Note that the idlist is only
120
relevant for idlist collections.
121
122
=cut
123
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
124
void
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
125
xmmsv_coll_set_idlist (coll, ...)
126
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
127
	PREINIT:
128
		int i;
129
		unsigned int *ids;
130
	INIT:
131
		ids = (unsigned int *)malloc (sizeof (unsigned int) * items);
132
133
		for (i = 0; i < items - 1; i++) {
134
			ids[i] = SvUV (ST (i + 1));
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
135
			if (ids[i] == 0) {
136
				free (ids);
137
				croak("0 is an invalid mlib id");
138
			}
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
139
		}
140
141
		ids[items - 1] = 0;
142
	C_ARGS:
143
		coll, ids
144
	CLEANUP:
145
		free (ids);
146
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
147
=head2 add_operand
148
149
=over 4
150
151
=item Arguments: $operand
152
153
=item Return Value: none
154
155
=back
156
157
  $coll->add_operand($other_coll);
158
159
Add the C<$operand> to a given collection.
160
161
=cut
162
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
163
void
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
164
xmmsv_coll_add_operand (coll, op)
165
		xmmsv_coll_t *coll
166
		xmmsv_coll_t *op
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
167
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
168
=head2 remove_operand
169
170
=over 4
171
172
=item Arguments: $operand
173
174
=item Return Value: none
175
176
=back
177
178
  $coll->remove_operand($other_coll);
179
180
Remove all the occurences of the C<$operand> in the given collection.
181
182
=cut
183
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
184
void
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
185
xmmsv_coll_remove_operand (coll, op)
186
		xmmsv_coll_t *coll
187
		xmmsv_coll_t *op
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
188
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
189
=head2 idlist_append
190
191
=over 4
192
193
=item Arguments: $id
194
195
=item Return Value: $success
196
197
=back
198
199
  my $success = $coll->idlist_append(5);
200
201
Append an C<$id> to the idlist.
202
203
=cut
204
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
205
int
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
206
xmmsv_coll_idlist_append (coll, id)
207
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
208
		unsigned int id
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
209
	INIT:
210
		if (id == 0) {
211
			croak ("0 is an invalid mlib id");
212
		}
213
214
=head2 idlist_insert
215
216
=over 4
217
218
=item Arguments: $index, $id
219
220
=item Return Value: $success
221
222
=back
223
224
  my $success = $coll->idlist_insert(42, 2);
225
226
Insert an C<$id> at a given C<$index> in the idlist.
227
228
=cut
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
229
230
int
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
231
xmmsv_coll_idlist_insert (coll, index, id)
232
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
233
		unsigned int index
234
		unsigned int id
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
235
	INIT:
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
236
		if (index > xmmsv_coll_idlist_get_size (coll)) {
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
237
			croak ("inserting id after end of idlist");
238
		}
239
240
		if (id == 0) {
241
			croak ("0 is an invalid mlib id");
242
		}
243
244
=head2 idlist_move
245
246
=over 4
247
248
=item Arguments: $from, $to
249
250
=item Return Value: $success
251
252
=back
253
254
  my $success = $coll->idlist_move(0, 3);
255
256
Move a value of the idlist to a new position.
257
258
=cut
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
259
260
int
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
261
xmmsv_coll_idlist_move (coll, from, to)
262
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
263
		unsigned int from
264
		unsigned int to
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
265
	PREINIT:
266
		size_t idlist_len;
267
	INIT:
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
268
		idlist_len = xmmsv_coll_idlist_get_size (coll);
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
269
270
		if (from > idlist_len) {
271
			croak ("trying to move id from after the idlists end");
272
		}
273
274
		if (to >= idlist_len) {
275
			croak ("trying to move id to after the idlists end");
276
		}
277
278
=head2 idlist_clear
279
280
=over 4
281
282
=item Arguments: none
283
284
=item Return Value: $success
285
286
=back
287
288
  my $success = $coll->idlist_clear;
289
290
Empties the idlist.
291
292
=cut
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
293
294
int
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
295
xmmsv_coll_idlist_clear (coll)
296
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
297
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
298
=head2 idlist_get_index
299
300
=over 4
301
302
=item Arguments: $index
303
304
=item Return Value: $value | undef
305
306
=back
307
308
  my $value = $coll->idlist_get_index(2);
309
310
Retrieves the value at the given C<$index> in the idlist.
311
312
=cut
313
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
314
NO_OUTPUT int
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
315
xmmsv_coll_idlist_get_index (xmmsv_coll_t *coll, unsigned int index, OUTLIST uint32_t val)
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
316
	INIT:
317
		PERL_UNUSED_VAR (targ);
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
318
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
319
		if (index > xmmsv_coll_idlist_get_size (coll)) {
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
320
			croak ("trying to get an id from behind the idlists end");
321
		}
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
322
	POSTCALL:
323
		if (RETVAL == 0)
324
			XSRETURN_UNDEF;
325
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
326
=head2 idlist_set_index
327
328
=over 4
329
330
=item Arguments: $index, $value
331
332
=item Return Value: $success
333
334
=back
335
336
  my $success = $coll->idlist_set_index(3, 1);
337
338
Sets the C<$value> at the given C<$index> in the idlist.
339
340
=cut
341
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
342
int
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
343
xmmsv_coll_idlist_set_index (coll, index, val)
344
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
345
		unsigned int index
346
		uint32_t val
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
347
	PREINIT:
348
		size_t idlist_len;
349
	INIT:
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
350
		idlist_len = xmmsv_coll_idlist_get_size (coll);
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
351
		if (idlist_len == 0 || index > idlist_len - 1) {
352
			croak ("trying to set an id after the end of the idlist");
353
		}
354
355
=head2 idlist_get_size
356
357
=over 4
358
359
=item Arguments: none
360
361
=item Return Value: $size
362
363
=back
364
365
  my $size = $coll->idlist_get_size;
366
367
Get the size of the idlist.
368
369
=cut
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
370
371
size_t
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
372
xmmsv_coll_idlist_get_size (coll)
373
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
374
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
375
=head2 get_type
376
377
=over 4
378
379
=item Arguments: none
380
381
=item Return Value: $type
382
383
=back
384
385
  my $type = $coll->get_type;
386
387
Return the type of the collection. Valid types are "reference", "union",
388
"intersection", "complement", "has", "equals", "match", "smaller", "greater",
389
"idlist", "queue", "partyshuffle".
390
391
=cut
392
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
393
xmmsv_coll_type_t
394
xmmsv_coll_get_type (coll)
395
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
396
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
397
=head2 get_idlist
398
399
=over 4
400
401
=item Arguments: none
402
403
=item Return Value: @ids
404
405
=back
406
407
  my @ids = $coll->get_idlist;
408
409
Return the list of ids stored in the collection. Note that this must not be
410
confused with the content of the collection, which must be queried using
411
L<Audio::XMMSClient/coll_query_ids>.
412
413
=cut
414
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
415
void
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
416
xmmsv_coll_get_idlist (coll)
417
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
418
	PREINIT:
419
		uint32_t *ret;
420
		size_t size;
421
		unsigned int i = 0;
422
	PPCODE:
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
423
		ret = xmmsv_coll_get_idlist (coll);
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
424
425
		if (ret == NULL)
426
			XSRETURN_UNDEF;
427
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
428
		size = xmmsv_coll_idlist_get_size (coll);
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
429
		EXTEND (sp, size);
430
431
		while (ret[i] != 0) {
432
			PUSHs (sv_2mortal (newSVuv (ret[i])));
433
			++i;
434
		}
435
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
436
=head2 operands
437
438
=over 4
439
440
=item Arguments: none
441
442
=item Return Value: @operands
443
444
=back
445
446
  my @operands = $coll->operands;
447
448
Get a list of operands of the collection.
449
450
=cut
451
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
452
void
453
operands (coll)
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
454
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
455
	ALIAS:
456
		operand_list = 1
457
	PREINIT:
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
458
		xmmsv_t *operands_list;
459
		xmmsv_list_iter_t *it;
460
		xmmsv_t *value;
461
		xmmsv_coll_t *op;
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
462
	PPCODE:
463
		PERL_UNUSED_VAR (ix);
464
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
465
		operands_list = xmmsv_coll_operands_get (coll);
466
467
		for (xmmsv_get_list_iter (operands_list, &it);
468
		     xmmsv_list_iter_entry (it, &value);
469
		     xmmsv_list_iter_next (it)) {
470
			xmmsv_get_coll (value, &op);
471
			xmmsv_coll_ref (op);
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
472
			XPUSHs (sv_2mortal (perl_xmmsclient_new_sv_from_ptr (op, "Audio::XMMSClient::Collection")));
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
473
		}
474
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
475
		xmmsv_list_iter_explicit_destroy (it);
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
476
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
477
=head2 attribute_set
478
479
=over 4
480
481
=item Arguments: $key, $value
482
483
=item Return Value: none
484
485
=back
486
487
  $coll->attribute_set(field => 'artist');
488
489
Set an attribute C<$key> to C<$value> in the given collection.
490
491
=cut
492
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
493
void
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
494
xmmsv_coll_attribute_set (coll, key, value)
495
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
496
		const char *key
497
		const char *value
498
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
499
=head2 attribute_remove
500
501
=over 4
502
503
=item Arguments: $key
504
505
=item Return Value: $success
506
507
=back 
508
509
  my $success = $coll->attribute_remove;
510
511
Remove an attribute C<$key> from the given collection. The return value
512
indicated whether the attribute was found (and removed).
513
514
=cut
515
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
516
int
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
517
xmmsv_coll_attribute_remove (coll, key)
518
		xmmsv_coll_t *coll
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
519
		const char *key
520
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
521
=head2 attribute_get
522
523
=over 4
524
525
=item Arguments: $key
526
527
=item Return Value: $value | undef
528
529
=back
530
531
  my $value = $coll->attribute_get('field');
532
533
Retrieve the C<$value> of the attribute C<$key> of the given collection. 
534
535
=cut
536
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
537
NO_OUTPUT int
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
538
xmmsv_coll_attribute_get (xmmsv_coll_t *coll, const char *key, OUTLIST char *val)
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
539
	INIT:
540
		PERL_UNUSED_VAR (targ);
541
	POSTCALL:
542
		if (RETVAL == 0)
543
			XSRETURN_UNDEF;
544
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
545
=head2 attribute_list
546
547
=over 4
548
549
=item Arguments: none
550
551
=item Return Value: %attributes
552
553
=back
554
555
  my %attributes = $coll->attributes_list;
556
557
Get a hash of all C<%attributes> of the given collection.
558
559
=cut
560
561
void
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
562
xmmsv_coll_attribute_list (xmmsv_coll_t *coll)
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
563
	PREINIT:
1.2.3 by Benjamin Drung
Import upstream version 0.7DrNo
564
		xmmsv_dict_iter_t *it;
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
565
		const char *key;
566
		const char *value;
567
	PPCODE:
1.2.3 by Benjamin Drung
Import upstream version 0.7DrNo
568
		xmmsv_get_dict_iter (xmmsv_coll_attributes_get (coll), &it);
569
570
		for (xmmsv_dict_iter_first (it);
571
		     xmmsv_dict_iter_valid (it);
572
		     xmmsv_dict_iter_next (it)) {
573
574
			xmmsv_dict_iter_pair_string (it, &key, &value);
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
575
576
			EXTEND (sp, 2);
577
			mPUSHp (key, strlen (key));
578
			mPUSHp (value, strlen (value));
579
		}
580
1.2.3 by Benjamin Drung
Import upstream version 0.7DrNo
581
		xmmsv_dict_iter_explicit_destroy (it);
582
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
583
=head2 universe
584
585
=over 4
586
587
=item Arguments: none
588
589
=item Return Value: $collection
590
591
=back
592
593
  my $universe = Audio::XMMSClient::Collection->universe;
594
595
Returns a collection referencing the whole media library, i.e. the "All Media"
596
collection.
597
598
=cut
599
1.2.2 by Florian Ragwitz
Import upstream version 0.6DrMattDestruction
600
xmmsv_coll_t *
601
xmmsv_coll_universe (class="optional")
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
602
	C_ARGS:
603
		/* void */
604
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
605
=head1 AUTHOR
606
607
Florian Ragwitz <rafl@debian.org>
608
609
=head1 SEE ALSO
610
611
L<Audio::XMMSClient>
612
613
=head1 COPYRIGHT AND LICENSE
614
1.2.1 by Florian Ragwitz
Import upstream version 0.5DrLecter
615
Copyright (C) 2006-2008, Florian Ragwitz
1.1.4 by Benjamin Drung
Import upstream version 0.4DrKosmos
616
617
This library is free software; you can redistribute it and/or modify it under
618
the same terms as Perl itself, either Perl version 5.8.8 or, at your option,
619
any later version of Perl 5 you may have available.
620
621
=cut
622
1.1.3 by Zak B. Elep
Import upstream version 0.2DrJekyll
623
BOOT:
624
	PERL_UNUSED_VAR (items);