📄 findfile_sequence.hpp
字号:
, ss_typename_param_k T
, ss_typename_param_k X
>
inline ss_typename_type_k basic_findfile_sequence<C, T, X>::const_iterator basic_findfile_sequence<C, T, X>::begin() const
{
INETSTL_ASSERT(is_valid());
return const_input_iterator(*this, stlsoft_ns_qual(c_str_ptr)(m_rootDir), stlsoft_ns_qual(c_str_ptr)(m_patterns), m_delim, m_flags);
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline ss_typename_type_k basic_findfile_sequence<C, T, X>::const_iterator basic_findfile_sequence<C, T, X>::end() const
{
INETSTL_ASSERT(is_valid());
return const_input_iterator(*this);
}
// Attributes
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
ss_typename_type_k basic_findfile_sequence<C, T, X>::char_type const *basic_findfile_sequence<C, T, X>::get_directory() const
{
INETSTL_ASSERT(is_valid());
return m_rootDir.c_str();
}
// State
#ifdef STLSOFT_OBSOLETE
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline ss_typename_type_k basic_findfile_sequence<C, T, X>::size_type basic_findfile_sequence<C, T, X>::size() const
{
INETSTL_ASSERT(is_valid());
return stlsoft_ns_qual_std(distance)(begin(), end());
}
#endif /* STLSOFT_OBSOLETE */
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline is_bool_t basic_findfile_sequence<C, T, X>::empty() const
{
INETSTL_ASSERT(is_valid());
return begin() == end();
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline /* static */ ss_typename_type_k basic_findfile_sequence<C, T, X>::size_type basic_findfile_sequence<C, T, X>::max_size()
{
return static_cast<size_type>(-1);
}
// basic_findfile_sequence_value_type
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline basic_findfile_sequence_value_type<C, T, X>::basic_findfile_sequence_value_type()
{
m_data.dwFileAttributes = 0xFFFFFFFF;
m_data.cFileName[0] = '\0';
m_data.cAlternateFileName[0] = '\0';
m_path[0] = '\0';
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::find_data_type const &basic_findfile_sequence_value_type<C, T, X>::get_find_data() const
{
return m_data;
}
#ifdef STLSOFT_OBSOLETE
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::find_data_type const &basic_findfile_sequence_value_type<C, T, X>::GetFindData() const
{
return get_find_data();
}
#endif /* STLSOFT_OBSOLETE */
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::char_type const *basic_findfile_sequence_value_type<C, T, X>::get_filename() const
{
return m_data.cFileName;
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::char_type const *basic_findfile_sequence_value_type<C, T, X>::get_short_filename() const
{
return m_data.cAlternateFileName[0] != '\0' ? m_data.cAlternateFileName : m_data.cFileName;
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::char_type const *basic_findfile_sequence_value_type<C, T, X>::get_path() const
{
return &m_path[0];
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::char_type const *basic_findfile_sequence_value_type<C, T, X>::c_str() const
{
return get_path();
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
#if defined(STLSOFT_COMPILER_IS_GCC) || \
( defined(STLSOFT_COMPILER_IS_MSVC) && \
_MSC_VER < 1100)
inline basic_findfile_sequence_value_type<C, T, X>::operator C const * () const
#else /* ? compiler */
inline basic_findfile_sequence_value_type<C, T, X>::operator ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::char_type const *() const
#endif /* !compiler */
{
return get_path();
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
#ifdef STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::bool_type basic_findfile_sequence_value_type<C, T, X>::is_directory() const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline is_bool_t basic_findfile_sequence_value_type<C, T, X>::is_directory() const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
return traits_type::is_directory(&m_data);
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
#ifdef STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::bool_type basic_findfile_sequence_value_type<C, T, X>::is_file() const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline is_bool_t basic_findfile_sequence_value_type<C, T, X>::is_file() const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
return traits_type::is_file(&m_data);
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
#ifdef STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::bool_type basic_findfile_sequence_value_type<C, T, X>::is_read_only() const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline is_bool_t basic_findfile_sequence_value_type<C, T, X>::is_read_only() const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
return 0 != (m_data.dwFileAttributes & FILE_ATTRIBUTE_READONLY);
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
#ifdef STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::bool_type basic_findfile_sequence_value_type<C, T, X>::equal(ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::char_type const *rhs) const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline is_bool_t basic_findfile_sequence_value_type<C, T, X>::equal(char_type const *rhs) const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
return 0 == traits_type::str_compare(this->get_path(), rhs);
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
>
#ifdef STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED
inline ss_typename_type_k basic_findfile_sequence_value_type<C, T, X>::bool_type basic_findfile_sequence_value_type<C, T, X>::equal(basic_findfile_sequence_value_type<C, T, X> const &rhs) const
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
inline is_bool_t basic_findfile_sequence_value_type<C, T, X>::equal(basic_findfile_sequence_value_type<C, T, X> const &rhs) const
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
return equal(rhs.get_path());
}
// basic_findfile_sequence_const_input_iterator
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
, ss_typename_param_k V
>
inline /* static */ int basic_findfile_sequence_const_input_iterator<C, T, X, V>::find_next_pattern_( ss_typename_type_k basic_findfile_sequence_const_input_iterator<C, T, X, V>::char_type const *&p0
, ss_typename_type_k basic_findfile_sequence_const_input_iterator<C, T, X, V>::char_type const *&p1
, ss_typename_type_k basic_findfile_sequence_const_input_iterator<C, T, X, V>::char_type delim)
{
INETSTL_ASSERT(NULL != p0);
INETSTL_ASSERT(NULL != p1);
INETSTL_ASSERT(p0 <= p1);
return stlsoft_ns_qual(find_next_token)(p0, p1, delim);
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
, ss_typename_param_k V
>
inline /* static */ HINTERNET basic_findfile_sequence_const_input_iterator<C, T, X, V>::find_first_file_( HINTERNET hconn
#ifdef STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED
, ss_typename_type_k basic_findfile_sequence_const_input_iterator<C, T, X, V>::char_type const *pattern
, ss_typename_type_k basic_findfile_sequence_const_input_iterator<C, T, X, V>::flags_type flags
, ss_typename_type_k basic_findfile_sequence_const_input_iterator<C, T, X, V>::find_data_type *findData)
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
, char_type const *pattern
, flags_type flags
, find_data_type *findData)
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
{
HINTERNET hSrch = traits_type::find_first_file(hconn, pattern, findData);
if(hSrch != NULL)
{
// Now need to validate against the flags
for(; hSrch != NULL; )
{
if(0 == (findData->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
// A file, and files requested, so break
if(flags & sequence_type::files)
{
break;
}
}
else
{
if(traits_type::is_dots(findData->cFileName))
{
if(flags & sequence_type::includeDots)
{
// A dots file, and dots are requested
break;
}
}
else if(flags & sequence_type::directories)
{
// A directory, and directories requested
break;
}
}
if(!traits_type::find_next_file(hSrch, findData))
{
traits_type::find_close(hSrch);
hSrch = NULL;
break;
}
}
}
return hSrch;
}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
, ss_typename_param_k V
>
inline basic_findfile_sequence_const_input_iterator<C, T, X, V>::basic_findfile_sequence_const_input_iterator()
: m_list(NULL)
, m_handle(NULL)
, m_rootDir(NULL)
, m_pattern0(NULL)
, m_pattern1(NULL)
, m_delim('\0')
, m_flags(0)
{}
template< ss_typename_param_k C
, ss_typename_param_k T
, ss_typename_param_k X
, ss_typename_param_k V
>
inline basic_findfile_sequence_const_input_iterator<C, T, X, V>::basic_findfile_sequence_const_input_iterator( sequence_type const &l
#ifdef STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED
, ss_typename_type_k basic_findfile_sequence_const_input_iterator<C, T, X, V>::char_type const *rootDir
, ss_typename_type_k basic_findfile_sequence_const_input_iterator<C, T, X, V>::char_type const *patterns
, ss_typename_type_k basic_findfile_sequence_const_input_iterator<C, T, X, V>::char_type delim
, ss_typename_type_k basic_findfile_sequence_const_input_iterator<C, T, X, V>::flags_type flags)
#else /* ? STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
, char_type const *rootDir
, char_type const *patterns
, char_type delim
, flags_type flags)
#endif /* STLSOFT_CF_FUNCTION_SIGNATURE_FULL_ARG_QUALIFICATION_REQUIRED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -