=head1 NAME

SWF::BinStream::Codec - Document for SWF::BinStream codecs.

=head1 SYNOPSIS

  use SWF::BinStream;
  ....
  $stream->add_codec('Foo');

  ----

  package SWF::BinStream::Codec::Foo;

  $VERSION='x.xx';

  package SWF::BinStream::Codec::Foo::Read;

  sub new {}
  sub decode {}
  sub close {}

  package SWF::BinStream::Codec::Foo::Write;

  sub new {}
  sub encode {}
  sub close {}

  1;

=head1 DESCRIPTION

I<SWF::BinStream:Codec::*> package provides additive codecs for I<SWF::BinStream>.

The whole package name must be 'SWF::BinStream::Codec::I<[name]>'.
I<SWF::BinStream> use the package when its I<add_codec> method is called with the I<name>.
Two sub package, 'SWF::BinStream::Codec::I<[name]>::Read' and 'SWF::BinStream::Codec::I<[name]>::Write'
should contain the package.

=head2 METHODS

The codec class must equip these methods. Each method should I<die> when error occurs.

=head3 SWF::BinStream::I<[name]>::Read

=over 4

=item SWF::BinStream::I<[name]>::Read->new;

should return a new decoder. It does not take any parameters.

=item $codec->decode( $data );

is called with the data read from the stream.
It should return decoded data.

=item $codec->close;

is called when the stream is closed.
It does not take any parameters.

=back

=head3 SWF::BinStream::I<[name]>::Write

=over 4

=item SWF::BinStream::I<[name]>::Write->new;

should return a new encoder. It does not take any parameters.

=item $codec->encode( $data );

is called with the data to write to the stream.
It should return encoded data.

=item $codec->close( $data );

is called when the stream is to be closed.
It is called with the rest of bufferred data.
It should return encoded data.

=back

=head1 COPYRIGHT

Copyright 2002 Yasuhiro Sasama (ySas), <ysas@nmt.ne.jp>

This library is free software; you can redistribute it
and/or modify it under the same terms as Perl itself.

=cut