From 4a8fa0c34c956c430a89f34697f24a26c303915e Mon Sep 17 00:00:00 2001 From: Tomasz Sowa Date: Sun, 21 Nov 2021 21:10:16 +0100 Subject: [PATCH] removed MORM_MODEL_WORK_MODE_GET_MODEL_WRAPPER removed Model::get_wrapper(...) method --- src/model.cpp | 44 ++++++------------------------- src/model.h | 64 ++++++++++++++++++++++++---------------------- src/modelenv.h | 7 +++-- src/morm_types.h | 3 +-- src/spacewrapper.h | 1 + 5 files changed, 46 insertions(+), 73 deletions(-) diff --git a/src/model.cpp b/src/model.cpp index 908e9ca..f310be0 100644 --- a/src/model.cpp +++ b/src/model.cpp @@ -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; } } diff --git a/src/model.h b/src/model.h index 9fab7e0..d2d8c8f 100644 --- a/src/model.h +++ b/src/model.h @@ -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::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::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::Type::TYPE_SPACE_LOCAL; @@ -289,12 +301,8 @@ public: env.res.type = Ezc::Var::Type::TYPE_DATE; env.res.date = model_env->ezc_var_date; } - else - if( model_env->model_container_wrapper ) - { - env.res.type = Ezc::Var::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()) { 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()) { 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()) { 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); } } } diff --git a/src/modelenv.h b/src/modelenv.h index f7a2bf8..482f9cf 100644 --- a/src/modelenv.h +++ b/src/modelenv.h @@ -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 } diff --git a/src/morm_types.h b/src/morm_types.h index 4315935..2a87385 100644 --- a/src/morm_types.h +++ b/src/morm_types.h @@ -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 diff --git a/src/spacewrapper.h b/src/spacewrapper.h index a55d95e..e42fb40 100644 --- a/src/spacewrapper.h +++ b/src/spacewrapper.h @@ -99,6 +99,7 @@ public: return std::numeric_limits::max(); } + protected: const size_t SPACE_INDICES_TABLE_SIZE = 32;