Bash++
Bash++ compiler internal documentation
NullStream.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2025 Andrew S. Rightenburg
3 * Bash++: Bash with classes
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
7#pragma once
8
9#include <streambuf>
10#include <ostream>
11
17class NullBuffer : public std::streambuf {
18 protected:
19 int overflow(int c) override {
20 return traits_type::not_eof(c); // Indicate success, but discard the character
21 }
22
23 std::streamsize xsputn(const char* /*s*/, std::streamsize n) override {
24 return n; // Indicate success, but discard the characters
25 }
26 public:
27 NullBuffer() noexcept = default;
28 NullBuffer(const NullBuffer&) noexcept = default;
29 NullBuffer& operator=(const NullBuffer&) noexcept = default;
30 NullBuffer(NullBuffer&&) noexcept = default;
31 NullBuffer& operator=(NullBuffer&&) noexcept = default;
32 ~NullBuffer() noexcept override = default;
33};
34
44class NullOStream : public std::ostream {
45 private:
46 inline static NullBuffer null_buffer;
47 public:
48 NullOStream() : std::ostream(&null_buffer) {}
49};
A stream buffer that discards all output.
Definition NullStream.h:17
int overflow(int c) override
Definition NullStream.h:19
std::streamsize xsputn(const char *, std::streamsize n) override
Definition NullStream.h:23
NullBuffer() noexcept=default
An output stream that discards all output This is used in the language server to parse programs witho...
Definition NullStream.h:44
static NullBuffer null_buffer
Definition NullStream.h:46
NullOStream()
Definition NullStream.h:48