58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			58 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|   | /*
 | ||
|  | Copyright 2021 Glen Joseph Fernandes | ||
|  | (glenjofe@gmail.com) | ||
|  | 
 | ||
|  | Distributed under the Boost Software License, Version 1.0. | ||
|  | (http://www.boost.org/LICENSE_1_0.txt)
 | ||
|  | */ | ||
|  | #ifndef BOOST_IO_NULLSTREAM_HPP
 | ||
|  | #define BOOST_IO_NULLSTREAM_HPP
 | ||
|  | 
 | ||
|  | #include <boost/config.hpp>
 | ||
|  | #include <ostream>
 | ||
|  | #include <streambuf>
 | ||
|  | 
 | ||
|  | namespace boost { | ||
|  | namespace io { | ||
|  | 
 | ||
|  | template<class CharT, class Traits = std::char_traits<CharT> > | ||
|  | class basic_nullbuf | ||
|  |     : public std::basic_streambuf<CharT, Traits> { | ||
|  | protected: | ||
|  |     typename Traits::int_type overflow(typename Traits::int_type c) | ||
|  |         BOOST_OVERRIDE { | ||
|  |         return Traits::not_eof(c); | ||
|  |     } | ||
|  | 
 | ||
|  |     std::streamsize xsputn(const CharT*, std::streamsize n) BOOST_OVERRIDE { | ||
|  |         return n; | ||
|  |     } | ||
|  | }; | ||
|  | 
 | ||
|  | namespace detail { | ||
|  | 
 | ||
|  | template<class CharT, class Traits> | ||
|  | struct nullbuf { | ||
|  |     boost::io::basic_nullbuf<CharT, Traits> buf; | ||
|  | }; | ||
|  | 
 | ||
|  | } /* detail */ | ||
|  | 
 | ||
|  | template<class CharT, class Traits = std::char_traits<CharT> > | ||
|  | class basic_onullstream | ||
|  |     : detail::nullbuf<CharT, Traits> | ||
|  |     , public std::basic_ostream<CharT, Traits> { | ||
|  | public: | ||
|  |     basic_onullstream() | ||
|  |         : std::basic_ostream<CharT, Traits>(&(detail::nullbuf<CharT, | ||
|  |              Traits>::buf)) { } | ||
|  | }; | ||
|  | 
 | ||
|  | typedef basic_onullstream<char> onullstream; | ||
|  | typedef basic_onullstream<wchar_t> wonullstream; | ||
|  | 
 | ||
|  | } /* io */ | ||
|  | } /* boost */ | ||
|  | 
 | ||
|  | #endif
 |