The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#
# Copyright (C) 2004 Jörg Tiedemann  <joerg@stp.ling.uu.se>
#
# 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#
# -*-perl-*-
# $Id$	


package Uplug::IO::LWA;

use strict;
use vars qw(@ISA);
use vars qw(%StreamOptions);
use Uplug::IO::Text;
use Uplug::IO::Any;
# use Uplug::Data;
# use Uplug::Data::Tree;

@ISA = qw( Uplug::IO );

# stream options and their default values!!


sub open{
    my $self=shift;
    if ($self->SUPER::open(@_)){
	my $src=$self->options();
	$src->{file}=$self->option('source file');
	$self->{source}=Uplug::IO::Any->new('text',$src);
	if (not $self->{source}->open(@_[0],$src)){
	    return 0;
	}
	my $trg=$self->options();
	$trg->{file}=$self->option('target file');
	$self->{target}=Uplug::IO::Any->new('text',$trg);
	if (not $self->{target}->open(@_[0],$trg)){
	    return 0;
	}
	return 1;
    }
    return 0;
}


sub write{
    my $self=shift;
    my ($data)=@_;
    $self->Uplug::IO::write($data);
    my $cont=$data->content('source');
    $self->{source}->write($cont);
    my $cont=$data->content('target');
    $self->{target}->write($cont);
}


sub read{

    print STDERR "# Uplug::IO::LWA: read doesn't work\n";
    return 0;
}

sub close{
    my $self=shift;
    $self->{source}->close();
    $self->{target}->close();
    $self->SUPER::close(@_);
}