ThreadStream.h
1//-*-C++-*-
2/***************************************************************************
3 *
4 * Copyright (C) 2007 - 2024 by Willem van Straten
5 * Licensed under the Academic Free License version 2.1
6 *
7 ***************************************************************************/
8
9// psrchive/Util/genutil/ThreadStream.h
10
11#ifndef __ThreadStream_h
12#define __ThreadStream_h
13
14#include <iostream>
15
18{
19public:
20
22 ThreadStream ();
23
26
28 std::ostream& get ();
29
31 void * get_raw ();
32
34 void set (std::ostream*);
35
37 void set (void *);
38
39private:
40
42 void* stream = nullptr;
43};
44
45template<class T>
46ThreadStream& operator<< (ThreadStream& ts, const T& t)
47{
48 ts.get() << t;
49 return ts;
50}
51
52typedef std::ostream& (*manipulator) ( std::ostream& os );
53
55inline ThreadStream& operator<< (ThreadStream& ts, manipulator m)
56{
57 ts.get() << m;
58 return ts;
59}
60
61#endif
Manages a unique std::ostream for each thread.
Definition ThreadStream.h:18
ThreadStream()
Default constructor.
Definition ThreadStream.C:29
void * get_raw()
Interface to raw void*.
void set(void *)
Set the raw void* for the current thread.
~ThreadStream()
Destructor.
Definition ThreadStream.C:40
void set(std::ostream *)
Set the ostream for the current thread.
Definition ThreadStream.C:66
std::ostream & get()
Interface to ostream.
Definition ThreadStream.C:51

Generated using doxygen 1.14.0