#!/usr/local/bin/perl -w
#
# Copyright (C) 1995, 1996 Systemics Ltd (http://www.systemics.com/)
# All rights reserved.
#
package Stream::DataOutputStream;
@DataOutputStream::ISA = qw(Stream::DataOutputStream);
#
# DataOutputStream
#
# Inherits from OutputStream (write, skip & writeAll)
#
# Implements DataOutput (the write* functions)
#
# Uses an OutputStream for its input
#
use strict;
use Carp;
use Stream::DataEncoding qw(/^encode/ );
sub usage
{
my ($package, $filename, $line, $subr) = caller(1);
$Carp::CarpLevel = 2;
croak "Usage: $subr(@_)";
}
sub new
{
usage("OutputStream") unless @_ == 2;
my $type = shift; my $self = {}; bless $self, $type;
$self->{'os'} = shift || croak("OutputStream undefined");
$self;
}
sub write
{
usage("data") unless @_ == 2;
my $self = shift;
my $data = shift || usage("data");
$self->{'os'}->write($data);
}
sub writeByte
{
usage("byte") unless @_ == 2;
my $self = shift;
my $data = shift;
$self->{'os'}->write(encodeByte($data));
}
sub writeInt16
{
usage("int16") unless @_ == 2;
my $self = shift;
my $data = shift;
$self->{'os'}->write(encodeInt16($data));
}
sub writeInt32
{
usage("int32") unless @_ == 2;
my $self = shift;
my $data = shift;
$self->{'os'}->write(encodeInt32($data));
}
sub writeFloat
{
usage("float") unless @_ == 2;
my $self = shift;
my $data = shift;
$self->{'os'}->write(encodeFloat($data));
}
sub writeDouble
{
usage("double") unless @_ == 2;
my $self = shift;
my $data = shift;
$self->{'os'}->write(encodeDouble($data));
}
sub writeTime
{
usage("time") unless @_ == 2;
my $self = shift;
my $data = shift;
$self->{'os'}->write(encodeTime($data));
}
sub writeLength
{
usage("length") unless @_ == 2;
my $self = shift;
my $len = shift;
$self->{'os'}->write(encodeLength($len));
}
sub writeString
{
usage("string") unless @_ == 2;
my $self = shift;
my $str = shift;
$self->{'os'}->write(encodeString($str));
}
1;