openPMD-api
 
Loading...
Searching...
No Matches
OutOfRangeMsg.hpp
1/* Copyright 2017-2025 Axel Huebl, 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 <string>
24#include <type_traits>
25
26namespace openPMD
27{
28namespace auxiliary
29{
30
36 class OutOfRangeMsg
37 {
38 std::string m_name;
39 std::string m_description;
40
41 public:
42 OutOfRangeMsg()
43 : m_name("Key"), m_description("does not exist (read-only).")
44 {}
45 OutOfRangeMsg(std::string const name, std::string const description)
46 : m_name(name), m_description(description)
47 {}
48
49 template <
50 typename T_Key,
51 typename = typename std::enable_if<
52 std::is_integral<T_Key>::value ||
53 std::is_floating_point<T_Key>::value>::type>
54 std::string operator()(T_Key const key) const
55 {
56 return m_name + std::string(" '") + std::to_string(key) +
57 std::string("' ") + m_description;
58 }
59
60 std::string operator()(std::string const key) const
61 {
62 return m_name + std::string(" '") + std::string(key) +
63 std::string("' ") + m_description;
64 }
65
66 std::string operator()(...) const
67 {
68 return m_name + std::string(" ") + m_description;
69 }
70 };
71
72} // namespace auxiliary
73} // namespace openPMD
Public definitions of openPMD-api.
Definition Date.cpp:29