env.cpp 873 Bytes
Newer Older
Paul's avatar
Paul committed
1
2
#include <migraphx/env.hpp>
#include <migraphx/ranges.hpp>
Paul's avatar
Paul committed
3
4
#include <cstdlib>

Paul's avatar
Paul committed
5
namespace migraphx {
Paul's avatar
Paul committed
6
inline namespace MIGRAPHX_INLINE_NS {
Paul's avatar
Paul committed
7

Paul's avatar
Paul committed
8
bool enabled(const char* name)
Paul's avatar
Paul committed
9
10
11
12
13
14
15
{
    auto e = env(name);
    if(e.empty())
        return false;
    return contains({"1", "enable", "enabled", "yes", "true"}, e.front());
}

Paul's avatar
Paul committed
16
bool disabled(const char* name)
Paul's avatar
Paul committed
17
18
19
20
21
22
23
{
    auto e = env(name);
    if(e.empty())
        return false;
    return contains({"0", "disable", "disabled", "no", "false"}, e.front());
}

24
std::size_t value_of(const char* name, std::size_t fallback)
Paul's avatar
Paul committed
25
26
27
{
    auto e = env(name);
    if(e.empty())
28
        return fallback;
Paul's avatar
Paul committed
29
30
31
    return std::stoul(e.front());
}

Paul's avatar
Paul committed
32
33
std::vector<std::string> env(const char* name)
{
34
    auto* p = std::getenv(name);
Paul's avatar
Paul committed
35
36
37
38
39
40
    if(p == nullptr)
        return {};
    else
        return {{p}};
}

Paul's avatar
Paul committed
41
} // namespace MIGRAPHX_INLINE_NS
Paul's avatar
Paul committed
42
} // namespace migraphx