diff --git a/src/model.h b/src/model.h index c24e070..910e423 100644 --- a/src/model.h +++ b/src/model.h @@ -433,14 +433,14 @@ protected: field_model(field_name, field_name, field_value, field_type); } - template - void field(const wchar_t * field_name, std::list & field_value, const FT & field_type = FT::default_type) + template + void field(const wchar_t * field_name, std::list & field_value, const FT & field_type = FT::default_type) { field_list(field_name, field_name, field_value, field_type); } - template - void field(const wchar_t * field_name, std::vector & field_value, const FT & field_type = FT::default_type) + template + void field(const wchar_t * field_name, std::vector & field_value, const FT & field_type = FT::default_type) { field_vector(field_name, field_name, field_value, field_type); } @@ -959,44 +959,50 @@ protected: } - template - void field_vector(const wchar_t * db_field_name, const wchar_t * flat_field_name, std::vector & field_value, const FT & field_type) + template + void field_vector(const wchar_t * db_field_name, const wchar_t * flat_field_name, std::vector & field_value, const FT & field_type) { - ModelClass * list_model_null_pointer = nullptr; + ContainerItemType * item_type_null_pointer = nullptr; if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER ) { - if( (is_empty_field(model_env->db_field_name) || is_the_same_field(db_field_name, model_env->db_field_name)) && - (is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) && - !model_env->model_wrapper ) + if constexpr (std::is_base_of()) { - model_env->model_wrapper = new ModelWrapperVector(&field_value); + if( (is_empty_field(model_env->db_field_name) || is_the_same_field(db_field_name, model_env->db_field_name)) && + (is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) && + !model_env->model_wrapper ) + { + model_env->model_wrapper = new ModelWrapperVector(&field_value); + } } } else { - field_list_generic(db_field_name, flat_field_name, field_value, list_model_null_pointer, field_type); + field_list_generic(db_field_name, flat_field_name, field_value, item_type_null_pointer, field_type); } } - template - void field_list(const wchar_t * db_field_name, const wchar_t * flat_field_name, std::list & field_value, const FT & field_type) + template + void field_list(const wchar_t * db_field_name, const wchar_t * flat_field_name, std::list & field_value, const FT & field_type) { - ModelClass * list_model_null_pointer = nullptr; + ContainerItemType * item_type_null_pointer = nullptr; if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER ) { - if( (is_empty_field(model_env->db_field_name) || is_the_same_field(db_field_name, model_env->db_field_name)) && - (is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) && - !model_env->model_wrapper ) + if constexpr (std::is_base_of()) { - model_env->model_wrapper = new ModelWrapperList(&field_value); + if( (is_empty_field(model_env->db_field_name) || is_the_same_field(db_field_name, model_env->db_field_name)) && + (is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) && + !model_env->model_wrapper ) + { + model_env->model_wrapper = new ModelWrapperList(&field_value); + } } } else { - field_list_generic(db_field_name, flat_field_name, field_value, list_model_null_pointer, field_type); + field_list_generic(db_field_name, flat_field_name, field_value, item_type_null_pointer, field_type); } }