removed MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER

removed Model::get_wrapper(...) method
This commit is contained in:
Tomasz Sowa 2021-11-21 21:10:16 +01:00
parent b9990e3b8c
commit 4a8fa0c34c
5 changed files with 46 additions and 73 deletions

View File

@ -266,30 +266,6 @@ Model * Model::get_model(const wchar_t * db_field_name, const wchar_t * flat_fie
}
Wrapper Model::get_wrapper(const wchar_t * db_field_name, const wchar_t * flat_field_name)
{
ModelEnv model_env_local;
model_env = &model_env_local;
model_env->model_work_mode = MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER;
model_env->db_field_name = db_field_name;
model_env->flat_field_name = flat_field_name;
model_env->model = this;
try
{
fields();
}
catch(...)
{
model_env = nullptr;
throw;
}
model_env = nullptr;
return model_env_local.wrapper;
}
bool Model::get_raw_value(const wchar_t * db_field_name, const wchar_t * flat_field_name, pt::Stream & stream, bool clear_stream)
{
@ -1566,22 +1542,18 @@ void Model::field_model(const wchar_t * db_field_name, const wchar_t * flat_fiel
}
}
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->wrapper.model )
{
model_env->wrapper.model = &field_model;
}
}
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)) )
(is_empty_field(model_env->flat_field_name) || is_the_same_field(flat_field_name, model_env->flat_field_name)) &&
!model_env->model )
{
model_env->model = &field_model;
// FIX ME
//model_env->wrapper.model = &field_model;
// model_env->was_field_found = true;
// model_env->model = &field_model;
}
}

View File

@ -48,7 +48,8 @@
#include "flatexpression.h"
#include "modelenv.h"
#include "ft.h"
#include "wrapper.h"
#include "modelcontainerwrapper.h"
#include "spacewrapper.h"
#ifdef MORM_HAS_EZC_LIBRARY
#include "env.h"
@ -243,7 +244,6 @@ 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);
@ -279,6 +279,18 @@ public:
throw;
}
if( model_env->model_container_wrapper )
{
env.res.type = Ezc::Var<FunInfoStreamType>::Type::TYPE_MODEL_CONTAINER_WRAPPER;
env.res.model_container_wrapper = model_env->model_container_wrapper;
}
if( model_env->space_wrapper )
{
env.res.type = Ezc::Var<FunInfoStreamType>::Type::TYPE_SPACE_WRAPPER;
env.res.space_wrapper = model_env->space_wrapper;
}
if( model_env->ezc_var_space_local && model_env->ezc_var_space_local->type != pt::Space::Type::type_null )
{
env.res.type = Ezc::Var<FunInfoStreamType>::Type::TYPE_SPACE_LOCAL;
@ -289,12 +301,8 @@ public:
env.res.type = Ezc::Var<FunInfoStreamType>::Type::TYPE_DATE;
env.res.date = model_env->ezc_var_date;
}
else
if( model_env->model_container_wrapper )
{
env.res.type = Ezc::Var<FunInfoStreamType>::Type::TYPE_MODEL_CONTAINER_WRAPPER;
env.res.model_container_wrapper = model_env->model_container_wrapper;
}
// else
// if( model_env->model )
@ -833,16 +841,6 @@ protected:
{
if( model_connector && model_env )
{
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->wrapper.date )
{
model_env->wrapper.date = &field_value;
}
}
else
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)) &&
@ -850,6 +848,7 @@ protected:
{
model_env->was_field_found = true;
// !! CHECKME is correct here? should be !model_env->ezc_var_date used?
if( model_env->ezc_var_date )
{
model_env->ezc_var_date = &field_value;
@ -868,13 +867,14 @@ protected:
{
if( model_connector && model_env )
{
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER )
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)) &&
!model_env->wrapper.space_wrapper )
!model_env->space_wrapper )
{
model_env->wrapper.space_wrapper = new SpaceWrapper(&field_value);
model_env->was_field_found = true;
model_env->space_wrapper = new SpaceWrapper(&field_value);
}
}
else
@ -1196,15 +1196,16 @@ protected:
{
ContainerItemType * item_type_null_pointer = nullptr;
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER )
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM )
{
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 )
!model_env->model_container_wrapper )
{
model_env->wrapper.model_container_wrapper = new ModelWrapperVector(&field_value);
model_env->was_field_found = true;
model_env->model_container_wrapper = new ModelWrapperVector(&field_value);
}
}
}
@ -1230,7 +1231,6 @@ protected:
!model_env->model_container_wrapper )
{
model_env->was_field_found = true;
//model_env->wrapper.model_container_wrapper = new ModelWrapperList(&field_value);
model_env->model_container_wrapper = new ModelWrapperList(&field_value);
}
}
@ -1248,15 +1248,16 @@ protected:
{
ContainerItemType * item_type_null_pointer = nullptr;
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER )
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM )
{
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 )
!model_env->model_container_wrapper )
{
model_env->wrapper.model_container_wrapper = new ModelWrapperVectorPointer(&field_value);
model_env->was_field_found = true;
model_env->model_container_wrapper = new ModelWrapperVectorPointer(&field_value);
}
}
}
@ -1273,15 +1274,16 @@ protected:
{
ContainerItemType * item_type_null_pointer = nullptr;
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER )
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM )
{
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 )
!model_env->model_container_wrapper )
{
model_env->wrapper.model_container_wrapper = new ModelWrapperListPointer(&field_value);
model_env->was_field_found = true;
model_env->model_container_wrapper = new ModelWrapperListPointer(&field_value);
}
}
}

View File

@ -97,8 +97,6 @@ public:
pt::Stream * stream;
bool was_field_found; // used only in MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM
Wrapper wrapper;
#ifdef MORM_HAS_EZC_LIBRARY
void * ezc_fun_info;
@ -107,6 +105,7 @@ public:
pt::Date * ezc_var_date;
ModelContainerWrapper * model_container_wrapper;
SpaceWrapper * space_wrapper;
#endif
@ -142,7 +141,6 @@ public:
child_model = e.child_model;
stream = e.stream;
was_field_found = e.was_field_found;
wrapper = e.wrapper;
#ifdef MORM_HAS_EZC_LIBRARY
ezc_fun_info = e.ezc_fun_info;
@ -150,6 +148,7 @@ public:
ezc_var_space_local = e.ezc_var_space_local;
ezc_var_date = e.ezc_var_date;
model_container_wrapper = e.model_container_wrapper;
space_wrapper = e.space_wrapper;
#endif
// schema_name and table_name don't have to be copied
@ -195,7 +194,6 @@ public:
child_model = nullptr;
stream = nullptr;
was_field_found = false;
wrapper.clear();
#ifdef MORM_HAS_EZC_LIBRARY
ezc_fun_info = nullptr;
@ -203,6 +201,7 @@ public:
ezc_var_space_local = nullptr;
ezc_var_date = nullptr;
model_container_wrapper = nullptr;
space_wrapper = nullptr;
#endif
}

View File

@ -46,8 +46,7 @@
#define MORM_MODEL_WORK_MODE_ITERATE_PRIMARY_KEY_VALUES 8
#define MORM_MODEL_WORK_MODE_SET_FIELD_VALUE 9
#define MORM_MODEL_WORK_MODE_GET_FIELD_MODEL 10
#define MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER 11
#define MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM 12
#define MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM 11

View File

@ -99,6 +99,7 @@ public:
return std::numeric_limits<size_t>::max();
}
protected:
const size_t SPACE_INDICES_TABLE_SIZE = 32;