paludis
Version 3.0.2
The one true package mangler
paludis
util
tail_output_stream.hh
1
/* vim: set sw=4 sts=4 et foldmethod=syntax : */
2
3
/*
4
* Copyright (c) 2008, 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_TAIL_OUTPUT_STREAM_HH
21
#define PALUDIS_GUARD_PALUDIS_UTIL_TAIL_OUTPUT_STREAM_HH 1
22
23
#include <paludis/util/tail_output_stream-fwd.hh>
24
#include <
paludis/util/attributes.hh
>
25
#include <
paludis/util/pimp.hh
>
26
#include <
paludis/util/sequence.hh
>
27
#include <memory>
28
#include <ostream>
29
30
namespace
paludis
31
{
32
class
PALUDIS_VISIBLE
TailOutputStreamBuf :
33
public
std::streambuf
34
{
35
private
:
36
Pimp<TailOutputStreamBuf>
_imp;
37
38
void
_append(
const
std::string &);
39
40
protected
:
41
int_type
42
overflow(int_type c)
override
;
43
44
std::streamsize
45
xsputn(
const
char
* s, std::streamsize num)
override
;
46
47
public
:
48
TailOutputStreamBuf(
const
unsigned
n);
49
~TailOutputStreamBuf()
override
;
50
51
const
std::shared_ptr<const Sequence<std::string> > tail(
const
bool
clear);
52
};
53
54
class
PALUDIS_VISIBLE
TailOutputStreamBase
55
{
56
protected
:
57
TailOutputStreamBuf
buf;
58
59
public
:
60
TailOutputStreamBase(
const
unsigned
n) :
61
buf(n)
62
{
63
}
64
};
65
66
class
PALUDIS_VISIBLE
TailOutputStream :
67
protected
TailOutputStreamBase,
68
public
std::ostream
69
{
70
public
:
71
///\name Basic operations
72
///\{
73
74
TailOutputStream(
const
unsigned
n) :
75
TailOutputStreamBase(n),
76
std::ostream(&buf)
77
{
78
}
79
80
const
std::shared_ptr<const Sequence<std::string> > tail(
const
bool
clear_after)
81
{
82
return
buf.tail(clear_after);
83
}
84
85
///\}
86
};
87
88
extern
template
class
Pimp<TailOutputStreamBuf>
;
89
}
90
91
#endif
attributes.hh
paludis::Pimp
Definition
pimp.hh:52
paludis::TailOutputStreamBuf
Definition
tail_output_stream.hh:34
PALUDIS_VISIBLE
#define PALUDIS_VISIBLE
Definition
attributes.hh:59
paludis
Definition
about_metadata-fwd.hh:24
pimp.hh
sequence.hh
Generated by
1.18.0