Compare commits
11 Commits
Author | SHA1 | Date |
---|---|---|
Tomasz Sowa | 758bd4909f | |
Tomasz Sowa | 330d945130 | |
Tomasz Sowa | c14b0eb626 | |
Tomasz Sowa | 4a8fa0c34c | |
Tomasz Sowa | b9990e3b8c | |
Tomasz Sowa | f66f5b321c | |
Tomasz Sowa | 318d9d447f | |
Tomasz Sowa | 4ba0f7133b | |
Tomasz Sowa | 5328465e5e | |
Tomasz Sowa | df1bb0e56d | |
Tomasz Sowa | 0fff26bf2f |
|
@ -2,62 +2,53 @@
|
||||||
|
|
||||||
baseexpression.o: baseexpression.h morm_types.h modelenv.h modeldata.h
|
baseexpression.o: baseexpression.h morm_types.h modelenv.h modeldata.h
|
||||||
baseexpression.o: cursorhelper.h queryresult.h finderhelper.h
|
baseexpression.o: cursorhelper.h queryresult.h finderhelper.h
|
||||||
baseexpression.o: fieldvaluehelper.h wrapper.h spacewrapper.h
|
baseexpression.o: fieldvaluehelper.h ft.h model.h modelconnector.h clearer.h
|
||||||
baseexpression.o: baseobjectwrapper.h modelcontainerwrapper.h ft.h model.h
|
baseexpression.o: dbconnector.h flatconnector.h dbexpression.h
|
||||||
baseexpression.o: modelconnector.h clearer.h dbconnector.h flatconnector.h
|
baseexpression.o: flatexpression.h modelcontainerwrapper.h
|
||||||
baseexpression.o: dbexpression.h flatexpression.h
|
baseexpression.o: baseobjectwrapper.h spacewrapper.h
|
||||||
clearer.o: clearer.h model.h modelconnector.h dbconnector.h queryresult.h
|
clearer.o: clearer.h model.h modelconnector.h dbconnector.h queryresult.h
|
||||||
clearer.o: ft.h flatconnector.h dbexpression.h baseexpression.h morm_types.h
|
clearer.o: ft.h flatconnector.h dbexpression.h baseexpression.h morm_types.h
|
||||||
clearer.o: modelenv.h modeldata.h cursorhelper.h finderhelper.h
|
clearer.o: modelenv.h modeldata.h cursorhelper.h finderhelper.h
|
||||||
clearer.o: fieldvaluehelper.h wrapper.h spacewrapper.h baseobjectwrapper.h
|
clearer.o: fieldvaluehelper.h flatexpression.h modelcontainerwrapper.h
|
||||||
clearer.o: modelcontainerwrapper.h flatexpression.h
|
clearer.o: baseobjectwrapper.h spacewrapper.h
|
||||||
dbconnector.o: dbconnector.h queryresult.h ft.h dbexpression.h
|
dbconnector.o: dbconnector.h queryresult.h ft.h dbexpression.h
|
||||||
dbconnector.o: baseexpression.h morm_types.h modelenv.h modeldata.h
|
dbconnector.o: baseexpression.h morm_types.h modelenv.h modeldata.h
|
||||||
dbconnector.o: cursorhelper.h finderhelper.h fieldvaluehelper.h wrapper.h
|
dbconnector.o: cursorhelper.h finderhelper.h fieldvaluehelper.h model.h
|
||||||
dbconnector.o: spacewrapper.h baseobjectwrapper.h modelcontainerwrapper.h
|
dbconnector.o: modelconnector.h clearer.h flatconnector.h flatexpression.h
|
||||||
dbconnector.o: model.h modelconnector.h clearer.h flatconnector.h
|
dbconnector.o: modelcontainerwrapper.h baseobjectwrapper.h spacewrapper.h
|
||||||
dbconnector.o: flatexpression.h
|
|
||||||
dbexpression.o: dbexpression.h baseexpression.h morm_types.h modelenv.h
|
dbexpression.o: dbexpression.h baseexpression.h morm_types.h modelenv.h
|
||||||
dbexpression.o: modeldata.h cursorhelper.h queryresult.h finderhelper.h
|
dbexpression.o: modeldata.h cursorhelper.h queryresult.h finderhelper.h
|
||||||
dbexpression.o: fieldvaluehelper.h wrapper.h spacewrapper.h
|
dbexpression.o: fieldvaluehelper.h ft.h
|
||||||
dbexpression.o: baseobjectwrapper.h modelcontainerwrapper.h ft.h
|
|
||||||
flatconnector.o: flatconnector.h flatexpression.h baseexpression.h
|
flatconnector.o: flatconnector.h flatexpression.h baseexpression.h
|
||||||
flatconnector.o: morm_types.h modelenv.h modeldata.h cursorhelper.h
|
flatconnector.o: morm_types.h modelenv.h modeldata.h cursorhelper.h
|
||||||
flatconnector.o: queryresult.h finderhelper.h fieldvaluehelper.h wrapper.h
|
flatconnector.o: queryresult.h finderhelper.h fieldvaluehelper.h ft.h model.h
|
||||||
flatconnector.o: spacewrapper.h baseobjectwrapper.h modelcontainerwrapper.h
|
flatconnector.o: modelconnector.h clearer.h dbconnector.h dbexpression.h
|
||||||
flatconnector.o: ft.h model.h modelconnector.h clearer.h dbconnector.h
|
flatconnector.o: modelcontainerwrapper.h baseobjectwrapper.h spacewrapper.h
|
||||||
flatconnector.o: dbexpression.h
|
|
||||||
flatexpression.o: flatexpression.h baseexpression.h morm_types.h modelenv.h
|
flatexpression.o: flatexpression.h baseexpression.h morm_types.h modelenv.h
|
||||||
flatexpression.o: modeldata.h cursorhelper.h queryresult.h finderhelper.h
|
flatexpression.o: modeldata.h cursorhelper.h queryresult.h finderhelper.h
|
||||||
flatexpression.o: fieldvaluehelper.h wrapper.h spacewrapper.h
|
flatexpression.o: fieldvaluehelper.h ft.h
|
||||||
flatexpression.o: baseobjectwrapper.h modelcontainerwrapper.h ft.h
|
|
||||||
jsonconnector.o: jsonconnector.h flatconnector.h jsonexpression.h
|
jsonconnector.o: jsonconnector.h flatconnector.h jsonexpression.h
|
||||||
jsonconnector.o: flatexpression.h baseexpression.h morm_types.h modelenv.h
|
jsonconnector.o: flatexpression.h baseexpression.h morm_types.h modelenv.h
|
||||||
jsonconnector.o: modeldata.h cursorhelper.h queryresult.h finderhelper.h
|
jsonconnector.o: modeldata.h cursorhelper.h queryresult.h finderhelper.h
|
||||||
jsonconnector.o: fieldvaluehelper.h wrapper.h spacewrapper.h
|
jsonconnector.o: fieldvaluehelper.h ft.h
|
||||||
jsonconnector.o: baseobjectwrapper.h modelcontainerwrapper.h ft.h
|
|
||||||
jsonexpression.o: jsonexpression.h flatexpression.h baseexpression.h
|
jsonexpression.o: jsonexpression.h flatexpression.h baseexpression.h
|
||||||
jsonexpression.o: morm_types.h modelenv.h modeldata.h cursorhelper.h
|
jsonexpression.o: morm_types.h modelenv.h modeldata.h cursorhelper.h
|
||||||
jsonexpression.o: queryresult.h finderhelper.h fieldvaluehelper.h wrapper.h
|
jsonexpression.o: queryresult.h finderhelper.h fieldvaluehelper.h ft.h
|
||||||
jsonexpression.o: spacewrapper.h baseobjectwrapper.h modelcontainerwrapper.h
|
|
||||||
jsonexpression.o: ft.h
|
|
||||||
model.o: model.h modelconnector.h clearer.h dbconnector.h queryresult.h ft.h
|
model.o: model.h modelconnector.h clearer.h dbconnector.h queryresult.h ft.h
|
||||||
model.o: flatconnector.h dbexpression.h baseexpression.h morm_types.h
|
model.o: flatconnector.h dbexpression.h baseexpression.h morm_types.h
|
||||||
model.o: modelenv.h modeldata.h cursorhelper.h finderhelper.h
|
model.o: modelenv.h modeldata.h cursorhelper.h finderhelper.h
|
||||||
model.o: fieldvaluehelper.h wrapper.h spacewrapper.h baseobjectwrapper.h
|
model.o: fieldvaluehelper.h flatexpression.h modelcontainerwrapper.h
|
||||||
model.o: modelcontainerwrapper.h flatexpression.h
|
model.o: baseobjectwrapper.h spacewrapper.h
|
||||||
modelconnector.o: modelconnector.h clearer.h dbconnector.h queryresult.h ft.h
|
modelconnector.o: modelconnector.h clearer.h dbconnector.h queryresult.h ft.h
|
||||||
modelconnector.o: flatconnector.h
|
modelconnector.o: flatconnector.h
|
||||||
postgresqlconnector.o: postgresqlconnector.h dbconnector.h queryresult.h ft.h
|
postgresqlconnector.o: postgresqlconnector.h dbconnector.h queryresult.h ft.h
|
||||||
postgresqlconnector.o: postgresqlqueryresult.h postgresqlexpression.h
|
postgresqlconnector.o: postgresqlqueryresult.h postgresqlexpression.h
|
||||||
postgresqlconnector.o: dbexpression.h baseexpression.h morm_types.h
|
postgresqlconnector.o: dbexpression.h baseexpression.h morm_types.h
|
||||||
postgresqlconnector.o: modelenv.h modeldata.h cursorhelper.h finderhelper.h
|
postgresqlconnector.o: modelenv.h modeldata.h cursorhelper.h finderhelper.h
|
||||||
postgresqlconnector.o: fieldvaluehelper.h wrapper.h spacewrapper.h
|
postgresqlconnector.o: fieldvaluehelper.h
|
||||||
postgresqlconnector.o: baseobjectwrapper.h modelcontainerwrapper.h
|
|
||||||
postgresqlexpression.o: postgresqlexpression.h dbexpression.h
|
postgresqlexpression.o: postgresqlexpression.h dbexpression.h
|
||||||
postgresqlexpression.o: baseexpression.h morm_types.h modelenv.h modeldata.h
|
postgresqlexpression.o: baseexpression.h morm_types.h modelenv.h modeldata.h
|
||||||
postgresqlexpression.o: cursorhelper.h queryresult.h finderhelper.h
|
postgresqlexpression.o: cursorhelper.h queryresult.h finderhelper.h
|
||||||
postgresqlexpression.o: fieldvaluehelper.h wrapper.h spacewrapper.h
|
postgresqlexpression.o: fieldvaluehelper.h ft.h
|
||||||
postgresqlexpression.o: baseobjectwrapper.h modelcontainerwrapper.h ft.h
|
|
||||||
postgresqlqueryresult.o: postgresqlqueryresult.h queryresult.h
|
postgresqlqueryresult.o: postgresqlqueryresult.h queryresult.h
|
||||||
queryresult.o: queryresult.h
|
queryresult.o: queryresult.h
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
#include "convert/text.h"
|
#include "convert/text.h"
|
||||||
|
|
||||||
#ifdef MORM_HAS_EZC_LIBRARY
|
#ifdef MORM_HAS_EZC_LIBRARY
|
||||||
#include "funinfo.h"
|
#include "env.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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)
|
bool Model::get_raw_value(const wchar_t * db_field_name, const wchar_t * flat_field_name, pt::Stream & stream, bool clear_stream)
|
||||||
{
|
{
|
||||||
|
@ -1566,13 +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( 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)) &&
|
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->wrapper.model )
|
!model_env->model )
|
||||||
{
|
{
|
||||||
model_env->wrapper.model = &field_model;
|
// FIX ME
|
||||||
|
//model_env->wrapper.model = &field_model;
|
||||||
|
|
||||||
|
|
||||||
|
// model_env->was_field_found = true;
|
||||||
|
// model_env->model = &field_model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1888,7 +1869,7 @@ void Model::field_member(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
bool Model::convert_to_bool(char v)
|
bool Model::convert_to_bool(char v)
|
||||||
{
|
{
|
||||||
return v != 0;
|
return v != 0;
|
||||||
|
@ -2009,7 +1990,7 @@ bool Model::convert_to_bool(const pt::Space & space)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
219
src/model.h
219
src/model.h
|
@ -48,10 +48,11 @@
|
||||||
#include "flatexpression.h"
|
#include "flatexpression.h"
|
||||||
#include "modelenv.h"
|
#include "modelenv.h"
|
||||||
#include "ft.h"
|
#include "ft.h"
|
||||||
#include "wrapper.h"
|
#include "modelcontainerwrapper.h"
|
||||||
|
#include "spacewrapper.h"
|
||||||
|
|
||||||
#ifdef MORM_HAS_EZC_LIBRARY
|
#ifdef MORM_HAS_EZC_LIBRARY
|
||||||
#include "funinfo.h"
|
#include "env.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,14 +83,14 @@
|
||||||
#ifdef MORM_HAS_EZC_LIBRARY
|
#ifdef MORM_HAS_EZC_LIBRARY
|
||||||
#define MORM_MODEL_MEMBER_FIELD_EZC(ClassName) \
|
#define MORM_MODEL_MEMBER_FIELD_EZC(ClassName) \
|
||||||
template<typename FunInfoStreamType> \
|
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<FunInfoStreamType> &), const morm::FT & field_type = morm::FT::default_type) \
|
||||||
{ \
|
{ \
|
||||||
field(field_name, field_name, method, field_type); \
|
field(field_name, field_name, method, field_type); \
|
||||||
} \
|
} \
|
||||||
template<typename FunInfoStreamType> \
|
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<FunInfoStreamType> &), const morm::FT & field_type = morm::FT::default_type) \
|
||||||
{ \
|
{ \
|
||||||
typedef void (Model::*ModelMember)(Ezc::FunInfo<FunInfoStreamType> &); \
|
typedef void (Model::*ModelMember)(Ezc::Env<FunInfoStreamType> &); \
|
||||||
ModelMember model_member = static_cast<ModelMember>(method); \
|
ModelMember model_member = static_cast<ModelMember>(method); \
|
||||||
field_member_ezc(db_field_name, flat_field_name, model_member, field_type); \
|
field_member_ezc(db_field_name, flat_field_name, model_member, field_type); \
|
||||||
} \
|
} \
|
||||||
|
@ -112,16 +113,6 @@
|
||||||
typedef bool (Model::*ModelMember)() const; \
|
typedef bool (Model::*ModelMember)() const; \
|
||||||
ModelMember model_member = static_cast<ModelMember>(method); \
|
ModelMember model_member = static_cast<ModelMember>(method); \
|
||||||
field_member_ezc(db_field_name, flat_field_name, model_member, field_type); \
|
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
|
#endif
|
||||||
|
|
||||||
|
@ -253,7 +244,6 @@ public:
|
||||||
|
|
||||||
|
|
||||||
Model * get_model(const wchar_t * db_field_name, const wchar_t * flat_field_name);
|
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, 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);
|
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);
|
||||||
|
@ -263,13 +253,8 @@ public:
|
||||||
#ifdef MORM_HAS_EZC_LIBRARY
|
#ifdef MORM_HAS_EZC_LIBRARY
|
||||||
template<typename FunInfoStreamType>
|
template<typename FunInfoStreamType>
|
||||||
bool get_raw_value(const wchar_t * db_field_name, const wchar_t * flat_field_name, ModelData * model_data,
|
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<FunInfoStreamType> & env)
|
||||||
{
|
{
|
||||||
if( clear_stream )
|
|
||||||
{
|
|
||||||
stream.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
ModelEnv model_env_local;
|
ModelEnv model_env_local;
|
||||||
model_env = &model_env_local;
|
model_env = &model_env_local;
|
||||||
|
|
||||||
|
@ -278,15 +263,15 @@ public:
|
||||||
model_env->db_field_name = db_field_name;
|
model_env->db_field_name = db_field_name;
|
||||||
model_env->flat_field_name = flat_field_name;
|
model_env->flat_field_name = flat_field_name;
|
||||||
model_env->model_data = model_data;
|
model_env->model_data = model_data;
|
||||||
model_env->stream = &stream;
|
model_env->ezc_fun_info = &env;
|
||||||
model_env->ezc_fun_info = &fun_info;
|
model_env->ezc_fun_info_typeinfo = &typeid(env);
|
||||||
model_env->ezc_fun_info_typeinfo = &typeid(fun_info);
|
model_env->ezc_var_space_local = &env.res.space_local;
|
||||||
model_env->model = this;
|
model_env->model = this;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
fields();
|
fields();
|
||||||
fun_info.res = model_env->ezc_fun_result;
|
//fun_info.res = model_env->ezc_fun_result;
|
||||||
}
|
}
|
||||||
catch(...)
|
catch(...)
|
||||||
{
|
{
|
||||||
|
@ -294,6 +279,38 @@ public:
|
||||||
throw;
|
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;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if( model_env->ezc_var_date )
|
||||||
|
{
|
||||||
|
env.res.type = Ezc::Var<FunInfoStreamType>::Type::TYPE_DATE;
|
||||||
|
env.res.date = model_env->ezc_var_date;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// else
|
||||||
|
// if( model_env->model )
|
||||||
|
// {
|
||||||
|
// env.res.type = Ezc::Var<FunInfoStreamType>::Type::TYPE_MODEL;
|
||||||
|
// env.res.model = model_env->model;
|
||||||
|
// }
|
||||||
|
|
||||||
model_env = nullptr;
|
model_env = nullptr;
|
||||||
return model_env_local.was_field_found;
|
return model_env_local.was_field_found;
|
||||||
}
|
}
|
||||||
|
@ -764,14 +781,10 @@ protected:
|
||||||
{
|
{
|
||||||
model_env->was_field_found = true;
|
model_env->was_field_found = true;
|
||||||
|
|
||||||
if( model_env->stream )
|
if( model_env->ezc_var_space_local )
|
||||||
{
|
{
|
||||||
(*model_env->stream) << field_value;
|
model_env->ezc_var_space_local->set(field_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef MORM_HAS_EZC_LIBRARY
|
|
||||||
model_env->ezc_fun_result = convert_to_bool(field_value);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -828,13 +841,18 @@ protected:
|
||||||
{
|
{
|
||||||
if( model_connector && model_env )
|
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)) &&
|
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->wrapper.date )
|
|
||||||
{
|
{
|
||||||
model_env->wrapper.date = &field_value;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -849,13 +867,14 @@ protected:
|
||||||
{
|
{
|
||||||
if( model_connector && model_env )
|
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)) &&
|
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->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
|
else
|
||||||
|
@ -907,7 +926,7 @@ protected:
|
||||||
|
|
||||||
#ifdef MORM_HAS_EZC_LIBRARY
|
#ifdef MORM_HAS_EZC_LIBRARY
|
||||||
template<typename FunInfoStreamType>
|
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<FunInfoStreamType> &), 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->ezc_fun_info && model_env->ezc_fun_info_typeinfo && model_env->model )
|
||||||
{
|
{
|
||||||
|
@ -930,18 +949,18 @@ protected:
|
||||||
|
|
||||||
|
|
||||||
template<typename FunInfoStreamType>
|
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)
|
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::Env<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)) &&
|
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->was_field_found = true;
|
model_env->was_field_found = true;
|
||||||
|
|
||||||
if( typeid(Ezc::FunInfo<FunInfoStreamType>) == *model_env->ezc_fun_info_typeinfo )
|
if( typeid(Ezc::Env<FunInfoStreamType>) == *model_env->ezc_fun_info_typeinfo )
|
||||||
{
|
{
|
||||||
Ezc::FunInfo<FunInfoStreamType> * ezc_fun_info = reinterpret_cast<Ezc::FunInfo<FunInfoStreamType>*>(model_env->ezc_fun_info);
|
Ezc::Env<FunInfoStreamType> * ezc_fun_info = reinterpret_cast<Ezc::Env<FunInfoStreamType>*>(model_env->ezc_fun_info);
|
||||||
(model_env->model->*method)(*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
|
else
|
||||||
{
|
{
|
||||||
|
@ -976,7 +995,12 @@ protected:
|
||||||
(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->was_field_found = true;
|
model_env->was_field_found = true;
|
||||||
model_env->ezc_fun_result = (model_env->model->*method)();
|
bool res = (model_env->model->*method)();
|
||||||
|
|
||||||
|
if( model_env->ezc_var_space_local )
|
||||||
|
{
|
||||||
|
model_env->ezc_var_space_local->set(res);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1003,33 +1027,12 @@ protected:
|
||||||
(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->was_field_found = true;
|
model_env->was_field_found = true;
|
||||||
model_env->ezc_fun_result = (model_env->model->*method)();
|
bool res = (model_env->model->*method)();
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if( model_env->ezc_var_space_local )
|
||||||
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)
|
{
|
||||||
{
|
model_env->ezc_var_space_local->set(res);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1193,15 +1196,16 @@ protected:
|
||||||
{
|
{
|
||||||
ContainerItemType * item_type_null_pointer = nullptr;
|
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 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)) &&
|
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->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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1218,15 +1222,16 @@ protected:
|
||||||
{
|
{
|
||||||
ContainerItemType * item_type_null_pointer = nullptr;
|
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 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)) &&
|
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->wrapper.model_container_wrapper )
|
!model_env->model_container_wrapper )
|
||||||
{
|
{
|
||||||
model_env->wrapper.model_container_wrapper = new ModelWrapperList(&field_value);
|
model_env->was_field_found = true;
|
||||||
|
model_env->model_container_wrapper = new ModelWrapperList(&field_value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1243,15 +1248,16 @@ protected:
|
||||||
{
|
{
|
||||||
ContainerItemType * item_type_null_pointer = nullptr;
|
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 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)) &&
|
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->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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1268,15 +1274,16 @@ protected:
|
||||||
{
|
{
|
||||||
ContainerItemType * item_type_null_pointer = nullptr;
|
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 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)) &&
|
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->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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1561,29 +1568,29 @@ protected:
|
||||||
}
|
}
|
||||||
|
|
||||||
// those methods are used when converting fields to bool for Ezc library
|
// those methods are used when converting fields to bool for Ezc library
|
||||||
virtual bool convert_to_bool(char v);
|
// virtual bool convert_to_bool(char v);
|
||||||
virtual bool convert_to_bool(unsigned char v);
|
// virtual bool convert_to_bool(unsigned char v);
|
||||||
virtual bool convert_to_bool(wchar_t v);
|
// virtual bool convert_to_bool(wchar_t v);
|
||||||
virtual bool convert_to_bool(const std::wstring & str);
|
// virtual bool convert_to_bool(const std::wstring & str);
|
||||||
virtual bool convert_to_bool(const wchar_t * str);
|
// virtual bool convert_to_bool(const wchar_t * str);
|
||||||
virtual bool convert_to_bool(const std::string & str);
|
// virtual bool convert_to_bool(const std::string & str);
|
||||||
virtual bool convert_to_bool(const char * str);
|
// virtual bool convert_to_bool(const char * str);
|
||||||
virtual bool convert_to_bool(bool v);
|
// virtual bool convert_to_bool(bool v);
|
||||||
virtual bool convert_to_bool(short v);
|
// virtual bool convert_to_bool(short v);
|
||||||
virtual bool convert_to_bool(unsigned short v);
|
// virtual bool convert_to_bool(unsigned short v);
|
||||||
virtual bool convert_to_bool(int v);
|
// virtual bool convert_to_bool(int v);
|
||||||
virtual bool convert_to_bool(unsigned int v);
|
// virtual bool convert_to_bool(unsigned int v);
|
||||||
virtual bool convert_to_bool(long v);
|
// virtual bool convert_to_bool(long v);
|
||||||
virtual bool convert_to_bool(unsigned long v);
|
// virtual bool convert_to_bool(unsigned long v);
|
||||||
virtual bool convert_to_bool(long long v);
|
// virtual bool convert_to_bool(long long v);
|
||||||
virtual bool convert_to_bool(unsigned long long v);
|
// virtual bool convert_to_bool(unsigned long long v);
|
||||||
virtual bool convert_to_bool(float v);
|
// virtual bool convert_to_bool(float v);
|
||||||
virtual bool convert_to_bool(double v);
|
// virtual bool convert_to_bool(double v);
|
||||||
virtual bool convert_to_bool(long double v);
|
// virtual bool convert_to_bool(long double v);
|
||||||
virtual bool convert_to_bool(const pt::Date & date);
|
// virtual bool convert_to_bool(const pt::Date & date);
|
||||||
virtual bool convert_to_bool(const pt::TextStream & val);
|
// virtual bool convert_to_bool(const pt::TextStream & val);
|
||||||
virtual bool convert_to_bool(const pt::WTextStream & val);
|
// virtual bool convert_to_bool(const pt::WTextStream & val);
|
||||||
virtual bool convert_to_bool(const pt::Space & space);
|
// virtual bool convert_to_bool(const pt::Space & space);
|
||||||
|
|
||||||
|
|
||||||
template<typename ModelClass> friend class Finder;
|
template<typename ModelClass> friend class Finder;
|
||||||
|
|
|
@ -55,11 +55,16 @@ public:
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool is_container_empty()
|
virtual bool is_container_empty() const
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual size_t size() const
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
virtual void increment_iterator()
|
virtual void increment_iterator()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -84,11 +89,16 @@ public:
|
||||||
iterator = container->end();
|
iterator = container->end();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_container_empty()
|
bool is_container_empty() const
|
||||||
{
|
{
|
||||||
return container->empty();
|
return container->empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t size() const
|
||||||
|
{
|
||||||
|
return container->size();
|
||||||
|
}
|
||||||
|
|
||||||
void increment_iterator()
|
void increment_iterator()
|
||||||
{
|
{
|
||||||
if( iterator == container->end() )
|
if( iterator == container->end() )
|
||||||
|
|
|
@ -40,11 +40,10 @@
|
||||||
#include "finderhelper.h"
|
#include "finderhelper.h"
|
||||||
#include "fieldvaluehelper.h"
|
#include "fieldvaluehelper.h"
|
||||||
#include "morm_types.h"
|
#include "morm_types.h"
|
||||||
#include "wrapper.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef MORM_HAS_EZC_LIBRARY
|
#ifdef MORM_HAS_EZC_LIBRARY
|
||||||
#include "funinfo.h"
|
#include "env.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,13 +95,17 @@ public:
|
||||||
Model * child_model;
|
Model * child_model;
|
||||||
pt::Stream * stream;
|
pt::Stream * stream;
|
||||||
bool was_field_found; // used only in MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_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
|
#ifdef MORM_HAS_EZC_LIBRARY
|
||||||
void * ezc_fun_info;
|
void * ezc_fun_info;
|
||||||
bool ezc_fun_result;
|
|
||||||
const std::type_info * ezc_fun_info_typeinfo;
|
const std::type_info * ezc_fun_info_typeinfo;
|
||||||
|
pt::Space * ezc_var_space_local;
|
||||||
|
pt::Date * ezc_var_date;
|
||||||
|
|
||||||
|
ModelContainerWrapper * model_container_wrapper;
|
||||||
|
SpaceWrapper * space_wrapper;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ModelEnv()
|
ModelEnv()
|
||||||
|
@ -137,12 +140,14 @@ public:
|
||||||
child_model = e.child_model;
|
child_model = e.child_model;
|
||||||
stream = e.stream;
|
stream = e.stream;
|
||||||
was_field_found = e.was_field_found;
|
was_field_found = e.was_field_found;
|
||||||
wrapper = e.wrapper;
|
|
||||||
|
|
||||||
#ifdef MORM_HAS_EZC_LIBRARY
|
#ifdef MORM_HAS_EZC_LIBRARY
|
||||||
ezc_fun_info = e.ezc_fun_info;
|
ezc_fun_info = e.ezc_fun_info;
|
||||||
ezc_fun_result = e.ezc_fun_result;
|
|
||||||
ezc_fun_info_typeinfo = e.ezc_fun_info_typeinfo;
|
ezc_fun_info_typeinfo = e.ezc_fun_info_typeinfo;
|
||||||
|
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
|
#endif
|
||||||
|
|
||||||
// schema_name and table_name don't have to be copied
|
// schema_name and table_name don't have to be copied
|
||||||
|
@ -188,12 +193,14 @@ public:
|
||||||
child_model = nullptr;
|
child_model = nullptr;
|
||||||
stream = nullptr;
|
stream = nullptr;
|
||||||
was_field_found = false;
|
was_field_found = false;
|
||||||
wrapper.clear();
|
|
||||||
|
|
||||||
#ifdef MORM_HAS_EZC_LIBRARY
|
#ifdef MORM_HAS_EZC_LIBRARY
|
||||||
ezc_fun_info = nullptr;
|
ezc_fun_info = nullptr;
|
||||||
ezc_fun_result = false;
|
|
||||||
ezc_fun_info_typeinfo = nullptr;
|
ezc_fun_info_typeinfo = nullptr;
|
||||||
|
ezc_var_space_local = nullptr;
|
||||||
|
ezc_var_date = nullptr;
|
||||||
|
model_container_wrapper = nullptr;
|
||||||
|
space_wrapper = nullptr;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,8 +46,7 @@
|
||||||
#define MORM_MODEL_WORK_MODE_ITERATE_PRIMARY_KEY_VALUES 8
|
#define MORM_MODEL_WORK_MODE_ITERATE_PRIMARY_KEY_VALUES 8
|
||||||
#define MORM_MODEL_WORK_MODE_SET_FIELD_VALUE 9
|
#define MORM_MODEL_WORK_MODE_SET_FIELD_VALUE 9
|
||||||
#define MORM_MODEL_WORK_MODE_GET_FIELD_MODEL 10
|
#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 11
|
||||||
#define MORM_MODEL_WORK_MODE_PUT_FIELD_RAW_VALUE_TO_STREAM 12
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,11 @@ class SpaceWrapper : public BaseObjectWrapper
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
SpaceWrapper() = delete;
|
||||||
|
SpaceWrapper(const SpaceWrapper &) = delete;
|
||||||
|
SpaceWrapper & operator=(const SpaceWrapper &) = delete;
|
||||||
|
|
||||||
|
|
||||||
SpaceWrapper(pt::Space * space)
|
SpaceWrapper(pt::Space * space)
|
||||||
{
|
{
|
||||||
this->space = space;
|
this->space = space;
|
||||||
|
@ -99,6 +104,7 @@ public:
|
||||||
return std::numeric_limits<size_t>::max();
|
return std::numeric_limits<size_t>::max();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
const size_t SPACE_INDICES_TABLE_SIZE = 32;
|
const size_t SPACE_INDICES_TABLE_SIZE = 32;
|
||||||
|
|
193
src/wrapper.h
193
src/wrapper.h
|
@ -1,193 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is a part of morm
|
|
||||||
* and is distributed under the 2-Clause BSD licence.
|
|
||||||
* Author: Tomasz Sowa <t.sowa@ttmath.org>
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2021, Tomasz Sowa
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* 1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
*
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
|
||||||
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
* POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef headerfile_morm_wrapper
|
|
||||||
#define headerfile_morm_wrapper
|
|
||||||
|
|
||||||
#include "spacewrapper.h"
|
|
||||||
#include "date/date.h"
|
|
||||||
#include "modelcontainerwrapper.h"
|
|
||||||
|
|
||||||
|
|
||||||
namespace morm
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
class Wrapper
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
Model * model;
|
|
||||||
ModelContainerWrapper * model_container_wrapper;
|
|
||||||
pt::Date * date;
|
|
||||||
SpaceWrapper * space_wrapper;
|
|
||||||
|
|
||||||
|
|
||||||
Wrapper()
|
|
||||||
{
|
|
||||||
model = nullptr;
|
|
||||||
model_container_wrapper = nullptr;
|
|
||||||
date = nullptr;
|
|
||||||
space_wrapper = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Wrapper(const Wrapper & wrapper)
|
|
||||||
{
|
|
||||||
model = nullptr;
|
|
||||||
model_container_wrapper = nullptr;
|
|
||||||
date = nullptr;
|
|
||||||
space_wrapper = nullptr;
|
|
||||||
|
|
||||||
copy(wrapper);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Wrapper & operator=(const Wrapper & wrapper)
|
|
||||||
{
|
|
||||||
clear();
|
|
||||||
copy(wrapper);
|
|
||||||
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
virtual ~Wrapper()
|
|
||||||
{
|
|
||||||
clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
virtual void clear()
|
|
||||||
{
|
|
||||||
if( model_container_wrapper )
|
|
||||||
{
|
|
||||||
model_container_wrapper->decrement_reference_counter();
|
|
||||||
|
|
||||||
if( model_container_wrapper->get_reference_counter() == 0 && model_container_wrapper->should_be_auto_removed() )
|
|
||||||
{
|
|
||||||
delete model_container_wrapper;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( space_wrapper )
|
|
||||||
{
|
|
||||||
space_wrapper->decrement_reference_counter();
|
|
||||||
|
|
||||||
if( space_wrapper->get_reference_counter() == 0 && space_wrapper->should_be_auto_removed() )
|
|
||||||
{
|
|
||||||
delete space_wrapper;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
model = nullptr;
|
|
||||||
model_container_wrapper = nullptr;
|
|
||||||
date = nullptr;
|
|
||||||
space_wrapper = nullptr;
|
|
||||||
|
|
||||||
clear_childs();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
virtual void clear_childs()
|
|
||||||
{
|
|
||||||
childs_map.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
virtual Wrapper * add_child(const std::wstring & child_name, Wrapper & wrapper)
|
|
||||||
{
|
|
||||||
Wrapper & w = childs_map[child_name];
|
|
||||||
w.clear();
|
|
||||||
w = wrapper;
|
|
||||||
return &w;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
virtual Wrapper * find_child(const std::wstring & child_name)
|
|
||||||
{
|
|
||||||
auto i = childs_map.find(child_name);
|
|
||||||
|
|
||||||
if( i != childs_map.end() )
|
|
||||||
{
|
|
||||||
return &i->second;
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool has_object()
|
|
||||||
{
|
|
||||||
return model || model_container_wrapper || date || space_wrapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool has_model_object()
|
|
||||||
{
|
|
||||||
return model || model_container_wrapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
std::map<std::wstring, Wrapper> childs_map;
|
|
||||||
|
|
||||||
|
|
||||||
void copy(const Wrapper & wrapper)
|
|
||||||
{
|
|
||||||
model = wrapper.model;
|
|
||||||
model_container_wrapper = wrapper.model_container_wrapper;
|
|
||||||
date = wrapper.date;
|
|
||||||
space_wrapper = wrapper.space_wrapper;
|
|
||||||
|
|
||||||
if( model_container_wrapper )
|
|
||||||
{
|
|
||||||
model_container_wrapper->increment_reference_counter();
|
|
||||||
}
|
|
||||||
|
|
||||||
if( space_wrapper )
|
|
||||||
{
|
|
||||||
space_wrapper->increment_reference_counter();
|
|
||||||
}
|
|
||||||
|
|
||||||
// childs_map don't need to be copied
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue