subprocess  0.1.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  std::string to_string();
15  EnvironSetter &operator=(const std::string &str);
16  EnvironSetter &operator=(const char* str);
17  EnvironSetter &operator=(std::nullptr_t) { return *this = (const char*)0;}
18  EnvironSetter &operator=(int value);
19  EnvironSetter &operator=(bool value);
20  EnvironSetter &operator=(float value);
21  private:
22  std::string mName;
23  };
24 
26  class Environ {
27  public:
28  EnvironSetter operator[](const std::string&);
29  };
30 
34  extern Environ cenv;
35 
39  std::u16string create_env_block(const EnvMap& map);
40 
45  class CwdGuard {
46  public:
48  mCwd = subprocess::getcwd();
49  }
51  subprocess::setcwd(mCwd);
52  }
53 
54  private:
55  std::string mCwd;
56  };
57 
61  class EnvGuard : public CwdGuard {
62  public:
64  mEnv = current_env_copy();
65  }
66  ~EnvGuard();
67 
68  private:
69  EnvMap mEnv;
70  };
71 
72 
73 }
subprocess::getcwd
std::string getcwd()
subprocess::EnvironSetter
Definition: environ.hpp:10
subprocess::EnvGuard::EnvGuard
EnvGuard()
Definition: environ.hpp:63
subprocess::EnvGuard
Definition: environ.hpp:61
subprocess::Environ
Definition: environ.hpp:26
subprocess::EnvironSetter::operator=
EnvironSetter & operator=(std::nullptr_t)
Definition: environ.hpp:17
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:45
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:50
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:47