| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | #ifndef NULLSOFT_ML_PLAYLISTS_PLAYLIST_H#define NULLSOFT_ML_PLAYLISTS_PLAYLIST_H#include "playlist/ifc_playlist.h"#include "bfc/multipatch.h"#include "playlist/pl_entry.h"#include "playlist/ifc_playlistloadercallback.h"enum{ 	patch_playlist, 	patch_playlistloadercallback};class Playlist : public MultiPatch<patch_playlist, ifc_playlist>, public MultiPatch<patch_playlistloadercallback, ifc_playlistloadercallback>{public:	Playlist()                                                        {}	virtual ~Playlist();	void           Clear();	void           OnFile( const wchar_t *filename, const wchar_t *title, int lengthInMS, ifc_plentryinfo *info );		void           AppendWithInfo( const wchar_t *filename, const wchar_t *title, int lengthInMS );	void           AppendWithInfo( const wchar_t *filename, const wchar_t *title, int lengthInMS, std::map<std::wstring, std::wstring> &p_extended_infos );	size_t         GetNumItems();	size_t         GetItem( size_t item, wchar_t *filename, size_t filenameCch );	size_t         GetItemTitle( size_t item, wchar_t *title, size_t titleCch );	const wchar_t *ItemTitle( size_t item );	const wchar_t *ItemName( size_t item );	int            GetItemLengthMilliseconds( size_t item ); // TODO: maybe microsecond for better resolution?	size_t         GetItemExtendedInfo( size_t item, const wchar_t *metadata, wchar_t *info, size_t infoCch );	bool           IsCached( size_t item );	bool           IsLocal( size_t item );	void           ClearCache( size_t item );	void           SetItemFilename( size_t item, const wchar_t *filename );	void           SetItemTitle( size_t item, const wchar_t *title );	void           SetItemLengthMilliseconds( size_t item, int length );	int            Reverse();	int            Swap( size_t item1, size_t item2 );	int            Randomize( int ( *generator )( ) );	void           Remove( size_t item );	int            SortByTitle();	int            SortByFilename();	int            SortByDirectory(); //sorts by directory and then by filename	void           InsertPlaylist( Playlist ©, size_t index );	void           AppendPlaylist( Playlist © );protected:	RECVS_MULTIPATCH;public:	typedef std::vector<pl_entry*> PlaylistEntries;	PlaylistEntries entries;	uint64_t        lengthInMS = 0;};#endif // !NULLSOFT_ML_PLAYLISTS_PLAYLIST_H
 |