From 38b85722b8c8717a86d4a002b7a2a35d02bc4ff6 Mon Sep 17 00:00:00 2001 From: Tomasz Sowa Date: Thu, 5 Jul 2018 09:51:26 +0000 Subject: [PATCH] Model and BaseExpression: changed the template taking a container to std::list git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1121 e52654a7-88a9-db11-a3e9-0013d4bc506e --- src/baseexpression.h | 77 +++--------------------------------------- src/dbconnector.cpp | 1 + src/dbconnector.h | 13 ++++--- src/flatconnector.cpp | 1 + src/flatconnector.h | 2 +- src/model.h | 13 ++++--- src/modelconnector.cpp | 7 +--- src/modelconnector.h | 2 -- 8 files changed, 23 insertions(+), 93 deletions(-) diff --git a/src/baseexpression.h b/src/baseexpression.h index 5d37c25..c948de8 100644 --- a/src/baseexpression.h +++ b/src/baseexpression.h @@ -116,8 +116,8 @@ public: field_in_generic>(stream, field_name, container); } - template - void field_list(const wchar_t * field_name, const std::list & field_value, bool insertable, bool updatable, bool is_primary_key, + template + void field_list(const wchar_t * field_name, ModelContainer & field_value, bool insertable, bool updatable, bool is_primary_key, ModelConnector * model_connector, int model_connector_mode) { if( out_stream && can_field_be_generated(insertable, updatable, is_primary_key) ) @@ -251,8 +251,8 @@ protected: } - template - void put_field_value_list(const std::list & field_value, ModelConnector * model_connector, int model_connector_mode) + template + void put_field_value_list(ModelContainer & field_value, ModelConnector * model_connector, int model_connector_mode) { if( out_stream ) { @@ -261,7 +261,7 @@ protected: bool is_first = true; - for(ModelClass m : field_value) + for(auto & m : field_value) { if( out_stream ) { @@ -354,73 +354,6 @@ protected: - /* - template - void field_container(const wchar_t * field_name, Container container, bool insertable = true, bool updatable = true) - { - typename Container::value Value; // czy tu jest Container::value? sprawdzic - - if( !is_first_field ) - (*out_stream) << ","; - - if( work_mode == ORM_STREAM_MODE_CREATING_JSON ) - { - (*out_stream) << "["; - boolean is_first = true; - - for(Value v : container) - { - if( !is_first ) - (*out_stream) << ","; - - v.map_fields(this); - is_first = false; - } - - (*out_stream) << "]"; - } - // a co z bazą danych? - - - is_first_field = false; - } - */ - - - - /* - template - virtual void field_container(const wchar_t * field_name, Container container, bool insertable = true, bool updatable = true) - { - typename Container::value Value; // czy tu jest Container::value? sprawdzic - - if( !is_first_field ) - (*out_stream) << ","; - - if( work_mode == ORM_STREAM_MODE_CREATING_JSON ) - { - (*out_stream) << "["; - boolean is_first = true; - - for(Value v : container) - { - if( !is_first ) - (*out_stream) << ","; - - v.map_fields(this); - is_first = false; - } - - (*out_stream) << "]"; - } - // a co z bazą danych? - - - is_first_field = false; - } - */ - - }; } diff --git a/src/dbconnector.cpp b/src/dbconnector.cpp index 840c276..21304ec 100644 --- a/src/dbconnector.cpp +++ b/src/dbconnector.cpp @@ -34,6 +34,7 @@ #include #include "dbconnector.h" +#include "dbexpression.h" #include "model.h" #include "utf8/utf8.h" diff --git a/src/dbconnector.h b/src/dbconnector.h index fc653bb..c5bcc35 100644 --- a/src/dbconnector.h +++ b/src/dbconnector.h @@ -35,7 +35,6 @@ #ifndef headerfile_morm_dbconnector #define headerfile_morm_dbconnector -#include "dbexpression.h" #include "textstream/textstream.h" #include "logger/logger.h" @@ -43,7 +42,7 @@ namespace morm { class Model; - +class DbExpression; class DbConnector { @@ -116,11 +115,11 @@ public: virtual void clear_value(Model & field_value); - template - void clear_value(std::list & list) - { - list.clear(); - } +// template +// void clear_value(std::list & list) +// { +// list.clear(); +// } virtual void get_value(const char * value_str, char & field_value); virtual void get_value(const char * value_str, unsigned char & field_value); diff --git a/src/flatconnector.cpp b/src/flatconnector.cpp index 75b4f92..d686fd5 100644 --- a/src/flatconnector.cpp +++ b/src/flatconnector.cpp @@ -33,6 +33,7 @@ */ #include "flatconnector.h" +#include "flatexpression.h" #include "morm_types.h" #include "model.h" diff --git a/src/flatconnector.h b/src/flatconnector.h index a4ab8b1..d1e403a 100644 --- a/src/flatconnector.h +++ b/src/flatconnector.h @@ -35,13 +35,13 @@ #ifndef headerfile_morm_flatconnector #define headerfile_morm_flatconnector -#include "flatexpression.h" #include "textstream/textstream.h" namespace morm { class Model; +class FlatExpression; class FlatConnector diff --git a/src/model.h b/src/model.h index 7791be1..7dddad0 100644 --- a/src/model.h +++ b/src/model.h @@ -39,7 +39,8 @@ #include "textstream/textstream.h" #include "modelconnector.h" - +#include "dbexpression.h" +#include "flatexpression.h" @@ -457,8 +458,10 @@ protected: } - template - void field_list(const wchar_t * db_field_name, const wchar_t * flat_field_name, std::list & field_list, bool insertable, bool updatable, bool is_primary_key) +// template +// void field_list(const wchar_t * db_field_name, const wchar_t * flat_field_name, std::list & field_list, bool insertable, bool updatable, bool is_primary_key) + template + void field_list(const wchar_t * db_field_name, const wchar_t * flat_field_name, ModelContainer & field_container, bool insertable, bool updatable, bool is_primary_key) { // IMPLEMENTME what about db? if( model_connector ) @@ -476,14 +479,14 @@ protected: // IMPROVE ME // what about model_data and save_mode? // may it should be placed inside some structure? - flat_expression->field_list(flat_field_name, field_list, insertable, updatable, is_primary_key, model_connector, model_connector_mode); + flat_expression->field_list(flat_field_name, field_container, insertable, updatable, is_primary_key, model_connector, model_connector_mode); } } } if( model_connector_mode == MORM_MODEL_CONNECTOR_MODE_CLEARING_VALUE ) { - field_list.clear(); + field_container.clear(); } } } diff --git a/src/modelconnector.cpp b/src/modelconnector.cpp index 27229e9..33a6b0f 100644 --- a/src/modelconnector.cpp +++ b/src/modelconnector.cpp @@ -33,9 +33,7 @@ */ #include "modelconnector.h" -#include "model.h" -#include "flatconnector.h" -#include "dbconnector.h" + namespace morm @@ -47,9 +45,6 @@ ModelConnector::ModelConnector() db_connector = nullptr; logger = nullptr; - //expression_callback = nullptr; - //db_connector_callback = nullptr; - out_stream = nullptr; out_stream_allocated = false; } diff --git a/src/modelconnector.h b/src/modelconnector.h index 90e33a9..6633efa 100644 --- a/src/modelconnector.h +++ b/src/modelconnector.h @@ -35,9 +35,7 @@ #ifndef headerfile_morm_modelconnector #define headerfile_morm_modelconnector -#include "baseexpression.h" #include "dbconnector.h" -#include "flatexpression.h" #include "flatconnector.h" #include "logger/logger.h"