void filelist_move(struct filelist *filelist, struct filelist *from) { guint i; for (i = 0; i < filelist_length(from); ++i) g_ptr_array_add(filelist->entries, g_ptr_array_index(from->entries, i)); g_ptr_array_set_size(from->entries, 0); }
void filelist_free( FILELIST * list ) { FILELISTITER iter; if ( filelist_empty( list ) ) return; while ( filelist_length( list ) ) filelist_pop_front( list ); #ifdef BJAM_NO_MEM_CACHE BJAM_FREE( list ); #endif }
void filelist_free(struct filelist *filelist) { guint i; for (i = 0; i < filelist_length(filelist); ++i) { struct filelist_entry *entry = filelist_get(filelist, i); if (entry->entity) mpd_entity_free(entry->entity); g_slice_free(struct filelist_entry, entry); } g_ptr_array_free(filelist->entries, TRUE); g_free(filelist); }
void filelist_no_duplicates(struct filelist *filelist) { for (int i = filelist_length(filelist) - 1; i >= 0; --i) { struct filelist_entry *entry = filelist_get(filelist, i); const struct mpd_song *song; if (entry->entity == NULL || mpd_entity_get_type(entry->entity) != MPD_ENTITY_TYPE_SONG) continue; song = mpd_entity_get_song(entry->entity); if (filelist_find_song(filelist, song) < i) { g_ptr_array_remove_index(filelist->entries, i); mpd_entity_free(entry->entity); g_slice_free(struct filelist_entry, entry); } } }
int filelist_find_directory(struct filelist *filelist, const char *name) { guint i; assert(name != NULL); for (i = 0; i < filelist_length(filelist); ++i) { struct filelist_entry *entry = filelist_get(filelist, i); const struct mpd_entity *entity = entry->entity; if (entity != NULL && mpd_entity_get_type(entity) == MPD_ENTITY_TYPE_DIRECTORY && strcmp(mpd_directory_get_path(mpd_entity_get_directory(entity)), name) == 0) return i; } return -1; }
int filelist_find_song(struct filelist *fl, const struct mpd_song *song) { guint i; assert(song != NULL); for (i = 0; i < filelist_length(fl); ++i) { struct filelist_entry *entry = filelist_get(fl, i); const struct mpd_entity *entity = entry->entity; if (entity != NULL && mpd_entity_get_type(entity) == MPD_ENTITY_TYPE_SONG) { const struct mpd_song *song2 = mpd_entity_get_song(entity); if (same_song(song, song2)) return i; } } return -1; }