|
- #pragma once
-
- #include "field_value.h"
-
- namespace cpphibernate {
- namespace mariadb {
-
- /* field_value_t */
-
- template<
- typename T_field>
- template<
- typename T_schema,
- typename T_table>
- field_value_t<T_field>::field_value_t(
- const table_t& p_owner,
- const T_schema& p_schema,
- const T_table& p_table,
- const T_field& p_field)
- : field_simple_t<T_field>::field_simple_t(
- p_owner,
- p_schema,
- p_table,
- p_field)
- {
- this->type = value_props.type();
- if (value_props.convert_to_open())
- this->convert_to_open = this->convert_to_open + value_props.convert_to_open();
- if (value_props.convert_to_close())
- this->convert_to_close = value_props.convert_to_close() + this->convert_to_close;
- if (value_props.convert_from_open())
- this->convert_from_open = this->convert_from_open + value_props.convert_from_open();
- if (value_props.convert_from_close())
- this->convert_from_close = value_props.convert_from_close() + this->convert_from_close;
- }
-
- template<typename T_field>
- value_t field_value_t<T_field>::
- get(const data_context& context) const
- {
- using dataset_type = typename mp::decay_t<T_field>::dataset_type;
- auto& dataset = context.get<dataset_type>();
- return value_props.convert_from(this->_field.getter(dataset));
- }
-
- template<typename T_field>
- void field_value_t<T_field>
- ::set(const data_context& context, const value_t& value) const
- {
- using dataset_type = typename mp::decay_t<T_field>::dataset_type;
- auto& dataset = context.get<dataset_type>();
- this->_field.setter(dataset, value_props.convert_to(value));
- }
-
- } }
|