paludis
Version 1.4.0
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
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
virtual
int_type
42
overflow(int_type c);
43
44
virtual
std::streamsize
45
xsputn(
const
char
* s, std::streamsize num);
46
47
public
:
48
TailOutputStreamBuf
(
const
unsigned
n);
49
~
TailOutputStreamBuf
();
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
Generated on Thu May 16 2013 14:09:43 for paludis by
1.8.3.1