Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd83d3bc

Browse files
Merge pull request#8 from TUM-I5/davschneller/local-env
Localize environment variable reader
2 parents14aad21 +5412a89 commitd83d3bc

File tree

3 files changed

+18
-12
lines changed

3 files changed

+18
-12
lines changed

‎env.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,16 @@ namespace utils {
2323
*/
2424
classEnv {
2525
private:
26-
staticinline std::unordered_map<std::string, std::optional<std::string>> cache;
26+
std::string prefix;
27+
std::unordered_map<std::string, std::optional<std::string>> cache;
2728

2829
public:
30+
Env(const std::string& prefix) : prefix(prefix) {}
31+
2932
template<typename T>
30-
staticautogetOptional(const std::string& name) -> std::optional<T> {
33+
autogetOptional(const std::string& name) -> std::optional<T> {
3134
if (cache.find(name) == cache.end()) {
32-
char* value =std::getenv(name.c_str());
35+
char* value =std::getenv((prefix +name).c_str());
3336
if (value ==nullptr) {
3437
cache[name] = std::optional<std::string>();
3538
}else {
@@ -46,7 +49,7 @@ class Env {
4649
}
4750

4851
template<typename T>
49-
staticautoget(const std::string& name, T&& defaultVal)
52+
autoget(const std::string& name, T&& defaultVal)
5053
-> std::enable_if_t<!std::is_array_v<T>, std::decay_t<T>> {
5154
// mirror requirements for an optional
5255
constauto value = getOptional<std::decay_t<T>>(name);
@@ -59,7 +62,7 @@ class Env {
5962
}
6063

6164
template<typename T>
62-
staticautoget(const std::string& name,const T* defaultVal)
65+
autoget(const std::string& name,const T* defaultVal)
6366
-> std::enable_if_t<std::is_convertible_v<T*, std::string>, std::string> {
6467
constauto value = getOptional<std::string>(name);
6568

‎progress.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,11 @@ class Progress {
5353
/** TTY handle (if used)*/
5454
std::ofstream m_tty;
5555

56+
Env env{"UTILS_PROGRESS_"};
57+
5658
public:
5759
Progress(unsignedlong total =100) {
58-
std::string envOutput =Env::get<std::string>("UTILS_PROGRESS_OUTPUT","STDERR");
60+
std::string envOutput =env.get<std::string>("OUTPUT","STDERR");
5961

6062
StringUtils::toUpper(envOutput);
6163

@@ -172,7 +174,7 @@ class Progress {
172174
*/
173175
voidsetSize(bool automatic =true) {
174176
// Check if size is set in env
175-
constunsignedlongsize =Env::get<unsignedlong>("UTILS_PROGRESS_SIZE",0);
177+
constautosize =env.get<unsignedlong>("SIZE",0);
176178

177179
if (size >0) {
178180
m_barSize = size;

‎tests/env.t.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,16 @@ using namespace utils;
1717
classTestEnv :publicCxxTest::TestSuite {
1818
public:
1919
staticvoidtestGet() {
20+
Envenv("UTILS_");
2021
TS_ASSERT_EQUALS(setenv("UTILS_INT","42",1),0);
21-
TS_ASSERT_EQUALS(Env::get<int>("UTILS_INT",0),42);
22-
TS_ASSERT_EQUALS(Env::get("UTILS_INT","0"),std::string("42"));
23-
TS_ASSERT_EQUALS(Env::get<int>("UTILS_INT2",3),3);
22+
TS_ASSERT_EQUALS(env.get<int>("INT",0),42);
23+
TS_ASSERT_EQUALS(env.get("INT","0"),std::string("42"));
24+
TS_ASSERT_EQUALS(env.get<int>("INT2",3),3);
2425

2526
TS_ASSERT_EQUALS(setenv("UTILS_BOOL","1",1),0);
26-
TS_ASSERT_EQUALS(Env::get<bool>("UTILS_BOOL",false),true);
27+
TS_ASSERT_EQUALS(env.get<bool>("BOOL",false),true);
2728
TS_ASSERT_EQUALS(setenv("UTILS_BOOL2","0",1),0);
28-
TS_ASSERT_EQUALS(Env::get<bool>("UTILS_BOOL2",false),false);
29+
TS_ASSERT_EQUALS(env.get<bool>("BOOL2",false),false);
2930
}
3031
};
3132
#endif// UTILS_TESTS_ENV_T_H_

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp