subprocess  0.4.0
Modern subprocess library for c++
PipeVar.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include <string>
4 #include <variant>
5 #include <iostream>
6 #include <cstdio>
7 
8 #include "basic_types.hpp"
9 
10 
11 namespace subprocess {
12  enum class PipeVarIndex {
13  option,
14  string,
15  handle,
16  istream,
17  ostream,
18  file
19  };
20 
21  typedef std::variant<PipeOption, std::string, PipeHandle,
22  std::istream*, std::ostream*, FILE*> PipeVar;
23 
24 
25  inline PipeOption get_pipe_option(const PipeVar& option) {
26  PipeVarIndex index = static_cast<PipeVarIndex>(option.index());
27 
28  switch(index) {
29  case PipeVarIndex::option: return std::get<PipeOption>(option);
31 
32  default: return PipeOption::pipe;
33  }
34  }
35 }
subprocess::PipeVarIndex::string
@ string
subprocess::PipeOption
PipeOption
Definition: basic_types.hpp:100
subprocess::PipeHandle
int PipeHandle
Definition: basic_types.hpp:74
subprocess::PipeOption::pipe
@ pipe
Redirects to a new handle created for you.
subprocess::PipeVarIndex::ostream
@ ostream
subprocess::PipeVarIndex::handle
@ handle
subprocess::get_pipe_option
PipeOption get_pipe_option(const PipeVar &option)
Definition: PipeVar.hpp:25
subprocess::PipeVarIndex::istream
@ istream
subprocess::PipeVar
std::variant< PipeOption, std::string, PipeHandle, std::istream *, std::ostream *, FILE * > PipeVar
Definition: PipeVar.hpp:22
subprocess::PipeVarIndex::option
@ option
subprocess::PipeOption::specific
@ specific
subprocess::PipeVarIndex
PipeVarIndex
Definition: PipeVar.hpp:12
subprocess
Definition: basic_types.hpp:19
subprocess::PipeVarIndex::file
@ file
basic_types.hpp