{%- for pf in struct.packed.packed_fields_in_ordinal_order %}
{%-   set kind = pf.field.kind %}
{%-   set name = pf.field.name %}

{%-   if kind|is_union_kind %}
inline void {{struct.name}}DataView::Get{{name|under_to_camel}}DataView(
    {{kind|cpp_data_view_type}}* output) {
{%-     if pf.min_version != 0 %}
  auto pointer = data_->header_.version >= {{pf.min_version}}
                 ? &data_->{{name}} : nullptr;
{%-     else %}
  auto pointer = &data_->{{name}};
{%-     endif %}
  *output = {{kind|cpp_data_view_type}}(pointer, context_);
}

{%-   elif kind|is_object_kind %}
inline void {{struct.name}}DataView::Get{{name|under_to_camel}}DataView(
    {{kind|cpp_data_view_type}}* output) {
{%-     if pf.min_version != 0 %}
  auto pointer = data_->header_.version >= {{pf.min_version}}
                 ? data_->{{name}}.Get() : nullptr;
{%-     else %}
  auto pointer = data_->{{name}}.Get();
{%-     endif %}
  *output = {{kind|cpp_data_view_type}}(pointer, context_);
}
{%-   endif %}
{%- endfor %}

