SpECTRE Documentation Coverage Report
Current view: top level - IO/H5 - Header.hpp Hit Total Coverage
Commit: 3c072f0ce967e2e56649d3fa12aa2a0e4fe2a42e Lines: 5 6 83.3 %
Date: 2024-04-23 20:50:18
Legend: Lines: hit not hit

          Line data    Source code
       1           1 : // Distributed under the MIT License.
       2             : // See LICENSE.txt for details.
       3             : 
       4             : /// \file
       5             : /// Defines class h5::Header
       6             : 
       7             : #pragma once
       8             : 
       9             : #include <hdf5.h>
      10             : #include <string>
      11             : 
      12             : #include "IO/H5/Object.hpp"
      13             : #include "IO/H5/OpenGroup.hpp"
      14             : 
      15             : namespace h5 {
      16             : /*!
      17             :  * \ingroup HDF5Group
      18             :  * \brief Writes header info about the build, git commit, branch, etc.
      19             :  *
      20             :  * A Header object is used to store the ::info_from_build() result in the HDF5
      21             :  * files. The Header is automatically added to every single file by the
      22             :  * constructor of H5File.
      23             :  *
      24             :  * \example
      25             :  * You can read the header info out of an H5 file as shown in the example:
      26             :  * \snippet Test_H5File.cpp h5file_readwrite_get_header
      27             :  */
      28           1 : class Header : public h5::Object {
      29             :  public:
      30             :   /// \cond HIDDEN_SYMOLS
      31             :   static std::string extension() { return ".hdr"; }
      32             : 
      33             :   Header(bool exists, detail::OpenGroup&& group, hid_t location,
      34             :          const std::string& name);
      35             : 
      36             :   Header(const Header& /*rhs*/) = delete;
      37             :   Header& operator=(const Header& /*rhs*/) = delete;
      38             : 
      39             :   Header(Header&& /*rhs*/) = delete;             // NOLINT
      40             :   Header& operator=(Header&& /*rhs*/) = delete;  // NOLINT
      41             : 
      42             :   ~Header() override = default;
      43             :   /// \endcond
      44             : 
      45           0 :   const std::string& get_header() const { return header_info_; }
      46             : 
      47             :   /// Returns the environment variables at compile time of the simulation that
      48             :   /// produced the file
      49           1 :   std::string get_env_variables() const;
      50             : 
      51             :   /// Returns the contents of the `BuildInfo.txt` file generated by CMake
      52             :   /// of the simulation that produced the file.
      53           1 :   std::string get_build_info() const;
      54             : 
      55           1 :   const std::string& subfile_path() const override { return path_; }
      56             : 
      57             :  private:
      58             :   /// \cond HIDDEN_SYMBOLS
      59             :   detail::OpenGroup group_;
      60             :   std::string environment_variables_;
      61             :   std::string build_info_;
      62             :   std::string header_info_;
      63             :   std::string path_;
      64             : 
      65             :   static const std::string printenv_delimiter_;
      66             :   static const std::string build_info_delimiter_;
      67             :   /// \endcond
      68             : };
      69             : }  // namespace h5

Generated by: LCOV version 1.14