Class: RbPod::TrackCollection

Inherits:
Object
  • Object
show all
Defined in:
ext/rbpod/track_collection.c

Instance Method Summary collapse

Constructor Details

#initialize(playlist) ⇒ RbPod::TrackCollection

Given an RbPod::Playlist playlist, returns a collection of tracks within the playlist.



118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'ext/rbpod/track_collection.c', line 118

static VALUE rbpod_track_collection_initialize(VALUE self, VALUE playlist)
{
    Itdb_Playlist *_playlist = TYPED_DATA_PTR(playlist, Itdb_Playlist);

    if (rb_obj_is_instance_of(playlist, cRbPodPlaylist) == FALSE) {
        rb_raise(eRbPodError, "Invalid Arguments: Expected RbPod::Playlist, got %s", StringValueCStr(playlist));
        return Qnil;
    }

    rb_iv_set(self, "@playlist", playlist);

    DATA_PTR(self) = _playlist->members;

    return self;
}

Instance Method Details

#include?(track) ⇒ Boolean

Determines if the given RbPod::Track track is within this playlist.

Returns:

  • (Boolean)


29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'ext/rbpod/track_collection.c', line 29

static VALUE rbpod_track_collection_include(VALUE self, VALUE track)
{
    VALUE playlist = rbpod_track_collection_playlist(self);
    Itdb_Playlist *_playlist = TYPED_DATA_PTR(playlist, Itdb_Playlist);
    Itdb_Track *_track = TYPED_DATA_PTR(track, Itdb_Track);

    if (rb_obj_is_instance_of(track, cRbPodTrack) == FALSE) {
        rb_raise(eRbPodError, "Invalid Arguments: Expected RbPod::Track, got %s", StringValueCStr(playlist));
        return Qnil;
    }

    return BooleanValue(itdb_playlist_contains_track(_playlist, _track));
}

#insert(track, position = -1) ⇒ nil Also known as: <<

Adds a given RbPod::Track track to the playlist at position. If position was not supplied, track will be appended to the end of the playlist.

Returns:

  • (nil)


72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'ext/rbpod/track_collection.c', line 72

static VALUE rbpod_track_collection_insert(int argc, VALUE *argv, VALUE self)
{
    VALUE playlist = rbpod_track_collection_playlist(self);
    Itdb_Playlist *_playlist = TYPED_DATA_PTR(playlist, Itdb_Playlist);
    VALUE track = Qnil, position = Qnil;
    Itdb_Track *_track = NULL;
    gint32 _position = 0;

    if (rb_scan_args(argc, argv, "11", &track, &position) < 1) {
        rb_raise(eRbPodError, "Invalid arguments: Expected >= 1 argument!");
        return Qnil;
    }

    _track    = TYPED_DATA_PTR(track, Itdb_Track);
    _position = NIL_P(position) ? -1 : NUM2INT(position);

    /* We we given a track? */
    if (rb_obj_is_instance_of(track, cRbPodTrack) == FALSE) {
        rb_raise(eRbPodError, "Invalid argument: expected RbPod::Track, got %s", StringValueCStr(playlist));
        return Qnil;
    }

    itdb_playlist_add_track(_playlist, _track, _position);

    return Qnil;
}

#playlistRbPod::Playlist

Returns the playlist this track collection is attached to.

Returns:



11
12
13
14
15
16
17
18
19
20
21
# File 'ext/rbpod/track_collection.c', line 11

static VALUE rbpod_track_collection_playlist(VALUE self)
{
    VALUE playlist = rb_iv_get(self, "@playlist");

    if (rb_obj_is_instance_of(playlist, cRbPodPlaylist) == FALSE) {
        rb_raise(eRbPodError, "Invalid Arguments: Expected RbPod::Playlist, got %s", StringValueCStr(playlist));
        return Qnil;
    }

    return playlist;
}

#remove(track) ⇒ nil

Removes a given RbPod::Track track from the playlist.

Returns:

  • (nil)


49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'ext/rbpod/track_collection.c', line 49

static VALUE rbpod_track_collection_remove(VALUE self, VALUE track)
{
    VALUE playlist = rbpod_track_collection_playlist(self);
    Itdb_Playlist *_playlist = TYPED_DATA_PTR(playlist, Itdb_Playlist);
    Itdb_Track *_track = TYPED_DATA_PTR(track, Itdb_Track);

    if (rb_obj_is_instance_of(track, cRbPodTrack) == FALSE) {
        rb_raise(eRbPodError, "Invalid Arguments: Expected RbPod::Track, got %s", StringValueCStr(playlist));
        return Qnil;
    }

    itdb_playlist_remove_track(_playlist, _track);

    return Qnil;
}

#sizeInteger

Returns the total number of tracks in this playlist.

Returns:

  • (Integer)


105
106
107
108
109
110
# File 'ext/rbpod/track_collection.c', line 105

static VALUE rbpod_track_collection_size(VALUE self)
{
    VALUE playlist = rbpod_track_collection_playlist(self);
    Itdb_Playlist *_playlist = TYPED_DATA_PTR(playlist, Itdb_Playlist);
    return INT2NUM(itdb_playlist_tracks_number(_playlist));
}