📄 listviewiterators.hpp
字号:
// Copyright E骾n O'Callaghan 2008 - 2008.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#ifndef LISTVIEW_ITERATORS_HPP_INCLUDED
#define LISTVIEW_ITERATORS_HPP_INCLUDED
#include <boost/iterator/filter_iterator.hpp>
#include <winstl/controls/listview_sequence.hpp>
#include "event_logger.hpp"
namespace WTLx
{
template<typename List>
class ListViewIterators
{
protected:
winstl::listview_sequence::const_iterator const_begin()
{
winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
return lv_seq.begin();
}
winstl::listview_sequence::const_iterator const_end()
{
winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
return lv_seq.end();
}
struct is_selected {
bool operator()(const winstl::listview_sequence::sequence_value_type& v)
{
return (v.state() & LVIS_SELECTED) != 0;
} };
typedef boost::filter_iterator<is_selected,
winstl::listview_sequence::const_iterator> is_selected_iterator;
is_selected_iterator is_selected_begin()
{
winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
return make_filter_iterator<is_selected>(lv_seq.begin(), lv_seq.end());
}
is_selected_iterator is_selected_end()
{
winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
return make_filter_iterator<is_selected>(lv_seq.end(), lv_seq.end());
}
struct is_checked
{
is_checked(ListViewIterators* t) :
t_(t)
{}
bool operator()(const winstl::listview_sequence::sequence_value_type& v)
{
return ((static_cast<const List*>(t_))->GetCheckState(v.index()) ? true : false);
}
private:
ListViewIterators* t_;
};
typedef boost::filter_iterator<is_checked,
winstl::listview_sequence::const_iterator> is_checked_iterator;
is_checked_iterator is_checked_begin()
{
winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
return make_filter_iterator<is_checked>(is_checked(this), lv_seq.begin(), lv_seq.end());
}
is_checked_iterator is_checked_end()
{
winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
return make_filter_iterator<is_checked>(is_checked(this), lv_seq.end(), lv_seq.end());
}
};
}
#endif // LISTVIEW_ITERATORS_HPP_INCLUDED
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -