cpp-terminal 1.0.0
Small C++ library for writing multiplatform terminal applications
Loading...
Searching...
No Matches
Term::IOStreamInitializer Class Reference

#include <cpp-terminal/iostream_initializer.hpp>

Public Member Functions

 ~IOStreamInitializer () noexcept
 
 IOStreamInitializer () noexcept
 
 IOStreamInitializer (const IOStreamInitializer &)=delete
 
 IOStreamInitializer (IOStreamInitializer &&)=delete
 
IOStreamInitializeroperator= (IOStreamInitializer &&)=delete
 
IOStreamInitializeroperator= (const IOStreamInitializer &)=delete
 

Static Private Attributes

static std::size_t m_counter {0}
 

Detailed Description

Definition at line 17 of file iostream_initializer.hpp.

Constructor & Destructor Documentation

◆ ~IOStreamInitializer()

Term::IOStreamInitializer::~IOStreamInitializer ( )
noexcept

Definition at line 48 of file iostream_initializer.cpp.

50{
51 --m_counter;
52 if(0 == m_counter)
53 {
54 (&Term::cout)->~TOstream();
55 (&Term::cerr)->~TOstream();
56 (&Term::clog)->~TOstream();
57 (&Term::cin)->~TIstream();
58 }
59}
60catch(...)
61{
63}
void ExceptionHandler(const ExceptionDestination &destination=ExceptionDestination::StdErr) noexcept
TOstream & clog
Definition iostream.cpp:23
TOstream & cout
Definition iostream.cpp:22
TOstream & cerr
Definition iostream.cpp:24
TIstream & cin
Definition iostream.cpp:25

◆ IOStreamInitializer() [1/3]

Term::IOStreamInitializer::IOStreamInitializer ( )
noexcept

Definition at line 28 of file iostream_initializer.cpp.

30{
31 if(0 == m_counter)
32 {
33 static const std::ios_base::Init iostreams_init; // Init std::cout etc...
34 static const Term::TerminalInitializer terminal_init; // Make sure terminal is set up.
35 new(&Term::cout) TOstream(Term::Buffer::Type::FullBuffered, BUFSIZ);
36 new(&Term::clog) TOstream(Term::Buffer::Type::LineBuffered, BUFSIZ);
38 new(&Term::cin) TIstream(Term::Buffer::Type::FullBuffered, BUFSIZ);
39 if(is_stdin_a_tty()) { std::cin.rdbuf(Term::cin.rdbuf()); }
40 }
41 ++m_counter;
42}
43catch(...)
44{
46}
bool is_stdin_a_tty()
Check if stdin is a tty.
Definition tty.cpp:32

◆ IOStreamInitializer() [2/3]

Term::IOStreamInitializer::IOStreamInitializer ( const IOStreamInitializer & )
delete

◆ IOStreamInitializer() [3/3]

Term::IOStreamInitializer::IOStreamInitializer ( IOStreamInitializer && )
delete

Member Function Documentation

◆ operator=() [1/2]

IOStreamInitializer & Term::IOStreamInitializer::operator= ( const IOStreamInitializer & )
delete

◆ operator=() [2/2]

IOStreamInitializer & Term::IOStreamInitializer::operator= ( IOStreamInitializer && )
delete

Member Data Documentation

◆ m_counter

std::size_t Term::IOStreamInitializer::m_counter {0}
staticprivate

Definition at line 21 of file iostream_initializer.hpp.


The documentation for this class was generated from the following files: