home | help
std::basic_syncbuf(3)	       C++ Standard Libary	   std::basic_syncbuf(3)

NAME
     std::basic_syncbuf - std::basic_syncbuf

Synopsis
	Defined in header <syncstream>
	template<

	    class CharT,
	    class	    Traits	     =		std::char_traits<CharT>,
     (since C++20)
	    class Allocator = std::allocator<CharT>

	> class basic_syncbuf : public std::basic_streambuf<CharT, Traits>

	std::basic_syncbuf is a wrapper for a std::basic_streambuf (provided  at
     construction
	time  as  a  pointer). It accumulates output in its own internal buffer,
     and atomically
	transmits its entire contents to the wrapped buffer on	destruction  and
     when
	explicitly  requested,	so  that they appear as a contiguous sequence of
     characters. It
	guarantees that there are no data races and no interleaving  of  charac-
     ters sent to
	the  wrapped buffer as long as all other outputs made to the same buffer
     are made
	through, possibly different, instances of std::basic_syncbuf.

	Typical implementation of std::basic_syncbuf  holds  a	pointer  to  the
     wrapped
	std::basic_streambuf,  a boolean flag indicating whether the buffer will
     transmit its
	contents to the wrapped buffer on sync (flush), a boolean flag	indicat-
     ing a pending
	flush  when  the  policy is to not emit on sync, an internal buffer that
     uses Allocator
	(such as std::string), and a pointer to a mutex used to synchronize emit
     between
	multiple threads accessing the same wrapped stream buffer (these mutexes
     may be in a
	hash map with pointers to std::basic_streambuf objects used as keys).

	Like other streambuf classes, std::basic_syncbuf is  normally  only  ac-
     cessed through
	the corresponding stream, std::osyncstream, not directly.

	Several typedefs for common character types are provided:

	Defined in header <syncstream>
	Type	      Definition
	std::syncbuf  std::basic_syncbuf<char>
	std::wsyncbuf std::basic_syncbuf<wchar_t>

Member types
	Member type    Definition
	char_type      CharT
	traits_type    Traits; the program is ill-formed if Traits::char_type is
     not
		       CharT.
	int_type       Traits::int_type
	pos_type       Traits::pos_type
	off_type       Traits::off_type
	allocator_type Allocator
	streambuf_type std::basic_streambuf<CharT, Traits>

Member functions
Public member functions
	constructor	 constructs a basic_syncbuf object
			 (public member function)
	operator=	 assigns a basic_syncbuf object
			 (public member function)
	swap		 swaps two basic_syncbuf objects
			 (public member function)
	destructor	  destroys  the  basic_syncbuf	and  emits  its internal
     buffer
			 (public member function)
			 atomically transmits the entire internal buffer to  the
     wrapped
	emit		 streambuf
			 (public member function)
	get_wrapped	 retrieves the wrapped streambuf pointer
			 (public member function)
	get_allocator	 retrieves the allocator used by this basic_syncbuf
			 (public member function)
	set_emit_on_sync changes the current emit-on-sync policy
			 (public member function)

Protected member functions
			 either  emits, or records a pending flush, depending on
     the current
	sync		 emit-on-sync policy
			 (public member function)

Non-member functions
	std::swap(std::basic_syncbuf) specializes the std::swap algorithm
	(C++20) 		      (function template)

     Inherited from std::basic_streambuf

Member types
	Member type Definition
	char_type   CharT
	traits_type Traits; the program is ill-formed  if  Traits::char_type  is
     not
		    CharT.
	int_type    Traits::int_type
	pos_type    Traits::pos_type
	off_type    Traits::off_type

Member functions
	destructor	   destructs the basic_streambuf object
	[virtual]	   (virtual public member function of
			   std::basic_streambuf<CharT,Traits>)

Locales
			   invokes imbue()
	pubimbue	     (public   member	function  of  std::basic_stream-
     buf<CharT,Traits>)

			   obtains a copy of the associated locale
	getloc		    (public  member   function	 of   std::basic_stream-
     buf<CharT,Traits>)

Positioning
			   invokes setbuf()
	pubsetbuf	     (public   member	function  of  std::basic_stream-
     buf<CharT,Traits>)

			   invokes seekoff()
	pubseekoff	    (public  member   function	 of   std::basic_stream-
     buf<CharT,Traits>)

			   invokes seekpos()
	pubseekpos	     (public   member	function  of  std::basic_stream-
     buf<CharT,Traits>)

			   invokes sync()
	pubsync 	    (public  member   function	 of   std::basic_stream-
     buf<CharT,Traits>)

Get area
			   obtains  the  number of characters immediately avail-
     able in the get
	in_avail	   area
			   (public   member   function	 of   std::basic_stream-
     buf<CharT,Traits>)

			   advances the input sequence, then reads one character
     without
	snextc		   advancing again
			   (public   member   function	 of   std::basic_stream-
     buf<CharT,Traits>)

	sbumpc		   reads one character from the input sequence	and  ad-
     vances the
	stossc		   sequence
	(removed   in  C++17)  (public	member	function  of  std::basic_stream-
     buf<CharT,Traits>)

			   reads one character from the input  sequence  without
     advancing the
	sgetc		   sequence
			   (public   member   function	 of   std::basic_stream-
     buf<CharT,Traits>)

			   invokes xsgetn()
	sgetn		    (public  member   function	 of   std::basic_stream-
     buf<CharT,Traits>)

Put area
			   writes one character to the put area and advances the
     next
	sputc		   pointer
			   (public   member   function	 of   std::basic_stream-
     buf<CharT,Traits>)

			   invokes xsputn()
	sputn		    (public  member   function	 of   std::basic_stream-
     buf<CharT,Traits>)

Putback
			   puts one character back in the input sequence
	sputbackc	     (public   member	function  of  std::basic_stream-
     buf<CharT,Traits>)

			   moves the next pointer in the input sequence back  by
     one
	sungetc 	     (public   member	function  of  std::basic_stream-
     buf<CharT,Traits>)

Protected member functions
	constructor   constructs a basic_streambuf object
		      (protected member function)
	operator=     replaces a basic_streambuf object
	(C++11)       (protected member function)
	swap	      swaps two basic_streambuf objects
	(C++11)       (protected member function)

Locales
	imbue	      changes the associated locale
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)

Positioning
	setbuf	      replaces the buffer with user-defined array, if permitted
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)
		      repositions the next pointer in the input sequence, output
     sequence,
	seekoff       or both, using relative addressing
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)
		      repositions the next pointer in the input sequence, output
     sequence,
	seekpos       or both using absolute addressing
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)
	sync	      synchronizes the buffers with the associated character se-
     quence
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)

Get area
		      obtains the number of characters available  for  input  in
     the associated
	showmanyc     input sequence, if known
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)
	underflow     reads characters from the associated input sequence to the
     get area
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)
		      reads characters from the associated input sequence to the
     get area
	uflow	      and advances the next pointer
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)
	xsgetn	      reads multiple characters from the input sequence
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)
	eback	       returns a pointer to the beginning, current character and
     the end of
	gptr	      the get area
	egptr	      (protected member function)
	gbump	      advances the next pointer in the input sequence
		      (protected member function)
		      repositions the beginning, next, and end pointers  of  the
     input
	setg	      sequence
		      (protected member function)

Put area
	xsputn	      writes multiple characters to the output sequence
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)
	overflow       writes  characters to the associated output sequence from
     the put area
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)
	pbase	      returns a pointer to the beginning, current character  and
     the end of
	pptr	      the put area
	epptr	      (protected member function)
	pbump	      advances the next pointer of the output sequence
		      (protected member function)
		      repositions  the	beginning, next, and end pointers of the
     output
	setp	      sequence
		      (protected member function)

Putback
		      puts a character back into the  input  sequence,	possibly
     modifying the
	pbackfail     input sequence
	[virtual]     (virtual protected member function of
		      std::basic_streambuf<CharT,Traits>)

Notes
	Feature-test macro  Value    Std			Feature
	__cpp_lib_syncbuf    201803L   (C++20)	 Synchronized  buffered  ostream
     (std::syncbuf,
					   std::osyncstream) and manipulators

http://cppreference.com 	   2024.06.10		   std::basic_syncbuf(3)

home | help