From: <mjd...@us...> - 2009-11-25 04:21:56
|
Revision: 323 http://treebase.svn.sourceforge.net/treebase/?rev=323&view=rev Author: mjdominus Date: 2009-11-25 04:21:49 +0000 (Wed, 25 Nov 2009) Log Message: ----------- eliminate duplicate code; make action of AUTOLOAD clearer Modified Paths: -------------- trunk/treebase-core/src/main/perl/lib/CIPRES/TreeBase/VeryBadORM.pm Modified: trunk/treebase-core/src/main/perl/lib/CIPRES/TreeBase/VeryBadORM.pm =================================================================== --- trunk/treebase-core/src/main/perl/lib/CIPRES/TreeBase/VeryBadORM.pm 2009-11-24 21:28:47 UTC (rev 322) +++ trunk/treebase-core/src/main/perl/lib/CIPRES/TreeBase/VeryBadORM.pm 2009-11-25 04:21:49 UTC (rev 323) @@ -112,22 +112,11 @@ # two places is almost the same and we've already had one bug # occur when they didn't stay in sync. mjd 20091123 sub AUTOLOAD { - my $obj = shift; our $AUTOLOAD; my ($package, $method) = $AUTOLOAD =~ /(.*)::(.*)/; - if ($package->has_attr($method)) { - return $obj->get_no_check($method, @_); - } elsif ($package->has_subobject($method)) { - return $obj->get_subobject_no_check($method, @_); - } elsif ($package->has_r_attr($method)) { - return $obj->get_r_subobject_no_check($method, @_); - } elsif ($package->has_r2_attr($method)) { - return $obj->get_r2_subobject_no_check($method, @_); - } else { -# my $trace = Devel::StackTrace->new; -# print $trace->as_string; # like carp - croak("Unknown attribute '$method' in class '$package'"); - } + @_ = ($_[0], $method); + my $get = $package->can("get"); + goto &$get; } =item has_attr() @@ -337,6 +326,8 @@ return $self->get_subobject_no_check($attr, @_); } elsif ($self->has_r_attr($attr)) { return $self->get_r_subobject_no_check($attr, @_); + } elsif ($self->has_r2_attr($attr)) { + return $self->get_r2_subobject_no_check($attr, @_); } # my $trace = Devel::StackTrace->new; # print $trace->as_string; # like carp This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |