25 Adapter(std::vector<T> &cols) : columns(cols)
29 bool has_column(
int col)
const override
31 return std::count(columns.begin(), columns.end(),
static_cast<T
>(col));
34 void include_column(
int col)
override
36 auto c = std::count(columns.begin(), columns.end(),
static_cast<T
>(col));
39 columns.push_back(
static_cast<T
>(col));
42 void exclude_column(
int col)
override
44 auto c = std::count(columns.begin(), columns.end(),
static_cast<T
>(col));
46 columns.erase(std::remove(columns.begin(), columns.end(),
static_cast<T
>(col)), columns.end());
49 void move_column(
int col,
bool up)
override
51 auto it = std::find(columns.begin(), columns.end(),
static_cast<T
>(col));
52 if (it == columns.end())
55 if (up && it == columns.begin())
58 if (!up && it == columns.end() - 1)
61 auto it_other = it + (up ? -1 : +1);
63 std::swap(*it_other, *it);
66 std::vector<int> get_columns()
const override
69 std::transform(columns.begin(), columns.end(), std::back_inserter(r),
70 [](
auto x) { return static_cast<int>(x); });
75 std::vector<T> &columns;