fixed: in Model::generate_insert_query there was not ModelEnv set (was a null pointer)
similarly in generate_update_query and generate_remove_query added: support std::vector<> in Model::field() methods added: serializing std::vector and std::list for non-model classes in BaseExpression git-svn-id: svn://ttmath.org/publicrep/morm/trunk@1200 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
@@ -312,7 +312,40 @@ protected:
|
||||
(*out_stream) << ") ";
|
||||
}
|
||||
|
||||
// what about lists with a pod types? e.g. list<int>
|
||||
|
||||
template<typename ModelContainer>
|
||||
void put_field_value_list_non_model(ModelContainer & field_value, ModelConnector * model_connector)
|
||||
{
|
||||
if( model_connector && out_stream )
|
||||
{
|
||||
bool is_first = true;
|
||||
before_field_value_list();
|
||||
|
||||
for(const auto & m : field_value)
|
||||
{
|
||||
if( !is_first )
|
||||
{
|
||||
field_value_list_separator();
|
||||
}
|
||||
|
||||
//ModelEnv model_env_local(*model_env);
|
||||
//m.model_env = &model_env_local;
|
||||
//before_field_value(field_value);
|
||||
//m.set_connector(model_connector);
|
||||
|
||||
put_field_value(m);
|
||||
|
||||
//generate_from_model(m);
|
||||
//m.model_env = nullptr;
|
||||
//after_field_value(field_value);
|
||||
is_first = false;
|
||||
}
|
||||
|
||||
after_field_value_list();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template<typename ModelContainer>
|
||||
void put_field_value_list(ModelContainer & field_value, ModelConnector * model_connector, ModelEnv * model_env)
|
||||
{
|
||||
@@ -343,6 +376,182 @@ protected:
|
||||
}
|
||||
|
||||
|
||||
void put_field_value_list(std::vector<char> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<unsigned char> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<std::wstring> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<std::string> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<bool> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<short> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<unsigned short> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<int> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<unsigned int> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<long> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<unsigned long> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<long long> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<unsigned long long> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<float> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<double> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<long double> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::vector<PT::Date> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void put_field_value_list(std::list<char> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<unsigned char> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<std::wstring> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<std::string> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<bool> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<short> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<unsigned short> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<int> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<unsigned int> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<long> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<unsigned long> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<long long> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<unsigned long long> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<float> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<double> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<long double> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
void put_field_value_list(std::list<PT::Date> & field_value, ModelConnector * model_connector, ModelEnv *)
|
||||
{
|
||||
put_field_value_list_non_model(field_value, model_connector);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// used in 'in()' statements, may should be renamed?
|
||||
template<typename FieldValue, typename Container>
|
||||
void field_in_generic(PT::TextStream & stream, const wchar_t * field_name, const Container & container, ModelEnv * model_env)
|
||||
@@ -437,7 +646,13 @@ protected:
|
||||
template<typename ListType>
|
||||
void put_type(const std::list<ListType> & model, PT::TextStream & stream)
|
||||
{
|
||||
stream << "table";
|
||||
stream << "table"; // may just use std::list?
|
||||
}
|
||||
|
||||
template<typename ListType>
|
||||
void put_type(const std::vector<ListType> & model, PT::TextStream & stream)
|
||||
{
|
||||
stream << "table"; // may just just std::vector?
|
||||
}
|
||||
|
||||
};
|
||||
|
Reference in New Issue
Block a user