8#ifndef INCLUDED_ORCUS_SPREADSHEET_AUTO_FILTER_HPP
9#define INCLUDED_ORCUS_SPREADSHEET_AUTO_FILTER_HPP
18#include <unordered_set>
19#include <unordered_map>
21#include <ixion/address.hpp>
23namespace orcus {
namespace spreadsheet {
31 using store_type = std::variant<std::monostate, double, std::string_view>;
35 enum class value_type { empty, numeric,
string };
49 value_type type()
const noexcept;
51 double numeric()
const;
53 std::string_view string()
const;
70 auto_filter_op_t m_op = auto_filter_op_t::unspecified;
78 filter_item_t(col_t _field, auto_filter_op_t _op, std::string_view v);
79 filter_item_t(col_t _field, auto_filter_op_t _op, std::string_view v,
bool _regex);
84 auto_filter_op_t op()
const;
100 std::unordered_set<std::string_view> m_values;
111 const std::unordered_set<std::string_view>& values()
const;
112 void insert(std::string_view value);
131 std::unique_ptr<impl> m_impl;
144 auto_filter_node_op_t op()
const noexcept;
149 std::size_t
size() const noexcept;
151 bool empty() const noexcept;
172 ixion::abs_rc_range_t range;
187ORCUS_SPM_DLLPUBLIC std::ostream& operator<<(std::ostream& os,
const filter_item_t& v);
Definition auto_filter.hpp:98
Definition auto_filter.hpp:68
Definition auto_filter.hpp:129
std::size_t size() const noexcept
Definition auto_filter.hpp:30
Definition auto_filter.hpp:59
Definition auto_filter.hpp:171