//
// aegis - project change supervisor
// Copyright (C) 2001, 2003-2006, 2008, 2011, 2012 Peter Miller
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or (at
// your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
//
#include
output_tee::~output_tee()
{
//
// Make sure all buffered data has been passed to our write_inner
// method.
//
flush();
}
output_tee::output_tee(const output::pointer &a1, const output::pointer &a2) :
d1(a1),
d2(a2)
{
}
output::pointer
output_tee::create(const output::pointer &a1, const output::pointer &a2)
{
return pointer(new output_tee(a1, a2));
}
void
output_tee::write_inner(const void *data, size_t nbytes)
{
d1->write(data, nbytes);
d2->write(data, nbytes);
}
void
output_tee::flush_inner()
{
d1->flush();
d2->flush();
}
nstring
output_tee::filename()
const
{
return d1->filename();
}
long
output_tee::ftell_inner()
const
{
long result = d1->ftell();
if (result < 0)
result = d2->ftell();
return result;
}
int
output_tee::page_width()
const
{
return d1->page_width();
}
int
output_tee::page_length()
const
{
return d1->page_length();
}
void
output_tee::end_of_line_inner()
{
d1->end_of_line();
d2->end_of_line();
}
nstring
output_tee::type_name()
const
{
return ("tee(" + d1->type_name() + "," + d2->type_name() + ")");
}
// vim: set ts=8 sw=4 et :