foobar2000 SDK  2015-01-14
Public Member Functions
dead_item_filterabstract

#include <input_helpers.h>

+ Inheritance diagram for dead_item_filter:

Public Member Functions

virtual void on_progress (t_size p_position, t_size p_total)=0
 
bool run (const pfc::list_base_const_t< metadb_handle_ptr > &p_list, bit_array_var &p_mask)
 

Detailed Description

Definition at line 69 of file input_helpers.h.

Member Function Documentation

virtual void dead_item_filter::on_progress ( t_size  p_position,
t_size  p_total 
)
pure virtual
bool dead_item_filter::run ( const pfc::list_base_const_t< metadb_handle_ptr > &  p_list,
bit_array_var p_mask 
)

Definition at line 179 of file input_helpers.cpp.

179  {
181  path_list.init_from_list(p_list);
182  metadb_handle_list valid_handles;
183  static_api_ptr_t<metadb> l_metadb;
184  for(t_size pathidx=0;pathidx<path_list.get_count();pathidx++)
185  {
186  if (is_aborting()) return false;
187  on_progress(pathidx,path_list.get_count());
188 
189  const char * path = path_list[pathidx];
190 
191  if (filesystem::g_is_remote_safe(path)) {
192  metadb_handle_ptr temp;
193  l_metadb->handle_create(temp,make_playable_location(path,0));
194  valid_handles.add_item(temp);
195  } else {
196  try {
198 
199  input_entry::g_open_for_info_read(reader,0,path,*this);
200  t_uint32 count = reader->get_subsong_count();
201  for(t_uint32 n=0;n<count && !is_aborting();n++) {
202  metadb_handle_ptr ptr;
203  t_uint32 index = reader->get_subsong(n);
204  l_metadb->handle_create(ptr,make_playable_location(path,index));
205  valid_handles.add_item(ptr);
206  }
207  } catch(...) {}
208  }
209  }
210 
211  if (is_aborting()) return false;
212 
213  valid_handles.sort_by_pointer();
214  for(t_size listidx=0;listidx<p_list.get_count();listidx++) {
215  bool dead = valid_handles.bsearch_by_pointer(p_list[listidx]) == ~0;
216  if (dead) console::formatter() << "Dead item: " << p_list[listidx];
217  p_mask.set(listidx,dead);
218  }
219  return !is_aborting();
220 }
Usage: console::formatter() << "blah " << somenumber << " asdf" << somestring;.
Definition: console.h:17
static void g_open_for_info_read(service_ptr_t< input_info_reader > &p_instance, service_ptr_t< file > p_filehint, const char *p_path, abort_callback &p_abort, bool p_from_redirect=false)
Definition: input.cpp:175
virtual void set(t_size n, bool val)=0
size_t t_size
Definition: int_types.h:48
t_size add_item(const T &item)
Definition: list.h:522
virtual t_size get_count() const =0
void init_from_list(const list_base_const_t< metadb_handle_ptr > &p_list)
virtual void on_progress(t_size p_position, t_size p_total)=0
t_size bsearch_by_pointer(const metadb_handle_ptr &val) const
Helper template used to easily access core services. Usage: static_api_ptr_t api; api->doso...
Definition: service.h:533
uint32_t t_uint32
Definition: int_types.h:5

The documentation for this class was generated from the following files: