Listing 5: Public interface of basic_search_sequence_value_type.

class basic_search_sequence_value_type
{
  ...
  string_t              get_path() const;
#ifdef RECLS_PLATFORM_API_WIN32
  char_type             get_drive() const;
#endif /* RECLS_PLATFORM_API_WIN32 */
  string_t              get_directory() const;
  string_t              get_directory_path() const;
  directory_parts_type  get_directory_parts() const;
  string_t              get_file() const;
  string_t              get_short_file() const;
  string_t              get_filename() const;
  string_t              get_fileext() const;
  recls_time_t          get_creation_time() const;
  recls_time_t          get_modification_time() const;
  recls_time_t          get_last_access_time() const;
  recls_time_t          get_last_status_change_time() const;
  recls_filesize_t      get_size() const;
  recls_bool_t          is_readonly() const;
  recls_bool_t          is_directory() const;
  recls_bool_t          is_link() const;
  ...
};
template <typename C, typename T>
inline class_type
  &basic_search_sequence_value_type<C, T>::operator =( class_type const &rhs)
{
  if(NULL != m_info)
  {
    traits_type::CloseDetails(m_info);
  }
  m_info = traits_type::CopyDetails(rhs.m_info);
  return *this;
}
template <typename C, typename T>
inline string_t basic_search_sequence_value_type<C, T>::get_filename() const
{
  recls_assert(NULL != m_info);
  return string_t(m_info->fileName.begin, m_info->fileName.end);
}
template <typename C, typename T>
inline directory_parts_type 
  basic_search_sequence_value_type<C, T>::get_directory_parts() const
{
  recls_assert(NULL != m_info);
  return directory_parts_type( m_info->directoryParts.begin
                             , m_info->directoryParts.end);
}