foobar2000 SDK  2015-01-14
Public Member Functions | Private Attributes
file_info_filter_impl

#include <metadb.h>

+ Inheritance diagram for file_info_filter_impl:

Public Member Functions

 file_info_filter_impl (const pfc::list_base_const_t< metadb_handle_ptr > &p_list, const pfc::list_base_const_t< const file_info * > &p_new_info)
 
bool apply_filter (metadb_handle_ptr p_location, t_filestats p_stats, file_info &p_info)
 
- Public Member Functions inherited from file_info_filter
 FB2K_MAKE_SERVICE_INTERFACE (file_info_filter, service_base)
 
- Public Member Functions inherited from service_base
template<typename outPtr_t >
bool cast (outPtr_t &outPtr)
 
virtual int service_add_ref ()=0 throw ()
 
virtual bool service_query (service_ptr_t< service_base > &p_out, const GUID &p_guid)
 
template<class T >
bool service_query_t (service_ptr_t< T > &p_out)
 
virtual int service_release ()=0 throw ()
 

Private Attributes

metadb_handle_list m_handles
 
pfc::array_t< file_info_implm_infos
 

Additional Inherited Members

- Public Types inherited from service_base
typedef service_base t_interface
 
- Protected Member Functions inherited from service_base
 service_base ()
 
 ~service_base ()
 

Detailed Description

Helper implementation of file_info_filter_impl.

Definition at line 293 of file metadb.h.

Constructor & Destructor Documentation

file_info_filter_impl::file_info_filter_impl ( const pfc::list_base_const_t< metadb_handle_ptr > &  p_list,
const pfc::list_base_const_t< const file_info * > &  p_new_info 
)
inline

Definition at line 295 of file metadb.h.

295  {
296  FB2K_DYNAMIC_ASSERT(p_list.get_count() == p_new_info.get_count());
297  pfc::array_t<t_size> order;
298  order.set_size(p_list.get_count());
299  order_helper::g_fill(order.get_ptr(),order.get_size());
300  p_list.sort_get_permutation_t(pfc::compare_t<metadb_handle_ptr,metadb_handle_ptr>,order.get_ptr());
301  m_handles.set_count(order.get_size());
302  m_infos.set_size(order.get_size());
303  for(t_size n = 0; n < order.get_size(); n++) {
304  m_handles[n] = p_list[order[n]];
305  m_infos[n] = *p_new_info[order[n]];
306  }
307  }
static void g_fill(t_int *p_order, const t_size p_count)
Definition: order_helper.h:38
void set_count(t_size p_count)
Definition: list.h:315
size_t t_size
Definition: int_types.h:48
void set_size(t_size p_size)
Definition: array.h:104
virtual t_size get_count() const =0
pfc::array_t< file_info_impl > m_infos
Definition: metadb.h:320
void sort_get_permutation_t(t_compare p_compare, t_permutation const &p_permutation) const
Definition: list.h:55
metadb_handle_list m_handles
Definition: metadb.h:319

Member Function Documentation

bool file_info_filter_impl::apply_filter ( metadb_handle_ptr  p_location,
t_filestats  p_stats,
file_info p_info 
)
inlinevirtual

Alters specified file_info entry; called as a part of tag update process. Specified file_info has been read from a file, and will be written back.
WARNING: This will be typically called from another thread than main app thread (precisely, from thread created by tag updater). You should copy all relevant data to members of your file_info_filter instance in constructor and reference only member data in apply_filter() implementation.

Returns
True when you have altered file_info and changes need to be written back to the file; false if no changes have been made.

Implements file_info_filter.

Definition at line 309 of file metadb.h.

309  {
310  t_size index;
311  if (m_handles.bsearch_t(pfc::compare_t<metadb_handle_ptr,metadb_handle_ptr>,p_location,index)) {
312  p_info = m_infos[index];
313  return true;
314  } else {
315  return false;
316  }
317  }
bool bsearch_t(t_compare p_compare, t_param const &p_param, t_size &p_index) const
Definition: list.h:45
size_t t_size
Definition: int_types.h:48
pfc::array_t< file_info_impl > m_infos
Definition: metadb.h:320
metadb_handle_list m_handles
Definition: metadb.h:319

Field Documentation

metadb_handle_list file_info_filter_impl::m_handles
private

Definition at line 319 of file metadb.h.

pfc::array_t<file_info_impl> file_info_filter_impl::m_infos
private

Definition at line 320 of file metadb.h.


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