package Class::Param::Decorator; use strict; use warnings; use base 'Class::Param::Base'; our $AUTOLOAD; use Params::Validate qw[]; sub new { my $class = ref $_[0] ? ref shift : shift; my $self = Params::Validate::validate_with( params => \@_, spec => [ { type => Params::Validate::OBJECT, isa => 'Class::Param::Base', optional => 0 } ], called => "$class\::new" ); return bless( $self, $class )->initialize(@_); } sub initialize { return $_[0]; } sub decorated { return $_[0]->[0]; } sub get { return shift->decorated->get (@_) } sub set { return shift->decorated->set (@_) } sub has { return shift->decorated->has (@_) } sub count { return shift->decorated->count (@_) } sub clear { return shift->decorated->clear (@_) } sub names { return shift->decorated->names (@_) } sub remove { return shift->decorated->remove (@_) } sub AUTOLOAD { my $self = shift; my $method = substr( $AUTOLOAD, rindex( $AUTOLOAD, ':' ) + 1 ); return $self->decorated->$method(@_); } sub DESTROY { } 1; __END__ =head1 NAME Class::Param::Decorator - Class Param Decorator Class =head1 SYNOPSIS package MyDecorator; use base 'Class::Param::Decorator'; sub get { # do something } =head1 DESCRIPTION =head1 METHODS =over 4 =item new Constructor. Takes one argument, an instance of L. =item initialize Called after construction with same arguments given to constructor, should return the instance. =item decorated Returns the decorated L instance. =item get This method simply performs C<$self->decorated->get> and returns the result. =item set This method simply performs C<$self->decorated->set> and returns the result. =item has This method simply performs C<$self->decorated->has> and returns the result. =item count This method simply performs C<$self->decorated->count> and returns the result. =item clear This method simply performs C<$self->decorated->clear> and returns the result. =item names This method simply performs C<$self->decorated->names> and returns the result. =item remove This method simply performs C<$self->decorated->remove> and returns the result. =back =head1 SEE ASLO L. L. =head1 AUTHOR Christian Hansen C =head1 COPYRIGHT This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut