#pragma once
#ifndef _WIN32_WCE
#include <atlmisc.h>
#include <boost/range/iterator_range.hpp>
namespace tomato {
namespace detail {
template< class FindFilePredT, class StringT >
struct find_file_range_base
{
typedef boost::iterator_range<
find_file_iterator<FindFilePredT, StringT>
> type;
};
} // namespace detail
template< class FindFilePredT, class StringT >
struct find_file_range :
detail::find_file_range_base<FindFilePredT, StringT>::type
{
private:
typedef typename detail::find_file_range_base<FindFilePredT, StringT>::type super_t;
public:
find_file_range(FindFilePredT pred, LPCTSTR pstrName) :
super_t(
find_file_iterator<FindFilePredT, StringT>(pred, pstrName),
find_file_iterator<FindFilePredT, StringT>(pred)
)
{ }
};
// object generators
/*
template< class FindFilePredT >
find_file_range<FindFilePredT>
make_find_file_range(FindFilePredT pred, LPCTSTR pstrName)
{
return find_file_range<FindFilePredT>(pred, pstrName);
}
*/
template< class FindFilePredT, class StringT >
inline
find_file_range<FindFilePredT, StringT>
make_find_file_range(FindFilePredT pred, StringT const& strName)
{
return find_file_range<FindFilePredT, StringT>(pred, strName);
}
template< class StringT, class FindFilePredT >
inline
find_file_range<FindFilePredT, StringT>
make_find_file_range(FindFilePredT pred, LPCTSTR pstrName)
{
return find_file_range<FindFilePredT, StringT>(pred, pstrName);
}
} // namespace tomato
#endif // _WIN32_WCE