metadb_io_hintlist.h

Go to the documentation of this file.
00001 
00002 class metadb_io_hintlist {
00003 public:
00004         void hint_reader(service_ptr_t<input_info_reader> p_reader, const char * p_path,abort_callback & p_abort);
00005         void add(metadb_handle_ptr const & p_handle,const file_info & p_info,t_filestats const & p_stats,bool p_fresh);
00006         void run();
00007 private:
00008         struct t_entry {
00009                 metadb_handle_ptr m_handle;
00010                 pfc::rcptr_t<file_info_const_impl> m_info;
00011                 t_filestats m_stats;
00012                 bool m_fresh;
00013         };
00014         class metadb_io_hintlist_wrapper_part1 : public pfc::list_base_const_t<metadb_handle_ptr> {
00015         public:
00016                 metadb_io_hintlist_wrapper_part1(const pfc::list_base_const_t<metadb_io_hintlist::t_entry> & p_list) : m_list(p_list) {}
00017                 t_size get_count() const {return m_list.get_count();}
00018                 void get_item_ex(metadb_handle_ptr & p_out, t_size n) const {p_out = m_list[n].m_handle;}
00019 
00020         private:
00021                 const pfc::list_base_const_t<metadb_io_hintlist::t_entry> & m_list;
00022         };
00023         class metadb_io_hintlist_wrapper_part2 : public pfc::list_base_const_t<const file_info*> {
00024         public:
00025                 metadb_io_hintlist_wrapper_part2(const pfc::list_base_const_t<metadb_io_hintlist::t_entry> & p_list) : m_list(p_list) {}
00026                 t_size get_count() const {return m_list.get_count();}
00027                 void get_item_ex(const file_info* & p_out, t_size n) const {p_out = &*m_list[n].m_info;}
00028         private:
00029                 const pfc::list_base_const_t<metadb_io_hintlist::t_entry> & m_list;
00030         };
00031         class metadb_io_hintlist_wrapper_part3 : public pfc::list_base_const_t<t_filestats> {
00032         public:
00033                 metadb_io_hintlist_wrapper_part3(const pfc::list_base_const_t<metadb_io_hintlist::t_entry> & p_list) : m_list(p_list) {}
00034                 t_size get_count() const {return m_list.get_count();}
00035                 void get_item_ex(t_filestats & p_out, t_size n) const {p_out = m_list[n].m_stats;}
00036         private:
00037                 const pfc::list_base_const_t<metadb_io_hintlist::t_entry> & m_list;
00038         };
00039         class metadb_io_hintlist_wrapper_part4 : public bit_array {
00040         public:
00041                 metadb_io_hintlist_wrapper_part4(const pfc::list_base_const_t<metadb_io_hintlist::t_entry> & p_list) : m_list(p_list) {}
00042                 bool get(t_size n) const {return m_list[n].m_fresh;}
00043         private:
00044                 const pfc::list_base_const_t<metadb_io_hintlist::t_entry> & m_list;
00045         };
00046 
00047         pfc::list_t<t_entry,pfc::alloc_fast> m_entries;
00048 };
00049 

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