subprocess  0.4.0
Modern subprocess library for c++
environ.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <vector>
5 
6 #include "basic_types.hpp"
7 #include "shell_utils.hpp"
8 
9 namespace subprocess {
10  class EnvironSetter {
11  public:
12  EnvironSetter(const std::string& name);
13  operator std::string() { return to_string(); }
14  explicit operator bool() const;
15  std::string to_string();
16  EnvironSetter &operator=(const std::string &str);
17  EnvironSetter &operator=(const char* str);
18  EnvironSetter &operator=(std::nullptr_t) { return *this = (const char*)0;}
19  EnvironSetter &operator=(int value);
20  EnvironSetter &operator=(bool value);
21  EnvironSetter &operator=(float value);
22  private:
23  std::string mName;
24  };
25 
27  class Environ {
28  public:
29  EnvironSetter operator[](const std::string&);
30  };
31 
35  extern Environ cenv;
36 
43  std::u16string create_env_block(const EnvMap& map);
44 
49  class CwdGuard {
50  public:
52  mCwd = subprocess::getcwd();
53  }
55  subprocess::setcwd(mCwd);
56  }
57 
58  private:
59  std::string mCwd;
60  };
61 
65  class EnvGuard : public CwdGuard {
66  public:
68  mEnv = current_env_copy();
69  }
70  ~EnvGuard();
71 
72  private:
73  EnvMap mEnv;
74  };
75 
76 
77 }
subprocess::getcwd
std::string getcwd()
subprocess::EnvironSetter
Definition: environ.hpp:10
subprocess::EnvGuard::EnvGuard
EnvGuard()
Definition: environ.hpp:67
subprocess::EnvGuard
Definition: environ.hpp:65
subprocess::Environ
Definition: environ.hpp:27
subprocess::EnvironSetter::operator=
EnvironSetter & operator=(std::nullptr_t)
Definition: environ.hpp:18
subprocess::EnvironSetter::operator=
EnvironSetter & operator=(const std::string &str)
subprocess::EnvMap
std::map< std::string, std::string > EnvMap
Definition: basic_types.hpp:97
subprocess::cenv
Environ cenv
subprocess::Environ::operator[]
EnvironSetter operator[](const std::string &)
subprocess::current_env_copy
EnvMap current_env_copy()
subprocess::EnvironSetter::EnvironSetter
EnvironSetter(const std::string &name)
subprocess::EnvironSetter::to_string
std::string to_string()
subprocess::CwdGuard
Definition: environ.hpp:49
subprocess::create_env_block
std::u16string create_env_block(const EnvMap &map)
subprocess
Definition: basic_types.hpp:19
subprocess::CwdGuard::~CwdGuard
~CwdGuard()
Definition: environ.hpp:54
basic_types.hpp
subprocess::EnvGuard::~EnvGuard
~EnvGuard()
subprocess::setcwd
void setcwd(const std::string &path)
shell_utils.hpp
subprocess::CwdGuard::CwdGuard
CwdGuard()
Definition: environ.hpp:51