26 template <
typename Specification>
29 template <
typename Output>
30 friend bool write_dispatch (
34 return dispatch_write <Specification> (in.p_iFlags, out);
52 bool write (
char const*, std::size_t)
61 template <
typename Specification,
typename Stream>
62 class input_flags_frame : std::reference_wrapper <Stream>
65 using type = type_extractor <Specification>;
74 input_flags_frame (Stream& stream, type flags)
75 : std::reference_wrapper <Stream> (stream),
83 bool check_flag (type
const flag)
const
85 return p_iFlags & flag;
91 template <std::
size_t N>
94 return stream_read <N> (this->
get(), s);
100 bool read (
char* s, std::size_t n)
113 template <
typename Type,
typename... Specification>
115 pack_container <Specification...>,
116 pack_container <Specification...>,
130 typename... Specification,
135 Input& in, Output& out)
138 if (!dispatch_read <Type> (in, flags))
141 input_flags_frame <Type, Input> frame {in, flags};
154 typename... Specification,
159 Input
const& in, Output& out)
167 if (!
write(frame, out))