Hello community,
here is the log from the commit of package perl-Class-Accessor
checked in at Mon Jul 24 15:48:00 CEST 2006.
--------
--- perl-Class-Accessor/perl-Class-Accessor.changes 2006-07-11 16:52:10.000000000 +0200
+++ perl-Class-Accessor/perl-Class-Accessor.changes 2006-07-24 15:09:47.000000000 +0200
@@ -1,0 +2,6 @@
+Mon Jul 24 14:56:00 CEST 2006 - anicka@suse.cz
+
+- update to 0.27
+ * added Class::Accessor::Faster that uses an array internally
+
+-------------------------------------------------------------------
Old:
----
Class-Accessor-0.25.tar.bz2
New:
----
Class-Accessor-0.27.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Class-Accessor.spec ++++++
--- /var/tmp/diff_new_pack.ih8KXO/_old 2006-07-24 15:47:52.000000000 +0200
+++ /var/tmp/diff_new_pack.ih8KXO/_new 2006-07-24 15:47:52.000000000 +0200
@@ -1,5 +1,5 @@
#
-# spec file for package perl-Class-Accessor (Version 0.25)
+# spec file for package perl-Class-Accessor (Version 0.27)
#
# Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@@ -12,7 +12,7 @@
Name: perl-Class-Accessor
BuildRequires: perl-Carp-Assert
-Version: 0.25
+Version: 0.27
Release: 1
Requires: perl-Carp-Assert
Requires: perl = %{perl_version}
@@ -34,7 +34,7 @@
Michael G Schwern
%prep
-%setup -n Class-Accessor-%{version}
+%setup -q -n Class-Accessor-%{version}
%build
perl Makefile.PL
@@ -59,6 +59,9 @@
/var/adm/perl-modules/%{name}
%changelog -n perl-Class-Accessor
+* Mon Jul 24 2006 - anicka@suse.cz
+- update to 0.27
+ * added Class::Accessor::Faster that uses an array internally
* Tue Jul 11 2006 - anicka@suse.cz
- update to 0.25
- minor release
++++++ Class-Accessor-0.25.tar.bz2 -> Class-Accessor-0.27.tar.bz2 ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/Changes new/Class-Accessor-0.27/Changes
--- old/Class-Accessor-0.25/Changes 2006-03-31 11:39:35.000000000 +0200
+++ new/Class-Accessor-0.27/Changes 2006-07-19 02:46:09.000000000 +0200
@@ -1,3 +1,7 @@
+0.26 Wed Jul 19 01:20:23 BST 2006
+ - added Class::Accessor::Faster that uses an array internally.
+ Thanks to Tina Mueller for prompting me to do this.
+
0.25 Fri Mar 31 18:28:17 JST 2006
- added a 'follow_best_practice' class method that causes the accessors to
be called 'get_foo' and 'set_foo' instead of just 'foo'
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/MANIFEST new/Class-Accessor-0.27/MANIFEST
--- old/Class-Accessor-0.25/MANIFEST 2006-03-31 11:39:35.000000000 +0200
+++ new/Class-Accessor-0.27/MANIFEST 2006-07-19 02:46:09.000000000 +0200
@@ -1,12 +1,15 @@
-MANIFEST
-META.yml
-README
Changes
+examples/benchmark
INSTALL
-Makefile.PL
lib/Class/Accessor.pm
lib/Class/Accessor/Fast.pm
+lib/Class/Accessor/Faster.pm
+Makefile.PL
+MANIFEST This list of files
+META.yml
+README
t/accessors.t
+t/aliases.t
+t/bestpractice.t
t/croak.t
t/getset.t
-examples/benchmark
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/META.yml new/Class-Accessor-0.27/META.yml
--- old/Class-Accessor-0.25/META.yml 2006-03-31 11:39:38.000000000 +0200
+++ new/Class-Accessor-0.27/META.yml 2006-07-19 02:46:13.000000000 +0200
@@ -1,11 +1,11 @@
# http://module-build.sourceforge.net/META-spec.html
#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
name: Class-Accessor
-version: 0.25
+version: 0.27
version_from: lib/Class/Accessor.pm
installdirs: site
requires:
base: 1.01
distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.30
+generated_by: ExtUtils::MakeMaker version 6.30_01
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/README new/Class-Accessor-0.27/README
--- old/Class-Accessor-0.25/README 2006-03-31 11:39:35.000000000 +0200
+++ new/Class-Accessor-0.27/README 2006-07-19 02:46:09.000000000 +0200
@@ -1,7 +1,10 @@
-NAME
- Class::Accessor - Automated accessor generation
+NAMES
+ Class::Accessor - automated accessor generation
+ Class::Accessor::Fast - faster automated accessor generation
+ Class::Accessor::Faster - even faster, using an array
DESCRIPTION
+
This module automagically generates accessors/mutators for your class.
Most of the time, writing accessors is an exercise in cutting and
@@ -46,12 +49,13 @@
AUTHORS
- Copyright 2005 Marty Pauley
+ Copyright 2006 Marty Pauley
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself. That means either (a) the GNU
General Public License or (b) the Artistic License.
- ORIGINAL AUTHOR
+ORIGINAL AUTHOR
+
Michael G Schwern
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/examples/benchmark new/Class-Accessor-0.27/examples/benchmark
--- old/Class-Accessor-0.25/examples/benchmark 2006-03-31 11:39:35.000000000 +0200
+++ new/Class-Accessor-0.27/examples/benchmark 2006-07-19 02:46:09.000000000 +0200
@@ -7,16 +7,6 @@
bless { test => 23 }, $class;
}
-
-package Bench::Class::Accessor;
-use base qw(Bench::Base Class::Accessor);
-__PACKAGE__->mk_accessors(qw(test));
-
-
-package Bench::Class::Accessor::Fast;
-use base qw(Bench::Base Class::Accessor::Fast);
-__PACKAGE__->mk_accessors(qw(test));
-
package Bench::Direct;
use base qw(Bench::Base);
@@ -31,9 +21,23 @@
return $self->{test};
}
+package Bench::Class::Accessor;
+use base qw(Class::Accessor);
+__PACKAGE__->mk_accessors(qw(test));
+
+
+package Bench::Class::Accessor::Fast;
+use base qw(Class::Accessor::Fast);
+__PACKAGE__->mk_accessors(qw(test));
+
+package Bench::Class::Accessor::Faster;
+use base qw(Class::Accessor::Faster);
+__PACKAGE__->mk_accessors(qw(test));
-my $ca = Bench::Class::Accessor->new;
-my $fast = Bench::Class::Accessor::Fast->new;
+my %init = ( test => 23 );
+my $ca = Bench::Class::Accessor->new(\%init);
+my $fast = Bench::Class::Accessor::Fast->new(\%init);
+my $faster = Bench::Class::Accessor::Faster->new(\%init);
my $direct = Bench::Direct->new;
my $byhand = Bench::ByHand->new;
@@ -49,6 +53,7 @@
{
'C::A - get' => sub { $foo = $ca->test; },
'C::A::F - get' => sub { $foo = $fast->test; },
+ 'C::A::Fr - get' => sub { $foo = $faster->test; },
'By Hand - get' => sub { $foo = $byhand->test; },
'Direct - get' => sub { $foo = $direct->{test}; }
}
@@ -57,6 +62,7 @@
{
'C::A - set' => sub { $ca->test(42); },
'C::A::F - set' => sub { $fast->test(42); },
+ 'C::A::Fr - set' => sub { $faster->test(42); },
'By Hand - set' => sub { $byhand->test(42); },
'Direct - set' => sub { $direct->{test} = 42; }
}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/lib/Class/Accessor/Fast.pm new/Class-Accessor-0.27/lib/Class/Accessor/Fast.pm
--- old/Class-Accessor-0.25/lib/Class/Accessor/Fast.pm 2006-03-31 11:39:35.000000000 +0200
+++ new/Class-Accessor-0.27/lib/Class/Accessor/Fast.pm 2006-07-19 02:46:09.000000000 +0200
@@ -1,7 +1,7 @@
package Class::Accessor::Fast;
use base 'Class::Accessor';
use strict;
-$Class::Accessor::Fast::VERSION = '0.25';
+$Class::Accessor::Fast::VERSION = $Class::Accessor::VERSION;
=head1 NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/lib/Class/Accessor/Faster.pm new/Class-Accessor-0.27/lib/Class/Accessor/Faster.pm
--- old/Class-Accessor-0.25/lib/Class/Accessor/Faster.pm 1970-01-01 01:00:00.000000000 +0100
+++ new/Class-Accessor-0.27/lib/Class/Accessor/Faster.pm 2006-07-19 02:46:09.000000000 +0200
@@ -0,0 +1,108 @@
+package Class::Accessor::Faster;
+use base 'Class::Accessor';
+use strict;
+$Class::Accessor::Faster::VERSION = $Class::Accessor::VERSION;
+
+=head1 NAME
+
+Class::Accessor::Faster - Even faster, but less expandable, accessors
+
+=head1 SYNOPSIS
+
+ package Foo;
+ use base qw(Class::Accessor::Faster);
+
+=head1 DESCRIPTION
+
+This is a faster but less expandable version of Class::Accessor::Fast.
+
+Class::Accessor's generated accessors require two method calls to accompish
+their task (one for the accessor, another for get() or set()).
+
+Class::Accessor::Fast eliminates calling set()/get() and does the access itself,
+resulting in a somewhat faster accessor.
+
+Class::Accessor::Faster uses an array reference underneath to be faster.
+
+Read the documentation for Class::Accessor for more info.
+
+=cut
+
+my %slot;
+sub _slot {
+ my($class, $field) = @_;
+ my $n = $slot{$class}->{$field};
+ return $n if defined $n;
+ $n = keys %{$slot{$class}};
+ $slot{$class}->{$field} = $n;
+ return $n;
+}
+
+sub new {
+ my($proto, $fields) = @_;
+ my($class) = ref $proto || $proto;
+ my $self = bless [], $class;
+
+ $fields = {} unless defined $fields;
+ for my $k (keys %$fields) {
+ my $n = $class->_slot($k);
+ $self->[$n] = $fields->{$k};
+ }
+ return $self;
+}
+
+sub make_accessor {
+ my($class, $field) = @_;
+ my $n = $class->_slot($field);
+ return sub {
+ return $_[0]->[$n] unless @_ > 1;
+ my $self = shift;
+ $self->[$n] = (@_ == 1 ? $_[0] : [@_]);
+ };
+}
+
+
+sub make_ro_accessor {
+ my($class, $field) = @_;
+ my $n = $class->_slot($field);
+ return sub {
+ return $_[0]->[$n] unless @_ > 1;
+ my $self = shift;
+ my $caller = caller;
+ $self->_croak("'$caller' cannot alter the value of '$field' on objects of class '$class'");
+ };
+}
+
+
+sub make_wo_accessor {
+ my($class, $field) = @_;
+ my $n = $class->_slot($field);
+ return sub {
+ my $self = shift;
+
+ unless (@_) {
+ my $caller = caller;
+ $self->_croak("'$caller' cannot access the value of '$field' on objects of class '$class'");
+ }
+ else {
+ return $self->[$n] = (@_ == 1 ? $_[0] : [@_]);
+ }
+ };
+}
+
+
+=head1 AUTHORS
+
+Copyright 2006 Marty Pauley
+
+This program is free software; you can redistribute it and/or modify it under
+the same terms as Perl itself. That means either (a) the GNU General Public
+License or (b) the Artistic License.
+
+=head1 SEE ALSO
+
+LClass::Accessor
+
+=cut
+
+1;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/lib/Class/Accessor.pm new/Class-Accessor-0.27/lib/Class/Accessor.pm
--- old/Class-Accessor-0.25/lib/Class/Accessor.pm 2006-03-31 11:39:35.000000000 +0200
+++ new/Class-Accessor-0.27/lib/Class/Accessor.pm 2006-07-19 02:46:09.000000000 +0200
@@ -1,7 +1,7 @@
package Class::Accessor;
require 5.00502;
use strict;
-$Class::Accessor::VERSION = '0.25';
+$Class::Accessor::VERSION = '0.27';
=head1 NAME
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/t/accessors.t new/Class-Accessor-0.27/t/accessors.t
--- old/Class-Accessor-0.25/t/accessors.t 2006-03-31 11:39:35.000000000 +0200
+++ new/Class-Accessor-0.27/t/accessors.t 2006-07-19 02:46:09.000000000 +0200
@@ -1,8 +1,8 @@
#!perl
use strict;
-use Test::More tests => 26;
+use Test::More tests => 37;
-for my $class (qw(Class::Accessor Class::Accessor::Fast)) {
+for my $class (qw(Class::Accessor Class::Accessor::Fast Class::Accessor::Faster)) {
require_ok($class);
my $silly = "Silly::$class";
{
@@ -24,7 +24,7 @@
$test->bar('Meep');
is($test->foo, 42, "foo accessor");
- is($test->{foo}, 42, "foo hash element");
+ is($test->{foo}, 42, "foo hash element") unless $class eq 'Class::Accessor::Faster';
is($test->static, 'variable', 'ro accessor');
eval { $test->static('foo'); };
@@ -33,7 +33,7 @@
'ro accessor write protection');
$test->double_sekret(1001001);
- is( $test->{double_sekret}, 1001001, 'wo accessor');
+ is( $test->{double_sekret}, 1001001, 'wo accessor') unless $class eq 'Class::Accessor::Faster';
eval { () = $test->double_sekret; };
like(scalar $@,
qr/^'main' cannot access the value of 'double_sekret' on objects of class '$silly'/,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/t/aliases.t new/Class-Accessor-0.27/t/aliases.t
--- old/Class-Accessor-0.25/t/aliases.t 1970-01-01 01:00:00.000000000 +0100
+++ new/Class-Accessor-0.27/t/aliases.t 2006-07-19 02:46:09.000000000 +0200
@@ -0,0 +1,39 @@
+#!perl
+use strict;
+use Test::More tests => 36;
+
+for my $class (qw(Class::Accessor Class::Accessor::Fast Class::Accessor::Faster)) {
+ require_ok($class);
+ my $silly = "Silly::$class";
+ {
+ no strict 'refs';
+ @{"${silly}::ISA"} = ($class);
+ *{"${silly}::accessor_name_for"} = sub { "read_$_[1]" };
+ *{"${silly}::mutator_name_for"} = sub { "write_$_[1]" };
+ $silly->mk_accessors(qw( foo ));
+ $silly->mk_ro_accessors(qw(roro));
+ $silly->mk_wo_accessors(qw(wowo));
+ }
+
+ for my $f (qw/foo roro /) {
+ ok $silly->can("read_$f"), "'read_$f' method exists";
+ }
+
+ for my $f (qw/foo wowo/) {
+ ok $silly->can("write_$f"), "'write_$f' method exists";
+ }
+
+ for my $f (qw/foo roro wowo write_roro read_wowo/) {
+ ok !$silly->can($f), "no '$f' method";
+ }
+
+ my $test = $silly->new({
+ foo => "bar",
+ roro => "boat",
+ wowo => "huh",
+ });
+
+ is($test->read_foo, "bar", "initial foo");
+ $test->write_foo("stuff");
+ is($test->read_foo, "stuff", "new foo");
+}
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/Class-Accessor-0.25/t/bestpractice.t new/Class-Accessor-0.27/t/bestpractice.t
--- old/Class-Accessor-0.25/t/bestpractice.t 1970-01-01 01:00:00.000000000 +0100
+++ new/Class-Accessor-0.27/t/bestpractice.t 2006-07-19 02:46:09.000000000 +0200
@@ -0,0 +1,38 @@
+#!perl
+use strict;
+use Test::More tests => 36;
+
+for my $class (qw(Class::Accessor Class::Accessor::Fast Class::Accessor::Faster)) {
+ require_ok($class);
+ my $silly = "Silly::$class";
+ {
+ no strict 'refs';
+ @{"${silly}::ISA"} = ($class);
+ $silly->follow_best_practice;
+ $silly->mk_accessors(qw( foo ));
+ $silly->mk_ro_accessors(qw(roro));
+ $silly->mk_wo_accessors(qw(wowo));
+ }
+
+ for my $f (qw/foo roro /) {
+ ok $silly->can("get_$f"), "'get_$f' method exists";
+ }
+
+ for my $f (qw/foo wowo/) {
+ ok $silly->can("set_$f"), "'set_$f' method exists";
+ }
+
+ for my $f (qw/foo roro wowo set_roro get_wowo/) {
+ ok !$silly->can($f), "no '$f' method";
+ }
+
+ my $test = $silly->new({
+ foo => "bar",
+ roro => "boat",
+ wowo => "huh",
+ });
+
+ is($test->get_foo, "bar", "initial foo");
+ $test->set_foo("stuff");
+ is($test->get_foo, "stuff", "new foo");
+}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit-unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit-help@opensuse.org