|
|
|
@@ -51,7 +51,7 @@
|
|
|
|
|
#include "wrapper.h"
|
|
|
|
|
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
#include "funinfo.h"
|
|
|
|
|
#include "env.h"
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -81,15 +81,13 @@
|
|
|
|
|
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
#define MORM_MODEL_MEMBER_FIELD_EZC(ClassName) \
|
|
|
|
|
template<typename FunInfoStreamType> \
|
|
|
|
|
void field(const wchar_t * field_name, void (ClassName::*method)(Ezc::FunInfo<FunInfoStreamType> &), const morm::FT & field_type = morm::FT::default_type) \
|
|
|
|
|
void field(const wchar_t * field_name, void (ClassName::*method)(Ezc::Env &), const morm::FT & field_type = morm::FT::default_type) \
|
|
|
|
|
{ \
|
|
|
|
|
field(field_name, field_name, method, field_type); \
|
|
|
|
|
} \
|
|
|
|
|
template<typename FunInfoStreamType> \
|
|
|
|
|
void field(const wchar_t * db_field_name, const wchar_t * flat_field_name, void (ClassName::*method)(Ezc::FunInfo<FunInfoStreamType> &), const morm::FT & field_type = morm::FT::default_type) \
|
|
|
|
|
void field(const wchar_t * db_field_name, const wchar_t * flat_field_name, void (ClassName::*method)(Ezc::Env &), const morm::FT & field_type = morm::FT::default_type) \
|
|
|
|
|
{ \
|
|
|
|
|
typedef void (Model::*ModelMember)(Ezc::FunInfo<FunInfoStreamType> &); \
|
|
|
|
|
typedef void (Model::*ModelMember)(Ezc::Env &); \
|
|
|
|
|
ModelMember model_member = static_cast<ModelMember>(method); \
|
|
|
|
|
field_member_ezc(db_field_name, flat_field_name, model_member, field_type); \
|
|
|
|
|
} \
|
|
|
|
@@ -112,16 +110,6 @@
|
|
|
|
|
typedef bool (Model::*ModelMember)() const; \
|
|
|
|
|
ModelMember model_member = static_cast<ModelMember>(method); \
|
|
|
|
|
field_member_ezc(db_field_name, flat_field_name, model_member, field_type); \
|
|
|
|
|
} \
|
|
|
|
|
void field(const wchar_t * field_name, void (ClassName::*method)(morm::Wrapper &), const morm::FT & field_type = morm::FT::default_type) \
|
|
|
|
|
{ \
|
|
|
|
|
field(field_name, field_name, method, field_type); \
|
|
|
|
|
} \
|
|
|
|
|
void field(const wchar_t * db_field_name, const wchar_t * flat_field_name, void (ClassName::*method)(morm::Wrapper &), const morm::FT & field_type = morm::FT::default_type) \
|
|
|
|
|
{ \
|
|
|
|
|
typedef void (Model::*ModelMember)(morm::Wrapper &); \
|
|
|
|
|
ModelMember model_member = static_cast<ModelMember>(method); \
|
|
|
|
|
field_member_ezc(db_field_name, flat_field_name, model_member, field_type); \
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
@@ -260,17 +248,19 @@ public:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Model * get_model(const wchar_t * db_field_name, const wchar_t * flat_field_name);
|
|
|
|
|
Wrapper get_wrapper(const wchar_t * db_field_name, const wchar_t * flat_field_name);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool get_raw_value(const wchar_t * db_field_name, const wchar_t * flat_field_name, pt::Stream & stream, bool clear_stream = true);
|
|
|
|
|
bool get_raw_value(const wchar_t * db_field_name, const wchar_t * flat_field_name, ModelData * model_data, pt::Stream & stream, bool clear_stream = true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
template<typename FunInfoStreamType>
|
|
|
|
|
|
|
|
|
|
Ezc::Val get_ezc_val(const wchar_t * db_field_name, const wchar_t * flat_field_name);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
bool get_raw_value(const wchar_t * db_field_name, const wchar_t * flat_field_name, ModelData * model_data,
|
|
|
|
|
Ezc::FunInfo<FunInfoStreamType> & fun_info, pt::Stream & stream, bool clear_stream = true)
|
|
|
|
|
Ezc::Env & ezc_env, pt::Stream & stream, bool clear_stream = true)
|
|
|
|
|
{
|
|
|
|
|
if( clear_stream )
|
|
|
|
|
{
|
|
|
|
@@ -286,14 +276,12 @@ public:
|
|
|
|
|
model_env->flat_field_name = flat_field_name;
|
|
|
|
|
model_env->model_data = model_data;
|
|
|
|
|
model_env->stream = &stream;
|
|
|
|
|
model_env->ezc_fun_info = &fun_info;
|
|
|
|
|
model_env->ezc_fun_info_typeinfo = &typeid(fun_info);
|
|
|
|
|
model_env->ezc_env = &ezc_env;
|
|
|
|
|
model_env->model = this;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
fields();
|
|
|
|
|
fun_info.res = model_env->ezc_fun_result;
|
|
|
|
|
}
|
|
|
|
|
catch(...)
|
|
|
|
|
{
|
|
|
|
@@ -304,6 +292,8 @@ public:
|
|
|
|
|
model_env = nullptr;
|
|
|
|
|
return model_env_local.was_field_found;
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -801,12 +791,26 @@ protected:
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
model_env->ezc_fun_result = convert_to_bool(field_value);
|
|
|
|
|
//model_env->ezc_fun_result = convert_to_bool(field_value);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
template<typename FieldValue>
|
|
|
|
|
void field_generic_get_ezc_val(const wchar_t * db_field_name, const wchar_t * flat_field_name, FieldValue & field_value, const FT & field_type)
|
|
|
|
|
{
|
|
|
|
|
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->was_field_found = true;
|
|
|
|
|
model_env->ezc_val.set_pointer_to(&field_value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<typename FieldValue>
|
|
|
|
|
void field_generic(const wchar_t * db_field_name, const wchar_t * flat_field_name, FieldValue & field_value, const FT & field_type)
|
|
|
|
|
{
|
|
|
|
@@ -851,6 +855,13 @@ protected:
|
|
|
|
|
{
|
|
|
|
|
field_generic_put_raw_value_to_stream(db_field_name, flat_field_name, field_value, field_type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
if( get_work_mode() == MORM_MODEL_WORK_MODE_GET_EZC_VAL )
|
|
|
|
|
{
|
|
|
|
|
field_generic_get_ezc_val(db_field_name, flat_field_name, field_value, field_type);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -859,16 +870,17 @@ protected:
|
|
|
|
|
{
|
|
|
|
|
if( model_connector && model_env )
|
|
|
|
|
{
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER )
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_EZC_VAL )
|
|
|
|
|
{
|
|
|
|
|
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->wrapper.date )
|
|
|
|
|
(is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) )
|
|
|
|
|
{
|
|
|
|
|
model_env->wrapper.date = &field_value;
|
|
|
|
|
model_env->ezc_val.set_pointer_to(&field_value);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
field_generic(db_field_name, flat_field_name, field_value, field_type);
|
|
|
|
|
}
|
|
|
|
@@ -880,16 +892,17 @@ protected:
|
|
|
|
|
{
|
|
|
|
|
if( model_connector && model_env )
|
|
|
|
|
{
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER )
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_EZC_VAL )
|
|
|
|
|
{
|
|
|
|
|
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->wrapper.space_wrapper )
|
|
|
|
|
(is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) )
|
|
|
|
|
{
|
|
|
|
|
model_env->wrapper.space_wrapper = new SpaceWrapper(&field_value);
|
|
|
|
|
model_env->ezc_val.set_pointer_to(new SpaceWrapper(&field_value));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
field_generic(db_field_name, flat_field_name, field_value, field_type);
|
|
|
|
|
}
|
|
|
|
@@ -938,50 +951,54 @@ protected:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
template<typename FunInfoStreamType>
|
|
|
|
|
void field_member_ezc(const wchar_t * db_field_name, const wchar_t * flat_field_name, void (Model::*method)(Ezc::FunInfo<FunInfoStreamType> &), const FT & field_type)
|
|
|
|
|
|
|
|
|
|
void field_member_ezc(const wchar_t * db_field_name, const wchar_t * flat_field_name, void (Model::*method)(Ezc::Env &), const FT & field_type)
|
|
|
|
|
{
|
|
|
|
|
if( model_connector && model_env && model_env->ezc_fun_info && model_env->ezc_fun_info_typeinfo && model_env->model )
|
|
|
|
|
if( model_connector && model_env && model_env->model )
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if( field_type.is_primary_key() )
|
|
|
|
|
{
|
|
|
|
|
pt::Log * plog = model_connector->get_logger();
|
|
|
|
|
|
|
|
|
|
if( plog )
|
|
|
|
|
{
|
|
|
|
|
(*plog) << pt::Log::log1 << "Morm:: an ezc method cannot be used as a primary key" << pt::Log::logend;
|
|
|
|
|
(*plog) << pt::Log::log1 << "Morm: an ezc method cannot be used as a primary key" << pt::Log::logend;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM )
|
|
|
|
|
{
|
|
|
|
|
field_member_ezc_put_field_value_to_stream(db_field_name, flat_field_name, method, field_type);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<typename FunInfoStreamType>
|
|
|
|
|
void field_member_ezc_put_field_value_to_stream(const wchar_t * db_field_name, const wchar_t * flat_field_name, void (Model::*method)(Ezc::FunInfo<FunInfoStreamType> &), const FT & field_type)
|
|
|
|
|
{
|
|
|
|
|
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->was_field_found = true;
|
|
|
|
|
|
|
|
|
|
if( typeid(Ezc::FunInfo<FunInfoStreamType>) == *model_env->ezc_fun_info_typeinfo )
|
|
|
|
|
{
|
|
|
|
|
Ezc::FunInfo<FunInfoStreamType> * ezc_fun_info = reinterpret_cast<Ezc::FunInfo<FunInfoStreamType>*>(model_env->ezc_fun_info);
|
|
|
|
|
(model_env->model->*method)(*ezc_fun_info);
|
|
|
|
|
model_env->ezc_fun_result = ezc_fun_info->res; // ezc_fun_info->res is overwritten in get_raw_value() after fields() method call so we have to remember it in model_env
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
pt::Log * plog = model_connector->get_logger();
|
|
|
|
|
|
|
|
|
|
if( plog )
|
|
|
|
|
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)) )
|
|
|
|
|
{
|
|
|
|
|
(*plog) << pt::Log::log2 << "Morm: incorrect method type for field: " << flat_field_name << pt::Log::logend;
|
|
|
|
|
model_env->was_field_found = true;
|
|
|
|
|
|
|
|
|
|
if( model_env->ezc_env )
|
|
|
|
|
{
|
|
|
|
|
(model_env->model->*method)(*model_env->ezc_env);
|
|
|
|
|
// may if the method evaluates to a POD type then we should put such value to the stream?
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
pt::Log * plog = model_connector->get_logger();
|
|
|
|
|
|
|
|
|
|
if( plog )
|
|
|
|
|
{
|
|
|
|
|
(*plog) << pt::Log::log1 << "Morm: this method requires an Ezc::Env object"; // put a field name?
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_EZC_VAL )
|
|
|
|
|
{
|
|
|
|
|
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->was_field_found = true;
|
|
|
|
|
model_env->ezc_val.set_pointer_to(model_env->model, method);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -998,17 +1015,24 @@ protected:
|
|
|
|
|
|
|
|
|
|
if( plog )
|
|
|
|
|
{
|
|
|
|
|
(*plog) << pt::Log::log1 << "Morm:: an ezc method cannot be used as a primary key" << pt::Log::logend;
|
|
|
|
|
(*plog) << pt::Log::log1 << "Morm: an ezc method cannot be used as a primary key" << pt::Log::logend;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM )
|
|
|
|
|
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)) )
|
|
|
|
|
{
|
|
|
|
|
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)) )
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM )
|
|
|
|
|
{
|
|
|
|
|
model_env->was_field_found = true;
|
|
|
|
|
model_env->ezc_fun_result = (model_env->model->*method)();
|
|
|
|
|
bool result = (model_env->model->*method)();
|
|
|
|
|
put_bool_to_stream(result, *model_env->stream);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_EZC_VAL )
|
|
|
|
|
{
|
|
|
|
|
model_env->was_field_found = true;
|
|
|
|
|
model_env->ezc_val.set_pointer_to(model_env->model, method);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -1025,48 +1049,30 @@ protected:
|
|
|
|
|
|
|
|
|
|
if( plog )
|
|
|
|
|
{
|
|
|
|
|
(*plog) << pt::Log::log1 << "Morm:: an ezc method cannot be used as a primary key" << pt::Log::logend;
|
|
|
|
|
(*plog) << pt::Log::log1 << "Morm: an ezc method cannot be used as a primary key" << pt::Log::logend;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM )
|
|
|
|
|
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)) )
|
|
|
|
|
{
|
|
|
|
|
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)) )
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM )
|
|
|
|
|
{
|
|
|
|
|
model_env->was_field_found = true;
|
|
|
|
|
model_env->ezc_fun_result = (model_env->model->*method)();
|
|
|
|
|
bool result = (model_env->model->*method)();
|
|
|
|
|
put_bool_to_stream(result, *model_env->stream);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_EZC_VAL )
|
|
|
|
|
{
|
|
|
|
|
model_env->was_field_found = true;
|
|
|
|
|
model_env->ezc_val.set_pointer_to(model_env->model, method);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void field_member_ezc(const wchar_t * db_field_name, const wchar_t * flat_field_name, void (Model::*method)(Wrapper & wrapper), const FT & field_type)
|
|
|
|
|
{
|
|
|
|
|
if( model_connector && model_env && model_env->model )
|
|
|
|
|
{
|
|
|
|
|
if( field_type.is_primary_key() )
|
|
|
|
|
{
|
|
|
|
|
pt::Log * plog = model_connector->get_logger();
|
|
|
|
|
|
|
|
|
|
if( plog )
|
|
|
|
|
{
|
|
|
|
|
(*plog) << pt::Log::log1 << "Morm:: an ezc method cannot be used as a primary key" << pt::Log::logend;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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->*method)(model_env->wrapper);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1270,19 +1276,20 @@ protected:
|
|
|
|
|
{
|
|
|
|
|
ContainerItemType * item_type_null_pointer = nullptr;
|
|
|
|
|
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER )
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_EZC_VAL )
|
|
|
|
|
{
|
|
|
|
|
if constexpr (std::is_base_of<Model, ContainerItemType>())
|
|
|
|
|
{
|
|
|
|
|
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->wrapper.model_container_wrapper )
|
|
|
|
|
(is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) )
|
|
|
|
|
{
|
|
|
|
|
model_env->wrapper.model_container_wrapper = new ModelWrapperVector(&field_value);
|
|
|
|
|
model_env->ezc_val.set_pointer_to(new ModelWrapperVector(&field_value));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
ContainerItemType * pointer = nullptr;
|
|
|
|
|
field_list_generic(db_field_name, flat_field_name, field_value, item_type_null_pointer, field_type, pointer);
|
|
|
|
@@ -1295,19 +1302,20 @@ protected:
|
|
|
|
|
{
|
|
|
|
|
ContainerItemType * item_type_null_pointer = nullptr;
|
|
|
|
|
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER )
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_EZC_VAL )
|
|
|
|
|
{
|
|
|
|
|
if constexpr (std::is_base_of<Model, ContainerItemType>())
|
|
|
|
|
{
|
|
|
|
|
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->wrapper.model_container_wrapper )
|
|
|
|
|
(is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) )
|
|
|
|
|
{
|
|
|
|
|
model_env->wrapper.model_container_wrapper = new ModelWrapperList(&field_value);
|
|
|
|
|
model_env->ezc_val.set_pointer_to(new ModelWrapperList(&field_value));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
ContainerItemType * pointer = nullptr;
|
|
|
|
|
field_list_generic(db_field_name, flat_field_name, field_value, item_type_null_pointer, field_type, pointer);
|
|
|
|
@@ -1320,19 +1328,20 @@ protected:
|
|
|
|
|
{
|
|
|
|
|
ContainerItemType * item_type_null_pointer = nullptr;
|
|
|
|
|
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER )
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_EZC_VAL )
|
|
|
|
|
{
|
|
|
|
|
if constexpr (std::is_base_of<Model, ContainerItemType>())
|
|
|
|
|
{
|
|
|
|
|
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->wrapper.model_container_wrapper )
|
|
|
|
|
(is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) )
|
|
|
|
|
{
|
|
|
|
|
model_env->wrapper.model_container_wrapper = new ModelWrapperVectorPointer(&field_value);
|
|
|
|
|
model_env->ezc_val.set_pointer_to(new ModelWrapperVectorPointer(&field_value));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
void * pointer = nullptr;
|
|
|
|
|
field_list_generic(db_field_name, flat_field_name, field_value, item_type_null_pointer, field_type, pointer);
|
|
|
|
@@ -1345,19 +1354,20 @@ protected:
|
|
|
|
|
{
|
|
|
|
|
ContainerItemType * item_type_null_pointer = nullptr;
|
|
|
|
|
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER )
|
|
|
|
|
#ifdef MORM_HAS_EZC_LIBRARY
|
|
|
|
|
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_EZC_VAL )
|
|
|
|
|
{
|
|
|
|
|
if constexpr (std::is_base_of<Model, ContainerItemType>())
|
|
|
|
|
{
|
|
|
|
|
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->wrapper.model_container_wrapper )
|
|
|
|
|
(is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) )
|
|
|
|
|
{
|
|
|
|
|
model_env->wrapper.model_container_wrapper = new ModelWrapperListPointer(&field_value);
|
|
|
|
|
model_env->ezc_val.set_pointer_to(new ModelWrapperListPointer(&field_value));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
#endif
|
|
|
|
|
{
|
|
|
|
|
void * pointer = nullptr;
|
|
|
|
|
field_list_generic(db_field_name, flat_field_name, field_value, item_type_null_pointer, field_type, pointer);
|
|
|
|
@@ -1672,6 +1682,7 @@ protected:
|
|
|
|
|
virtual bool convert_to_bool(const pt::Stream & val);
|
|
|
|
|
virtual bool convert_to_bool(const pt::Space & space);
|
|
|
|
|
|
|
|
|
|
virtual void put_bool_to_stream(bool val, pt::Stream & str);
|
|
|
|
|
|
|
|
|
|
template<typename ModelClass> friend class Finder;
|
|
|
|
|
template<typename ModelClass> friend class Cursor;
|
|
|
|
|