openPMD-api
 
Loading...
Searching...
No Matches
Environment.hpp
1/* Copyright 2018-2021 Franz Poeschel, Axel Huebl
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
22#pragma once
23
24#include <cstdlib>
25#include <cstring>
26#include <iostream>
27#include <stdexcept>
28#include <string>
29
30namespace openPMD
31{
32namespace auxiliary
33{
34 inline std::string
35 getEnvString(std::string const &key, std::string const defaultValue)
36 {
37 char const *env = std::getenv(key.c_str());
38 if (env != nullptr)
39 return std::string{env};
40 else
41 return defaultValue;
42 }
43
44 inline int getEnvNum(std::string const &key, int defaultValue)
45 {
46 char const *env = std::getenv(key.c_str());
47 if (env != nullptr)
48 {
49 std::string env_string{env};
50 try
51 {
52 return std::stoi(env_string);
53 }
54 catch (std::invalid_argument const &)
55 {
56 return defaultValue;
57 }
58 }
59 else
60 return defaultValue;
61 }
62} // namespace auxiliary
63} // namespace openPMD
Public definitions of openPMD-api.
Definition Date.cpp:29