start adding support for Ezc library - Ezc::Generator is able to get variable value and call a static function

This commit is contained in:
2021-05-31 18:40:28 +02:00
parent 284cbc5c66
commit 515e806a50
8 changed files with 321 additions and 11 deletions

View File

@@ -240,6 +240,52 @@ void Model::get_table_name(std::string & str, bool with_schema_name, ModelData *
}
void Model::put_field_value(const wchar_t * flat_field_name, pt::TextStream & stream, bool clear_stream)
{
put_field_value(flat_field_name, nullptr, stream, clear_stream);
}
void Model::put_field_value(const wchar_t * flat_field_name, ModelData * model_data, pt::TextStream & stream, bool clear_stream)
{
if( clear_stream )
{
stream.clear();
}
ModelEnv model_env_local;
model_env = &model_env_local;
model_env->has_primary_key_set = has_primary_key_set;
model_env->model_work_mode = MORM_MODEL_WORK_MODE_GENERATING_FLAT_STRING;
model_env->model_data = model_data;
if( model_connector )
{
FlatConnector * flat_connector = model_connector->get_flat_connector();
if( flat_connector )
{
try
{
flat_connector->to_text(flat_field_name, stream, *this);
}
catch(...)
{
model_env = nullptr;
throw;
}
}
}
model_env = nullptr;
}
void Model::to_text(pt::TextStream & stream, ModelData * model_data, bool clear_stream, bool dump_mode)
{
if( clear_stream )
@@ -1471,6 +1517,14 @@ void Model::field_model(const wchar_t * db_field_name, const wchar_t * flat_fiel
field_model_clear_values(field_model);
}
if( model_env->model_work_mode == MORM_MODEL_WORK_MODE_GET_FIELD_MODEL )
{
//if( pt::is_equal(db_field_name, model_env->db_field_model) && pt::is_equal(flat_field_name, model_env->flat_field_name) )
if( flat_field_name && model_env->flat_field_name && pt::is_equal(flat_field_name, model_env->flat_field_name) )
model_env->model = &field_model;
}
field_model.model_env = nullptr;
}
}