29class ORCUS_SPM_DLLPUBLIC filter_value_t
31 using store_type = std::variant<std::monostate, double, std::string_view>;
35 enum class value_type { empty, numeric,
string };
38 filter_value_t(
double v);
39 filter_value_t(std::string_view v);
40 filter_value_t(
const filter_value_t& other);
43 bool operator==(
const filter_value_t& other)
const;
44 bool operator!=(
const filter_value_t& other)
const;
45 bool operator<(
const filter_value_t& other)
const;
47 filter_value_t& operator=(
const filter_value_t& other);
49 value_type type()
const noexcept;
51 double numeric()
const;
53 std::string_view string()
const;
55 void swap(filter_value_t& other)
noexcept;
67class ORCUS_SPM_DLLPUBLIC filter_item_t :
public filterable
70 auto_filter_op_t m_op = auto_filter_op_t::unspecified;
76 filter_item_t(col_t _field, auto_filter_op_t _op);
77 filter_item_t(col_t _field, auto_filter_op_t _op,
double v);
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);
80 filter_item_t(
const filter_item_t& other);
81 ~filter_item_t()
override;
84 auto_filter_op_t op()
const;
88 filter_item_t& operator=(
const filter_item_t& other);
90 void swap(filter_item_t& other)
noexcept;
92 bool operator==(
const filter_item_t& other)
const;
93 bool operator!=(
const filter_item_t& other)
const;
94 bool operator<(
const filter_item_t& other)
const;
97class ORCUS_SPM_DLLPUBLIC filter_item_set_t :
public filterable
100 std::unordered_set<std::string_view> m_values;
104 filter_item_set_t(col_t _field);
105 filter_item_set_t(col_t field, std::initializer_list<std::string_view> values);
106 filter_item_set_t(
const filter_item_set_t& other);
107 filter_item_set_t(filter_item_set_t&& other);
108 ~filter_item_set_t()
override;
111 const std::unordered_set<std::string_view>& values()
const;
112 void insert(std::string_view value);
114 filter_item_set_t& operator=(
const filter_item_set_t& other);
115 filter_item_set_t& operator=(filter_item_set_t&& other);
118 void swap(filter_item_set_t& other)
noexcept;
120 bool operator==(
const filter_item_set_t& other)
const;
121 bool operator!=(
const filter_item_set_t& other)
const;
131 std::unique_ptr<impl> m_impl;
135 filter_node_t(auto_filter_node_op_t _op);
137 filter_node_t(
const filter_node_t& other) =
delete;
138 filter_node_t(filter_node_t&& other);
139 ~filter_node_t()
override;
141 filter_node_t& operator=(
const filter_node_t& other) =
delete;
142 filter_node_t& operator=(filter_node_t&& other);
144 auto_filter_node_op_t op()
const noexcept;
149 std::size_t
size() const noexcept;
151 bool empty() const noexcept;
158 void append(filter_node_t child);
163 void swap(filter_node_t& other) noexcept;
170struct ORCUS_SPM_DLLPUBLIC auto_filter_t
172 ixion::abs_rc_range_t range;
176 auto_filter_t(
const auto_filter_t& other) =
delete;
177 auto_filter_t(auto_filter_t&& other);
180 auto_filter_t& operator=(
const auto_filter_t& other) =
delete;
181 auto_filter_t& operator=(auto_filter_t&& other);
184 void swap(auto_filter_t& other);