TRIQS/h5
2.0.0
C++ interface to HDF5
Toggle main menu visibility
Loading...
Searching...
No Matches
pair.hpp
Go to the documentation of this file.
1
// Copyright (c) 2019-2024 Simons Foundation
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0.txt
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14
//
15
// Authors: Thomas Hahn, Olivier Parcollet, Nils Wentzell
16
21
22
#ifndef LIBH5_STL_PAIR_HPP
23
#define LIBH5_STL_PAIR_HPP
24
25
#include "
../format.hpp
"
26
#include "
../group.hpp
"
27
#include "
./string.hpp
"
28
29
#include <string>
30
#include <utility>
31
32
namespace
h5 {
33
38
40
template
<
typename
T1,
typename
T2>
41
struct
hdf5_format_impl
<std::pair<T1, T2>> {
42
static
std::string invoke() {
return
"Tuple"
; }
43
};
44
56
template
<
typename
T1,
typename
T2>
57
void
h5_write
(
group
g, std::string
const
&name, std::pair<T1, T2>
const
&p) {
58
auto
gr = g.
create_group
(name);
59
write_hdf5_format
(gr, p);
60
h5_write
(gr,
"0"
, p.first);
61
h5_write
(gr,
"1"
, p.second);
62
}
63
75
template
<
typename
T1,
typename
T2>
76
void
h5_read
(
group
g, std::string
const
&name, std::pair<T1, T2> &p) {
77
auto
gr = g.
open_group
(name);
78
if
(gr.get_all_subgroup_dataset_names().size() != 2)
79
throw
std::runtime_error(
"Error in h5::h5_read: Reading a std::pair from a group with more/less than 2 subgroups/datasets is not allowed"
);
80
h5_read
(gr,
"0"
, p.first);
81
h5_read
(gr,
"1"
, p.second);
82
}
83
85
86
}
// namespace h5
87
88
#endif
// LIBH5_STL_PAIR_HPP
h5::group
A handle to an HDF5 group.
Definition
group.hpp:44
h5::group::create_group
group create_group(std::string const &key, bool delete_if_exists=true) const
Create a subgroup with the given key in the group.
Definition
group.cpp:109
h5::group::open_group
group open_group(std::string const &key) const
Open a subgroup with the given key in the group.
Definition
group.cpp:96
format.hpp
Provides utilities for reading and writing hdf5_format tags.
group.hpp
Provides a handle to an HDF5 group and various methods to simplify the creation/opening of subgroups,...
h5::write_hdf5_format
void write_hdf5_format(object obj)
Write an hdf5_format tag for type T to an HDF5 attribute with the name 'Format'.
Definition
format.hpp:115
h5::h5_read
T h5_read(group g, std::string const &key)
Generic implementation for reading from an HDF5 dataset/subgroup.
Definition
generic.hpp:53
h5::h5_write
void h5_write(group g, std::string const &name, T const &x)
Write a scalar to an HDF5 dataset.
Definition
scalar.hpp:71
string.hpp
Provides functions to read/write std::string, char* and h5::char_buf objects from/to HDF5.
h5::hdf5_format_impl
Default type trait to get the hdf5_format tag of type T by calling its static member function T::hdf5...
Definition
format.hpp:52
h5
stl
pair.hpp
Generated by
1.17.0