27 #include "cif++/category.hpp" 32 void row_handle::assign(uint16_t column, std::string_view value,
bool updateLinked,
bool validate)
35 throw std::runtime_error(
"uninitialized row");
37 m_category->update_value(m_row, column, value, updateLinked, validate);
43 throw std::runtime_error(
"uninitialized row");
45 return m_category->get_column_ix(name);
48 std::string_view row_handle::get_column_name(uint16_t ix)
const 51 throw std::runtime_error(
"uninitialized row");
53 return m_category->get_column_name(ix);
56 uint16_t row_handle::add_column(std::string_view name)
59 throw std::runtime_error(
"uninitialized row");
61 return m_category->add_column(name);
64 void row_handle::swap(uint16_t column, row_handle &
b)
67 throw std::runtime_error(
"uninitialized row");
69 m_category->swap_item(column, *
this, b);
74 row_initializer::row_initializer(row_handle
rh)
76 if (not rh.m_category)
77 throw std::runtime_error(
"uninitialized row");
81 row *r = rh.get_row();
82 auto &cat = *rh.m_category;
84 for (uint16_t ix = 0; ix < r->size(); ++ix)
86 auto &
i = r->operator[](ix);
89 emplace_back(cat.get_column_name(ix), i.text());
93 void row_initializer::set_value(std::string_view name, std::string_view value)
104 emplace_back(name, value);
107 void row_initializer::set_value_if_empty(std::string_view name, std::string_view value)
109 if (find_if(begin(), end(), [name](
auto &i) {
return i.name() == name; }) == end())
110 emplace_back(name, value);
uint16_t get_column_ix(const category &cat, std::string_view col)