diff --git a/xml_converter/doc/trail_data/trail_data.md b/xml_converter/doc/trail_data/trail_data.md index 44a41608..35ad1556 100644 --- a/xml_converter/doc/trail_data/trail_data.md +++ b/xml_converter/doc/trail_data/trail_data.md @@ -10,6 +10,9 @@ custom_functions: read.xml: function: xml_attribute_to_trail_data side_effects: [Map ID] + write.xml: + function: trail_data_to_xml_attribute + side_effects: [Map ID] --- The coordinates of each point along a trail path. diff --git a/xml_converter/generators/cpp_templates/class_template.cpp b/xml_converter/generators/cpp_templates/class_template.cpp index 76d510f8..4b1874be 100644 --- a/xml_converter/generators/cpp_templates/class_template.cpp +++ b/xml_converter/generators/cpp_templates/class_template.cpp @@ -65,7 +65,7 @@ vector {{cpp_class}}::as_xml(XMLWriterState* state) const { {% for attribute_variable in attribute_variables %} {% if attribute_variable.write_to_xml == true %} if (this->{{attribute_variable.attribute_flag_name}}) { - xml_node_contents.push_back({{attribute_variable.serialize_xml_function}}("{{attribute_variable.default_xml_field}}", state, &this->{{attribute_variable.attribute_name}})); + xml_node_contents.push_back({{attribute_variable.serialize_xml_function}}("{{attribute_variable.default_xml_field}}", state, &this->{{attribute_variable.attribute_name}}{% for side_effect in attribute_variable.serialize_xml_side_effects %}, &(this->{{side_effect}}){% endfor %})); } {% endif %} {% endfor %} diff --git a/xml_converter/generators/generate_cpp.py b/xml_converter/generators/generate_cpp.py index a0d6c44b..7547acf4 100644 --- a/xml_converter/generators/generate_cpp.py +++ b/xml_converter/generators/generate_cpp.py @@ -54,7 +54,7 @@ class AttributeVariable: # The function name and additional side effect pointers for xml serialization. serialize_xml_function: str - # serialize_xml_side_effects: List[str] + serialize_xml_side_effects: List[str] # The function name and additional side effect pointers for xml deserialization. deserialize_xml_function: str @@ -309,7 +309,7 @@ def generate_cpp_variable_data( is_component=True, serialize_xml_function=component_class_name + "_to_xml_attribute", - # serialize_xml_side_effects=[], + serialize_xml_side_effects=[], deserialize_xml_function="xml_attribute_to_" + component_class_name, deserialize_xml_side_effects=[], serialize_proto_function="to_proto_" + component_class_name, @@ -386,7 +386,7 @@ def generate_cpp_variable_data( side_effects=side_effects, serialize_xml_function=serialize_xml_function, - # serialize_xml_side_effects=serialize_xml_side_effects, + serialize_xml_side_effects=serialize_xml_side_effects, deserialize_xml_function=deserialize_xml_function, deserialize_xml_side_effects=deserialize_xml_side_effects, serialize_proto_function=serialize_proto_function, @@ -480,7 +480,7 @@ def write_attribute(output_directory: str, data: Dict[str, Document]) -> List[st deserialize_xml_function="", serialize_proto_function="", deserialize_proto_function="", - # serialize_xml_side_effects=[], + serialize_xml_side_effects=[], deserialize_xml_side_effects=[], # serialize_proto_side_effects=[], deserialize_proto_side_effects=[], @@ -515,7 +515,7 @@ def write_attribute(output_directory: str, data: Dict[str, Document]) -> List[st deserialize_xml_function="", serialize_proto_function="", deserialize_proto_function="", - # serialize_xml_side_effects=[], + serialize_xml_side_effects=[], deserialize_xml_side_effects=[], # serialize_proto_side_effects=[], deserialize_proto_side_effects=[], @@ -543,7 +543,7 @@ def write_attribute(output_directory: str, data: Dict[str, Document]) -> List[st deserialize_xml_function="", serialize_proto_function="", deserialize_proto_function="", - # serialize_xml_side_effects=[], + serialize_xml_side_effects=[], deserialize_xml_side_effects=[], # serialize_proto_side_effects=[], deserialize_proto_side_effects=[], diff --git a/xml_converter/src/attribute/trail_data.cpp b/xml_converter/src/attribute/trail_data.cpp index f17463ac..1d4494ff 100644 --- a/xml_converter/src/attribute/trail_data.cpp +++ b/xml_converter/src/attribute/trail_data.cpp @@ -85,7 +85,9 @@ void xml_attribute_to_trail_data( string trail_data_to_xml_attribute( const string& attribute_name, XMLWriterState* state, - const TrailData* value) { + const TrailData* value, + const int* map_id_value, + const bool* is_map_id_set) { return " " + attribute_name + "=\"" + "temp_name_of_trail.trl" + "\""; } diff --git a/xml_converter/src/attribute/trail_data.hpp b/xml_converter/src/attribute/trail_data.hpp index 733b03f1..29e96d05 100644 --- a/xml_converter/src/attribute/trail_data.hpp +++ b/xml_converter/src/attribute/trail_data.hpp @@ -35,7 +35,9 @@ void xml_attribute_to_trail_data( std::string trail_data_to_xml_attribute( const std::string& attribute_name, XMLWriterState* state, - const TrailData* value); + const TrailData* value, + const int* map_id_value, + const bool* is_map_id_set); void proto_to_trail_data( waypoint::TrailData input, diff --git a/xml_converter/src/trail_gen.cpp b/xml_converter/src/trail_gen.cpp index d5c1e681..23367e69 100644 --- a/xml_converter/src/trail_gen.cpp +++ b/xml_converter/src/trail_gen.cpp @@ -235,7 +235,7 @@ vector Trail::as_xml(XMLWriterState* state) const { xml_node_contents.push_back(image_to_xml_attribute("Texture", state, &this->texture)); } if (this->trail_data_is_set) { - xml_node_contents.push_back(trail_data_to_xml_attribute("TrailData", state, &this->trail_data)); + xml_node_contents.push_back(trail_data_to_xml_attribute("TrailData", state, &this->trail_data, &(this->map_id), &(this->map_id_is_set))); } if (this->trail_scale_is_set) { xml_node_contents.push_back(float_to_xml_attribute("TrailScale", state, &this->trail_scale));