parquet_push_settings_to_cpp Subroutine

public subroutine parquet_push_settings_to_cpp()

Mirrors both output settings to the C++ side, which prints three warnings and one report of its own and cannot see Fortran module variables.

Resolved integers cross the boundary, never tokens. The fold and the validation happen once, here in Fortran; a second string parser in parquet_wrapper.cpp is exactly the drift this arrangement exists to avoid. And the C++ side gets no setter of its own, so this is the single writer and the mirror is derived rather than an independent copy that could diverge. Refreshes the C++ side's copy of every mirrored setting. Called where Fortran is about to hand control to C++ -- parquet_open_reader and parquet_open_writer -- and by parquet_sorting_oracle before it drives the C++ sort engine, which is the one mirrored-knob consumer that is not downstream of an open.

Push at POINT OF USE, not point of set. No setter mirrors to C++ any more: that is what let each knob's setter follow its state into parquet_settings_base, where an Arrow-free module can re-export it. The cost is one grouped call per open instead of one per set, and the behaviour is identical under the contract doc/pages/operating/settings.md already states -- apply settings before opening anything. Outside that contract, a knob changed while a reader is open no longer reaches C++ mid-flight.

One entry point, both groups, so a caller cannot refresh half the mirror -- Risk-42's "one push per group, never one per knob" carried forward rather than weakened. It is private ::'d in the parquet facade, so it never reaches a user's namespace.

Arguments

None

Source Code

    subroutine parquet_push_settings_to_cpp()

        call push_output_settings()
        call push_performance_settings()
        call push_file_metadata_settings()
    end subroutine parquet_push_settings_to_cpp