diff --git a/psrdada_cpp/dadaflow/DadaAutoGen.hpp b/psrdada_cpp/dadaflow/DadaAutoGen.hpp index e0d5673d9faa6a443e13504064ed1a887ec008f2..875b5428aab51715f6735641928271a0295efb1b 100644 --- a/psrdada_cpp/dadaflow/DadaAutoGen.hpp +++ b/psrdada_cpp/dadaflow/DadaAutoGen.hpp @@ -18,6 +18,7 @@ namespace psrdada_cpp { + struct DefaultKeyFormatter { static std::string format(std::string const& key) { return key; @@ -227,6 +228,14 @@ class InvalidBlockSize: public std::runtime_error } }; + +template <typename ContainerType, typename... Dimensions> +void dimensions_to_header(DescribedData<ContainerType, Dimensions...> const& data, DadaHeader& header) +{ + (DimensionParser<Dimensions>::to_header(data, header), ...); +}; + + template <typename T> class DadaAutoGen; diff --git a/psrdada_cpp/dadaflow/test/src/DadaAutoGenTester.cpp b/psrdada_cpp/dadaflow/test/src/DadaAutoGenTester.cpp index 06cdc116af636fb128398c9c0ba10a02700f11e2..22bbc3405e14000535241816b2876f416a30c3c7 100644 --- a/psrdada_cpp/dadaflow/test/src/DadaAutoGenTester.cpp +++ b/psrdada_cpp/dadaflow/test/src/DadaAutoGenTester.cpp @@ -125,6 +125,17 @@ TEST(DadaAutoGenTester, missing_key_parse) } +TEST(DadaAutoGenTester, write_dims_to_header) +{ + DadaHeader header; + DescribedData<std::vector<int>, TimeDimension> data; + data.resize({10}); + data.timestep(std::chrono::duration<double>(1.0001)); + dimensions_to_header(data, header); + ASSERT_EQ(header.get<std::size_t>("NSAMPLES"), 10); + ASSERT_EQ(header.get<double>("TSAMP"), 1.0001); +} + } // namespace test