--- nfo/perl/libs/Data/Storage/Locator.pm 2002/10/10 03:43:53 1.1 +++ nfo/perl/libs/Data/Storage/Locator.pm 2002/11/17 06:24:28 1.3 @@ -1,8 +1,14 @@ ################################# # -# $Id: Locator.pm,v 1.1 2002/10/10 03:43:53 cvsjoko Exp $ -# +# $Id: Locator.pm,v 1.3 2002/11/17 06:24:28 joko Exp $ +# # $Log: Locator.pm,v $ +# Revision 1.3 2002/11/17 06:24:28 joko +# + deep merge of arguments in case of ref HASH +# +# Revision 1.2 2002/10/17 00:06:16 joko +# + advanced constructor argument shift-in +# # Revision 1.1 2002/10/10 03:43:53 cvsjoko # + new # @@ -10,39 +16,60 @@ ################################# package Data::Storage::Locator; - -use strict; -use warnings; - + +use strict; +use warnings; + # get logger instance my $logger = Log::Dispatch::Config->instance; - -sub new { - my $invocant = shift; - my $class = ref($invocant) || $invocant; - my $self = { @_ }; - $logger->debug( __PACKAGE__ . "->new(@_)" ); - return bless $self, $class; -} - -sub native { - my $self = shift; - my $arg = shift; - if ($arg) { - $self->{native} = $arg; - #$self->_native2abstract(); - } else { - return $self->{native}; - } -} - -sub _native2abstract { - my $self = shift; - -} - -sub _abstract2native { - my $self = shift; -} - -1; + +use Data::Dumper; + + +sub new { + my $invocant = shift; + my $class = ref($invocant) || $invocant; + + # get constructor arguments + my @args = (); + @_ && (@args = @_); + $logger->debug( __PACKAGE__ . "->new( @args )" ); + + my $self = {}; + bless $self, $class; + +#print "dump: ", Dumper(@_), "\n"; + #my $self = { @_ }; + foreach (@_) { + my $elem = $_; + if (ref($elem) eq 'HASH') { + foreach (keys %$elem) { + $self->{$_} = $elem->{$_}; + } + } + } + + return $self; +} + +sub native { + my $self = shift; + my $arg = shift; + if ($arg) { + $self->{native} = $arg; + #$self->_native2abstract(); + } else { + return $self->{native}; + } +} + +sub _native2abstract { + my $self = shift; + +} + +sub _abstract2native { + my $self = shift; +} + +1;