subprocess  0.2.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 
40  std::u16string create_env_block(const EnvMap& map);
41 
46  class CwdGuard {
47  public:
49  mCwd = subprocess::getcwd();
50  }
52  subprocess::setcwd(mCwd);
53  }
54 
55  private:
56  std::string mCwd;
57  };
58 
62  class EnvGuard : public CwdGuard {
63  public:
65  mEnv = current_env_copy();
66  }
67  ~EnvGuard();
68 
69  private:
70  EnvMap mEnv;
71  };
72 
73 
74 }
subprocess::getcwd
std::string getcwd()
subprocess::EnvironSetter
Definition: environ.hpp:10
subprocess::EnvGuard::EnvGuard
EnvGuard()
Definition: environ.hpp:64
subprocess::EnvGuard
Definition: environ.hpp:62
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:84
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:46
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:51
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:48