paludis Version 3.0.2
The one true package mangler
tee_output_stream.hh
1/* vim: set sw=4 sts=4 et foldmethod=syntax : */
2
3/*
4 * Copyright (c) 2008, 2009, 2010, 2011 Ciaran McCreesh
5 *
6 * This file is part of the Paludis package manager. Paludis is free software;
7 * you can redistribute it and/or modify it under the terms of the GNU General
8 * Public License version 2, as published by the Free Software Foundation.
9 *
10 * Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
11 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13 * details.
14 *
15 * You should have received a copy of the GNU General Public License along with
16 * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
17 * Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19
20#ifndef PALUDIS_GUARD_PALUDIS_UTIL_TEE_OUTPUT_STREAM_HH
21#define PALUDIS_GUARD_PALUDIS_UTIL_TEE_OUTPUT_STREAM_HH 1
22
23#include <paludis/util/tee_output_stream-fwd.hh>
25#include <paludis/util/pimp.hh>
26#include <ostream>
27
28namespace paludis
29{
30 class PALUDIS_VISIBLE TeeOutputStreamBuf :
31 public std::streambuf
32 {
33 private:
35
36 protected:
37 int_type
38 overflow(int_type c) override;
39
40 int sync() override;
41
42 std::streamsize
43 xsputn(const char * s, std::streamsize num) override;
44
45 public:
46 TeeOutputStreamBuf();
47 ~TeeOutputStreamBuf() override;
48
49 void add_stream(std::ostream * const);
50 };
51
53 {
54 protected:
56 };
57
58 class PALUDIS_VISIBLE TeeOutputStream :
59 protected TeeOutputStreamBase,
60 public std::ostream
61 {
62 public:
63 ///\name Basic operations
64 ///\{
65
66 TeeOutputStream();
67
68 ///\}
69
70 void add_stream(std::ostream * const);
71 };
72
73 extern template class Pimp<TeeOutputStreamBuf>;
74}
75
76#endif
Definition pimp.hh:52
Definition tee_output_stream.hh:53
Definition tee_output_stream.hh:32
#define PALUDIS_VISIBLE
Definition attributes.hh:59
Definition about_metadata-fwd.hh:24