autoplaylist.h

Go to the documentation of this file.
00001 
00011 enum {
00013         autoplaylist_flag_sort  = 1 << 0,
00014 };
00018 class NOVTABLE autoplaylist_client : public service_base {
00019 public:
00020         virtual GUID get_guid() = 0;
00022         virtual void filter(metadb_handle_list_cref data, bool * out) = 0;
00024         virtual bool sort(const pfc::list_base_const_t<metadb_handle_ptr> & p_items,t_size * p_orderbuffer) = 0;
00026         virtual void get_configuration(stream_writer * p_stream,abort_callback & p_abort) = 0;
00027 
00028         virtual void show_ui(t_size p_source_playlist) = 0;
00029 
00031         template<typename t_array> void get_configuration(t_array & p_out) {
00032                 pfc::static_assert<sizeof(p_out[0]) == 1>();
00033                 typedef pfc::array_t<t_uint8,pfc::alloc_fast_aggressive> t_temp; t_temp temp;
00034                 get_configuration(&stream_writer_buffer_append_ref_t<t_temp>(temp),abort_callback_impl());
00035                 p_out = temp;
00036         }
00037 
00038 
00039         FB2K_MAKE_SERVICE_INTERFACE(autoplaylist_client,service_base)
00040 };
00041 
00042 typedef service_ptr_t<autoplaylist_client> autoplaylist_client_ptr;
00043 
00047 class NOVTABLE autoplaylist_client_factory : public service_base {
00048 public:
00050         virtual GUID get_guid() = 0;
00052         virtual autoplaylist_client_ptr instantiate(stream_reader * p_stream,t_size p_sizehint,abort_callback & p_abort) = 0;
00053 
00054         FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(autoplaylist_client_factory)
00055 };
00056 
00057 PFC_DECLARE_EXCEPTION(exception_autoplaylist,pfc::exception,"Autoplaylist error")
00058 
00059 PFC_DECLARE_EXCEPTION(exception_autoplaylist_already_owned,exception_autoplaylist,"This playlist is already an autoplaylist")
00060 PFC_DECLARE_EXCEPTION(exception_autoplaylist_not_owned,exception_autoplaylist,"This playlist is not an autoplaylist")
00061 PFC_DECLARE_EXCEPTION(exception_autoplaylist_lock_failure,exception_autoplaylist,"Playlist could not be locked")
00062 
00063 
00067 class NOVTABLE autoplaylist_manager : public service_base {
00068 public:
00071         virtual void add_client(autoplaylist_client_ptr p_client,t_size p_playlist,t_uint32 p_flags) = 0;
00072         virtual bool is_client_present(t_size p_playlist) = 0;
00074         virtual autoplaylist_client_ptr query_client(t_size p_playlist) = 0;
00075         virtual void remove_client(t_size p_playlist) = 0;
00079         virtual void add_client_simple(const char * p_query,const char * p_sort,t_size p_playlist,t_uint32 p_flags) = 0;
00080 
00081         FB2K_MAKE_SERVICE_INTERFACE_ENTRYPOINT(autoplaylist_manager)
00082 };

Generated on Fri Apr 25 18:49:34 2008 for foobar2000 SDK by  doxygen 1.5.5