Toolbox snapshot
The Reactive C++ Toolbox
Loading...
Searching...
No Matches
Stream.cpp
Go to the documentation of this file.
1// The Reactive C++ Toolbox.
2// Copyright (C) 2013-2019 Swirly Cloud Limited
3// Copyright (C) 2021 Reactive Markets Limited
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16
17#include "Stream.hpp"
18
19namespace toolbox {
20inline namespace io {
21using namespace std;
22
23StreamBuf::~StreamBuf() = default;
24
25StreamBuf::int_type StreamBuf::overflow(int_type c) noexcept
26{
27 if (c != traits_type::eof()) {
28 auto buf = buf_.prepare(pcount_ + 1);
29 pbase_ = buffer_cast<char*>(buf);
30 pbase_[pcount_++] = c;
31 }
32 return c;
33}
34
36{
37 auto buf = buf_.prepare(pcount_ + count);
38 pbase_ = buffer_cast<char*>(buf);
39 memcpy(pbase_ + pcount_, s, count);
40 pcount_ += count;
41 return count;
42}
43
44OStream::~OStream() = default;
45
46} // namespace io
47} // namespace toolbox
std::streamsize xsputn(const char_type *s, std::streamsize count) noexcept override
int_type overflow(int_type c) noexcept override
Definition Stream.cpp:25
STL namespace.
constexpr auto bind() noexcept
Definition Slot.hpp:92