|
|
@@ -37,6 +37,28 @@ void init_{{_oneof.name}}(const id field_id)
|
|
|
{% endmacro %}
|
|
|
{# #}
|
|
|
{# ------------------------------------------------------------------------------------------------------------------ #}
|
|
|
+{# #}
|
|
|
+{% macro oneof_assign(_oneof) %}
|
|
|
+if(rhs.get_which_{{_oneof.name}}() != {{_oneof.which_oneof}})
|
|
|
+{
|
|
|
+ // First delete the old object in the oneof.
|
|
|
+ clear_{{_oneof.name}}();
|
|
|
+}
|
|
|
+
|
|
|
+switch(rhs.get_which_{{_oneof.name}}())
|
|
|
+{
|
|
|
+ {% for field in _oneof.fields() %}
|
|
|
+ case id::{{field.variable_id_name}}:
|
|
|
+ set_{{field.name}}(rhs.get_{{field.name}}());
|
|
|
+ break;
|
|
|
+ {% endfor %}
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+}
|
|
|
+{% endmacro %}
|
|
|
+{# #}
|
|
|
+{# ------------------------------------------------------------------------------------------------------------------ #}
|
|
|
+{# #}
|
|
|
{% macro oneof_clear(_oneof) %}
|
|
|
void clear_{{_oneof.name}}()
|
|
|
{
|
|
|
@@ -336,6 +358,18 @@ class {{ msg.name }} final: public ::EmbeddedProto::MessageInterface
|
|
|
{% endfor %}
|
|
|
};
|
|
|
|
|
|
+ {{ msg.name }}& operator=(const {{ msg.name }}& rhs)
|
|
|
+ {
|
|
|
+ {% for field in msg.fields() %}
|
|
|
+ set_{{ field.name }}(rhs.get_{{ field.name }}());
|
|
|
+ {% endfor %}
|
|
|
+ {% for oneof in msg.oneofs() %}
|
|
|
+ {{ oneof_assign(oneof)|indent(6) }}
|
|
|
+ {% endfor %}
|
|
|
+
|
|
|
+ return *this;
|
|
|
+ }
|
|
|
+
|
|
|
{% for field in msg.fields() %}
|
|
|
{{ field_get_set_macro(field)|indent(4) }}
|
|
|
{% endfor %}
|