35 #include <type_traits> 52 static constexpr
int NO_FILE_DESCRIPTOR{-1};
56 : pipe_fd{{NO_FILE_DESCRIPTOR, NO_FILE_DESCRIPTOR}}
59 explicit PipeData (
int read_fd,
int write_fd) noexcept
60 : pipe_fd{{read_fd, write_fd}}
79 auto getClassName()
const ->
FString;
80 auto getArrayData()
const noexcept ->
const int*;
81 auto getArrayData() noexcept ->
int*;
82 auto getReadFd()
const noexcept -> int;
83 auto getWriteFd()
const noexcept -> int;
86 void setReadFd (
int) noexcept;
87 void setWriteFd (
int) noexcept;
88 void setPipe (
int,
int) noexcept;
89 void reset() noexcept;
94 enum class Array : unsigned char
102 using ArrayT = std::underlying_type_t<Array>;
103 static constexpr
auto PIPE_FD_COUNT =
static_cast<ArrayT
>(Array::Size);
104 using PipeDataType = std::array<int, PIPE_FD_COUNT>;
107 PipeDataType pipe_fd{};
111 inline auto PipeData::getArrayData()
const noexcept ->
const int*
113 return pipe_fd.data();
117 inline auto PipeData::getArrayData() noexcept ->
int*
119 return pipe_fd.data();
123 inline auto PipeData::getReadFd()
const noexcept ->
int 125 return pipe_fd[
static_cast<ArrayT
>(Array::Read)];
129 inline auto PipeData::getWriteFd()
const noexcept ->
int 131 return pipe_fd[
static_cast<ArrayT
>(Array::Write)];
134 inline void PipeData::setReadFd(
int fd) noexcept
136 pipe_fd[
static_cast<ArrayT
>(Array::Read)] = fd;
140 inline void PipeData::setWriteFd(
int fd) noexcept
142 pipe_fd[
static_cast<ArrayT
>(Array::Write)] = fd;
146 inline void PipeData::setPipe(
int read_fd,
int write_fd) noexcept
148 pipe_fd[
static_cast<ArrayT
>(Array::Read)] = read_fd;
149 pipe_fd[
static_cast<ArrayT
>(Array::Write)] = write_fd;
153 inline void PipeData::reset() noexcept
155 pipe_fd[
static_cast<ArrayT
>(Array::Read)] = NO_FILE_DESCRIPTOR;
156 pipe_fd[
static_cast<ArrayT
>(Array::Write)] = NO_FILE_DESCRIPTOR;
160 inline void PipeData::swap (
PipeData& other) noexcept
161 { pipe_fd.swap(other.pipe_fd); }
Definition: class_template.cpp:25
Definition: pipedata.h:48