Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
ostream.h
Go to the documentation of this file.
1
6#pragma once
7
8#include <ostream>
9#include <concepts>
10#include <memory>
11
12namespace ext {
13
14class ostream {
15 std::unique_ptr < std::ostream > m_os;
16
17public:
18 ostream ( std::basic_streambuf < char > * sb );
19
20 virtual ~ostream ( ) noexcept;
21
22protected:
23 ostream ( ostream && rhs ) noexcept;
24
25 ostream & operator = ( ostream && rhs ) noexcept;
26
27public:
28 template < class T >
29 requires requires { std::declval < std::ostream > ( ) << std::declval < T > ( ); }
30 friend ostream & operator << ( ostream & os, const T & val ) {
31 static_cast < std::ostream & > ( os ) << val;
32 return os;
33 }
34
35 friend ostream & operator << ( ostream & os, std::ostream & ( * fn ) ( std::ostream & ) );
36
37/* does no exist in std, note it should not
38 friend ostream & operator << ( ostream & os, std::ios_base & ( * fn ) ( std::ios_base & ) ) {
39 static_cast < std::ostream & > ( os ) >> fn;
40 return os;
41 }*/
42
43protected:
44 operator std::ostream & ( ) &;
45
46 operator const std::ostream & ( ) const &;
47
48public:
49 ostream & put ( char ch );
50
51 ostream & write ( const char * s, std::streamsize count );
52
53 std::streampos tellp ( );
54
55 ostream & seekp ( std::streampos pos );
56
57 ostream & seekp ( std::streamoff off, std::ios_base::seekdir dir );
58
59 ostream & flush ( );
60
61 std::streambuf * rdbuf ( ) const;
62
63 std::streambuf * rdbuf ( std::streambuf * buf );
64
65 void setstate ( std::ios_base::iostate state );
66
67 void clear ( std::ios_base::iostate state = std::ios_base::goodbit );
68
69};
70
71} /* namespace ext */
Definition: ostream.h:14
void setstate(std::ios_base::iostate state)
Definition: ostream.cpp:73
ostream(std::basic_streambuf< char > *sb)
Definition: ostream.cpp:10
ostream & seekp(std::streampos pos)
Definition: ostream.cpp:50
virtual ~ostream() noexcept
std::streampos tellp()
Definition: ostream.cpp:46
ostream & put(char ch)
Definition: ostream.cpp:36
ostream & flush()
Definition: ostream.cpp:60
friend ostream & operator<<(ostream &os, const T &val)
Definition: ostream.h:30
void clear(std::ios_base::iostate state=std::ios_base::goodbit)
Definition: ostream.cpp:77
std::streambuf * rdbuf() const
Definition: ostream.cpp:65
ostream & write(const char *s, std::streamsize count)
Definition: ostream.cpp:41
Definition: sigHandler.cpp:20