add basic support for serializing objects to xml
This commit is contained in:
@@ -139,6 +139,31 @@ public:
|
||||
put_field_value_or_null(field_value, getter_method, field_type, model_env);
|
||||
}
|
||||
}
|
||||
else
|
||||
if( work_mode == MORM_WORK_MODE_MODEL_FIELDS_VALUES_FIELDS )
|
||||
{
|
||||
(*out_stream) << '\n';
|
||||
put_field_name_and_table_if_needed(field_name, field_type, model_env);
|
||||
put_name_value_separator();
|
||||
put_field_value_or_null(field_value, getter_method, field_type, model_env);
|
||||
put_name_value_separator();
|
||||
/*
|
||||
* IMPROVEME currently only used in XML serializer so we put / directly here
|
||||
* we need some virtual methods for it
|
||||
*/
|
||||
before_field_name(); // here should be a different method such as before_closing_field_name()
|
||||
|
||||
if( out_stream )
|
||||
{
|
||||
(*out_stream) << '/';
|
||||
}
|
||||
|
||||
esc(field_name, *out_stream, FT::default_type, nullptr); /* do not use provided field_type here - it would use e.g. binary mode if it was set, similar don't use model_env */
|
||||
after_field_name(); // here too, e.g. after_closing_field_name()
|
||||
/*
|
||||
*
|
||||
*/
|
||||
}
|
||||
|
||||
field_after();
|
||||
}
|
||||
@@ -209,6 +234,31 @@ public:
|
||||
put_name_value_separator();
|
||||
put_field_value_list(field_value, model_container_type, model_connector, model_env, foo);
|
||||
}
|
||||
else
|
||||
if( work_mode == MORM_WORK_MODE_MODEL_FIELDS_VALUES_FIELDS )
|
||||
{
|
||||
(*out_stream) << '\n';
|
||||
put_field_name_and_table_if_needed(field_name, field_type, model_env);
|
||||
put_name_value_separator();
|
||||
put_field_value_list(field_value, model_container_type, model_connector, model_env, foo);
|
||||
put_name_value_separator();
|
||||
/*
|
||||
* IMPROVEME currently only used in XML serializer so we put / directly here
|
||||
* we need some virtual methods for it
|
||||
*/
|
||||
before_field_name(); // here should be a different method such as before_closing_field_name()
|
||||
|
||||
if( out_stream )
|
||||
{
|
||||
(*out_stream) << '/';
|
||||
}
|
||||
|
||||
esc(field_name, *out_stream, FT::default_type, nullptr); /* do not use provided field_type here - it would use e.g. binary mode if it was set, similar don't use model_env */
|
||||
after_field_name(); // here too, e.g. after_closing_field_name()
|
||||
/*
|
||||
*
|
||||
*/
|
||||
}
|
||||
|
||||
field_after();
|
||||
}
|
||||
@@ -237,6 +287,32 @@ public:
|
||||
put_name_value_separator();
|
||||
generate_from_model(field_model);
|
||||
}
|
||||
else
|
||||
if( work_mode == MORM_WORK_MODE_MODEL_FIELDS_VALUES_FIELDS )
|
||||
{
|
||||
(*out_stream) << '\n';
|
||||
put_field_name_and_table_if_needed(field_name, field_type, model_env);
|
||||
put_name_value_separator();
|
||||
generate_from_model(field_model);
|
||||
put_name_value_separator();
|
||||
/*
|
||||
* IMPROVEME currently only used in XML serializer so we put / directly here
|
||||
* we need some virtual methods for it
|
||||
*/
|
||||
before_field_name(); // here should be a different method such as before_closing_field_name()
|
||||
|
||||
if( out_stream )
|
||||
{
|
||||
(*out_stream) << '/';
|
||||
}
|
||||
|
||||
esc(field_name, *out_stream, FT::default_type, nullptr); /* do not use provided field_type here - it would use e.g. binary mode if it was set, similar don't use model_env */
|
||||
after_field_name(); // here too, e.g. after_closing_field_name()
|
||||
(*out_stream) << '\n';
|
||||
/*
|
||||
*
|
||||
*/
|
||||
}
|
||||
|
||||
field_after();
|
||||
}
|
||||
|
Reference in New Issue
Block a user