Skip to content

refactor, remove compiler_meta_t and field_descriptor_t from new type engine #254

@steven-varga

Description

@steven-varga

Summary

`compiler_meta_t` and `field_descriptor_t<owner,field>` are plugin-output scaffolding
with no independent value:

  • The only consumer is the h5cpp-compiler plugin, which has no released users yet.
  • C++26 reflection bypasses them entirely — the auto-reflection path lands directly
    into a new `storage_traits_impl_t` partial specialization, no intermediate type
    list required.
  • For the pre-C++26 manual-registration case, the old `dt_t` / `h5::create()`
    path (still present via `resolved_type_t`) is cleaner and more direct.
  • Zero tests exercise these types. Zero external users exist.

Work

All changes are in `h5cpp/H5Tmeta.hpp`:

  • Remove `metadata_version`, `field_descriptor_t`, `is_reflected_compound_t`,
    `compiler_meta_t` forward declaration (~lines 286-302).
  • Remove `storage_traits_impl_t` partial specialization for
    `is_reflected_compound_t::value` (~lines 399-427).
  • Remove `is_transport_contiguous_impl_t` specialization for same (~lines 432-443).
  • Remove `access_traits_t` specialization for same (~line 631).
  • Remove the three `!is_reflected_compound_t::value` guards from the
    contiguous-sequence `access_traits_t` specializations (lines 455, 676, 696) —
    they were no-ops for all non-plugin types and are now dead.
  • Update stale comment in `test/H5Aall.cpp` (line 145).

What is NOT removed

  • `storage_traits_impl_t` — backbone of the new type engine, survives.
  • `is_transport_contiguous_t` / `access_traits_t` — survive.
  • `resolved_type_t` fallback to `dt_t` — permanent compat shim, survives.
  • Old `dt_t` / `h5::create()` path — survives as the manual-registration escape hatch.

The C++26 auto-reflection specialization will land directly into
`storage_traits_impl_t` in a later PR with no dependency on the removed types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions