openPMD-api
include
openPMD
Record.hpp
1
/* Copyright 2017-2021 Fabian Koller
2
*
3
* This file is part of openPMD-api.
4
*
5
* openPMD-api is free software: you can redistribute it and/or modify
6
* it under the terms of of either the GNU General Public License or
7
* the GNU Lesser General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* openPMD-api is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License and the GNU Lesser General Public License
15
* for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* and the GNU Lesser General Public License along with openPMD-api.
19
* If not, see <http://www.gnu.org/licenses/>.
20
*/
21
#pragma once
22
23
#include "openPMD/backend/BaseRecord.hpp"
24
#include "openPMD/RecordComponent.hpp"
25
26
#include <map>
27
#include <type_traits>
28
#include <string>
29
30
31
namespace
openPMD
32
{
33
class
Record
:
public
BaseRecord
< RecordComponent >
34
{
35
friend
class
Container
<
Record
>;
36
friend
class
Iteration
;
37
friend
class
ParticleSpecies
;
38
39
public
:
40
Record
(
Record
const
&) =
default
;
41
Record
& operator=(
Record
const
&) =
default
;
42
~
Record
()
override
=
default
;
43
44
Record
& setUnitDimension(std::map< UnitDimension, double >
const
&);
45
46
template
<
typename
T >
47
T
timeOffset()
const
;
48
template
<
typename
T >
49
Record
& setTimeOffset(
T
);
50
51
private
:
52
Record
();
53
54
void
flush_impl(std::string
const
&)
override
;
55
void
read()
override
;
56
};
//Record
57
58
59
template
<
typename
T >
60
inline
T
61
Record::timeOffset()
const
62
{
return
readFloatingpoint< T >(
"timeOffset"
); }
63
64
template
<
typename
T >
65
inline
Record&
66
Record::setTimeOffset(T to)
67
{
68
static_assert(std::is_floating_point< T >::value,
"Type of attribute must be floating point"
);
69
70
setAttribute
(
"timeOffset"
, to);
71
return
*
this
;
72
}
73
}
// openPMD
openPMD::ParticleSpecies
Definition:
ParticleSpecies.hpp:34
openPMD::AttributableInterface::setAttribute
bool setAttribute(std::string const &key, T value)
Populate Attribute of provided name with provided value.
Definition:
Attributable.hpp:417
openPMD::BaseRecord
Definition:
BaseRecord.hpp:36
openPMD::UnitDimension::T
@ T
time
openPMD::Iteration
Logical compilation of data from one snapshot (e.g.
Definition:
Iteration.hpp:39
openPMD
Public definitions of openPMD-api.
Definition:
Date.cpp:29
openPMD::Record
Definition:
Record.hpp:33
openPMD::Container
Map-like container that enforces openPMD requirements and handles IO.
Definition:
Container.hpp:106
Generated by
1.8.17