Class: RbPod::TrackCollection
- Inherits:
-
Object
- Object
- RbPod::TrackCollection
- Defined in:
- ext/rbpod/track_collection.c
Instance Method Summary collapse
-
#include?(track) ⇒ Boolean
Determines if the given RbPod::Track
trackis within this playlist. -
#initialize(playlist) ⇒ RbPod::TrackCollection
constructor
Given an RbPod::Playlist
playlist, returns a collection of tracks within the playlist. -
#insert(track, position = -1) ⇒ nil
(also: #<<)
Adds a given RbPod::Track
trackto the playlist atposition. -
#playlist ⇒ RbPod::Playlist
Returns the playlist this track collection is attached to.
-
#remove(track) ⇒ nil
Removes a given RbPod::Track
trackfrom the playlist. -
#size ⇒ Integer
Returns the total number of tracks in this playlist.
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.
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.
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; } |
#playlist ⇒ RbPod::Playlist
Returns the playlist this track collection is attached to.
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.
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; } |
#size ⇒ Integer
Returns the total number of tracks in this playlist.
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)); } |