r51256 - in /trunk/libaspect-perl: ./ debian/ lib/ lib/Aspect/ lib/Aspect/Advice/ lib/Aspect/Library/ lib/Aspect/Library/Listenable/ lib/Aspect/Pointcut/ t/
jawnsy-guest at users.alioth.debian.org
jawnsy-guest at users.alioth.debian.org
Tue Jan 19 15:22:30 UTC 2010
Author: jawnsy-guest
Date: Tue Jan 19 15:22:24 2010
New Revision: 51256
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=51256
Log:
New upstream release
Added:
trunk/libaspect-perl/lib/Aspect/Advice/Hook.pm
- copied unchanged from r51255, branches/upstream/libaspect-perl/current/lib/Aspect/Advice/Hook.pm
trunk/libaspect-perl/lib/Aspect/Library/Breakpoint.pm
- copied unchanged from r51255, branches/upstream/libaspect-perl/current/lib/Aspect/Library/Breakpoint.pm
trunk/libaspect-perl/lib/Aspect/Pointcut/Highest.pm
- copied unchanged from r51255, branches/upstream/libaspect-perl/current/lib/Aspect/Pointcut/Highest.pm
trunk/libaspect-perl/lib/Aspect/Pointcut/Throwing.pm
- copied unchanged from r51255, branches/upstream/libaspect-perl/current/lib/Aspect/Pointcut/Throwing.pm
trunk/libaspect-perl/lib/Aspect/Pointcut/Wantarray.pm
- copied unchanged from r51255, branches/upstream/libaspect-perl/current/lib/Aspect/Pointcut/Wantarray.pm
trunk/libaspect-perl/t/10_pointcut.t
- copied unchanged from r51255, branches/upstream/libaspect-perl/current/t/10_pointcut.t
trunk/libaspect-perl/t/14_pointcut_highest.t
- copied unchanged from r51255, branches/upstream/libaspect-perl/current/t/14_pointcut_highest.t
trunk/libaspect-perl/t/15_pointcut_wantarray.t
- copied unchanged from r51255, branches/upstream/libaspect-perl/current/t/15_pointcut_wantarray.t
trunk/libaspect-perl/t/16_pointcut_throwing.t
- copied unchanged from r51255, branches/upstream/libaspect-perl/current/t/16_pointcut_throwing.t
Modified:
trunk/libaspect-perl/Changes
trunk/libaspect-perl/MANIFEST
trunk/libaspect-perl/META.yml
trunk/libaspect-perl/debian/changelog
trunk/libaspect-perl/lib/Aspect.pm
trunk/libaspect-perl/lib/Aspect/Advice.pm
trunk/libaspect-perl/lib/Aspect/Advice/After.pm
trunk/libaspect-perl/lib/Aspect/Advice/AfterReturning.pm
trunk/libaspect-perl/lib/Aspect/Advice/AfterThrowing.pm
trunk/libaspect-perl/lib/Aspect/Advice/Around.pm
trunk/libaspect-perl/lib/Aspect/Advice/Before.pm
trunk/libaspect-perl/lib/Aspect/AdviceContext.pm
trunk/libaspect-perl/lib/Aspect/Library/Listenable.pm
trunk/libaspect-perl/lib/Aspect/Library/Listenable/Event.pm
trunk/libaspect-perl/lib/Aspect/Library/Singleton.pm
trunk/libaspect-perl/lib/Aspect/Library/Wormhole.pm
trunk/libaspect-perl/lib/Aspect/Modular.pm
trunk/libaspect-perl/lib/Aspect/Pointcut.pm
trunk/libaspect-perl/lib/Aspect/Pointcut/And.pm
trunk/libaspect-perl/lib/Aspect/Pointcut/Call.pm
trunk/libaspect-perl/lib/Aspect/Pointcut/Cflow.pm
trunk/libaspect-perl/lib/Aspect/Pointcut/If.pm
trunk/libaspect-perl/lib/Aspect/Pointcut/Not.pm
trunk/libaspect-perl/lib/Aspect/Pointcut/Or.pm
Modified: trunk/libaspect-perl/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/Changes?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/Changes (original)
+++ trunk/libaspect-perl/Changes Tue Jan 19 15:22:24 2010
@@ -1,4 +1,18 @@
Revision history for Perl extension Aspect
+
+0.40 Tue 19 Jan 2010 - Adam Kennedy
+ - Added experimental Aspect::Library::Throwing pointcut
+ - Only nested pointcuts containing only call() would curry away.
+ Now nested mixed pointcuts curry out as well.
+ - Nested And|Or pointcuts curry to faster flat 3+ element And|Or
+
+0.39 Tue 19 Jan 2010 - Adam Kennedy
+ - All hook code is now generated in a single namespace
+ - Added the Aspect::Library::Wantarray pointcut
+
+0.38 Tue 19 Jan 2010 - Adam Kennedy
+ - Added experimental support for the "highest" pointcut.
+ - Added experimental support for the Breakpoint reusable library.
0.37 Wed 13 Jan 2010 - Adam Kennedy
- Added support for "Aspect ':legacy'", which will cause the Aspect
Modified: trunk/libaspect-perl/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/MANIFEST?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/MANIFEST (original)
+++ trunk/libaspect-perl/MANIFEST Tue Jan 19 15:22:24 2010
@@ -22,7 +22,9 @@
lib/Aspect/Advice/AfterThrowing.pm
lib/Aspect/Advice/Around.pm
lib/Aspect/Advice/Before.pm
+lib/Aspect/Advice/Hook.pm
lib/Aspect/AdviceContext.pm
+lib/Aspect/Library/Breakpoint.pm
lib/Aspect/Library/Listenable.pm
lib/Aspect/Library/Listenable/Event.pm
lib/Aspect/Library/Singleton.pm
@@ -32,9 +34,12 @@
lib/Aspect/Pointcut/And.pm
lib/Aspect/Pointcut/Call.pm
lib/Aspect/Pointcut/Cflow.pm
+lib/Aspect/Pointcut/Highest.pm
lib/Aspect/Pointcut/If.pm
lib/Aspect/Pointcut/Not.pm
lib/Aspect/Pointcut/Or.pm
+lib/Aspect/Pointcut/Throwing.pm
+lib/Aspect/Pointcut/Wantarray.pm
LICENSE
Makefile.PL
MANIFEST This list of files
@@ -42,9 +47,13 @@
README
t/01_compile.t
t/02_advice_context.t
+t/10_pointcut.t
t/11_pointcut_call.t
t/12_pointcut_cflow.t
t/13_pointcut_if.t
+t/14_pointcut_highest.t
+t/15_pointcut_wantarray.t
+t/16_pointcut_throwing.t
t/21_advice_around.t
t/22_advice_around.t
t/23_advice_before.t
Modified: trunk/libaspect-perl/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/META.yml?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/META.yml (original)
+++ trunk/libaspect-perl/META.yml Tue Jan 19 15:22:24 2010
@@ -34,4 +34,4 @@
ChangeLog: http://fisheye2.atlassian.com/changelog/cpan/trunk/Aspect
license: http://dev.perl.org/licenses/
repository: http://svn.ali.as/cpan/trunk/Aspect
-version: 0.37
+version: 0.40
Modified: trunk/libaspect-perl/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/debian/changelog?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/debian/changelog (original)
+++ trunk/libaspect-perl/debian/changelog Tue Jan 19 15:22:24 2010
@@ -1,3 +1,9 @@
+libaspect-perl (0.40-1) UNRELEASED; urgency=low
+
+ * New upstream release
+
+ -- Jonathan Yu <jawnsy at cpan.org> Tue, 19 Jan 2010 10:30:09 -0500
+
libaspect-perl (0.37-1) unstable; urgency=low
* New upstream release
Modified: trunk/libaspect-perl/lib/Aspect.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect.pm (original)
+++ trunk/libaspect-perl/lib/Aspect.pm Tue Jan 19 15:22:24 2010
@@ -20,6 +20,9 @@
use Aspect::Pointcut::Not ();
use Aspect::Pointcut::Call ();
use Aspect::Pointcut::Cflow ();
+use Aspect::Pointcut::Highest ();
+use Aspect::Pointcut::Wantarray ();
+use Aspect::Pointcut::Throwing ();
use Aspect::Advice ();
use Aspect::AdviceContext ();
use Aspect::Advice::Around ();
@@ -29,7 +32,7 @@
use Aspect::Advice::AfterThrowing ();
use Aspect::AdviceContext ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
# Internal data storage
my @FOREVER = ();
@@ -94,6 +97,10 @@
);
}
+sub highest () {
+ Aspect::Pointcut::Highest->new();
+}
+
sub if_true (&) {
Aspect::Pointcut::If->new(@_);
}
@@ -104,6 +111,22 @@
sub cflow ($$) {
Aspect::Pointcut::Cflow->new(@_);
+}
+
+sub wantlist () {
+ Aspect::Pointcut::Wantarray->new(1);
+}
+
+sub wantscalar () {
+ Aspect::Pointcut::Wantarray->new('');
+}
+
+sub wantvoid () {
+ Aspect::Pointcut::Wantarray->new(undef);
+}
+
+sub throwing ($) {
+ Aspect::Pointcut::Throwing->new(@_);
}
@@ -145,7 +168,8 @@
# Install new generation API functions
foreach ( qw{
around after_returning after_throwing
- if_true
+ if_true highest throwing
+ wantlist wantscalar wantvoid
} ) {
Sub::Install::install_sub( {
code => $_,
Modified: trunk/libaspect-perl/lib/Aspect/Advice.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Advice.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Advice.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Advice.pm Tue Jan 19 15:22:24 2010
@@ -3,7 +3,7 @@
use strict;
use warnings;
-our $VERSION = '0.37';
+our $VERSION = '0.40';
sub new {
my $class = shift;
Modified: trunk/libaspect-perl/lib/Aspect/Advice/After.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Advice/After.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Advice/After.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Advice/After.pm Tue Jan 19 15:22:24 2010
@@ -9,9 +9,10 @@
use Carp ();
use Sub::Uplevel ();
use Aspect::Advice ();
+use Aspect::Advice::Hook ();
use Aspect::AdviceContext ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Advice';
# NOTE: To simplify debugging of the generated code, all injected string
@@ -61,6 +62,8 @@
# Generate the new function
no warnings 'redefine';
eval <<"END_PERL"; die $@ if $@;
+ package Aspect::Advice::Hook;
+
*$NAME = sub $PROTOTYPE {
# Is this a lexically scoped hook that has finished
goto &\$original if $MATCH_DISABLED;
@@ -74,6 +77,7 @@
] };
my \$runtime = {
+ wantarray => \$wantarray,
return_value => \$return,
exception => \$\@,
};
@@ -84,12 +88,11 @@
# Create the context
my \$context = Aspect::AdviceContext->new(
- type => 'after',
- pointcut => \$pointcut,
- sub_name => \$name,
- wantarray => \$wantarray,
- params => \\\@_,
- original => \$original,
+ type => 'after',
+ pointcut => \$pointcut,
+ sub_name => \$name,
+ params => \\\@_,
+ original => \$original,
\%\$runtime,
);
@@ -117,6 +120,7 @@
};
my \$runtime = {
+ wantarray => \$wantarray,
return_value => \$return,
exception => \$\@,
};
@@ -127,12 +131,11 @@
# Create the context
my \$context = Aspect::AdviceContext->new(
- type => 'after',
- pointcut => \$pointcut,
- sub_name => \$name,
- wantarray => \$wantarray,
- params => \\\@_,
- original => \$original,
+ type => 'after',
+ pointcut => \$pointcut,
+ sub_name => \$name,
+ params => \\\@_,
+ original => \$original,
\%\$runtime,
);
@@ -154,6 +157,7 @@
};
my \$runtime = {
+ wantarray => \$wantarray,
return_value => undef,
exception => \$\@,
};
@@ -164,12 +168,11 @@
# Create the context
my \$context = Aspect::AdviceContext->new(
- type => 'after',
- pointcut => \$pointcut,
- sub_name => \$name,
- wantarray => \$wantarray,
- params => \\\@_,
- original => \$original,
+ type => 'after',
+ pointcut => \$pointcut,
+ sub_name => \$name,
+ params => \\\@_,
+ original => \$original,
\%\$runtime,
);
Modified: trunk/libaspect-perl/lib/Aspect/Advice/AfterReturning.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Advice/AfterReturning.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Advice/AfterReturning.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Advice/AfterReturning.pm Tue Jan 19 15:22:24 2010
@@ -9,9 +9,10 @@
use Carp ();
use Sub::Uplevel ();
use Aspect::Advice ();
+use Aspect::Advice::Hook ();
use Aspect::AdviceContext ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Advice';
# NOTE: To simplify debugging of the generated code, all injected string
@@ -61,12 +62,16 @@
# Generate the new function
no warnings 'redefine';
eval <<"END_PERL"; die $@ if $@;
+ package Aspect::Advice::Hook;
+
*$NAME = sub $PROTOTYPE {
# Is this a lexically scoped hook that has finished
goto &\$original if $MATCH_DISABLED;
- my \$runtime = {};
my \$wantarray = wantarray;
+ my \$runtime = {
+ wantarray => \$wantarray,
+ };
if ( \$wantarray ) {
my \$return = [
Sub::Uplevel::uplevel(
@@ -80,7 +85,6 @@
type => 'after_returning',
pointcut => \$pointcut,
sub_name => \$name,
- wantarray => \$wantarray,
params => \\\@_,
return_value => \$return,
original => \$original,
Modified: trunk/libaspect-perl/lib/Aspect/Advice/AfterThrowing.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Advice/AfterThrowing.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Advice/AfterThrowing.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Advice/AfterThrowing.pm Tue Jan 19 15:22:24 2010
@@ -9,9 +9,10 @@
use Carp ();
use Sub::Uplevel ();
use Aspect::Advice ();
+use Aspect::Advice::Hook ();
use Aspect::AdviceContext ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Advice';
# NOTE: To simplify debugging of the generated code, all injected string
@@ -61,6 +62,8 @@
# Generate the new function
no warnings 'redefine';
eval <<"END_PERL"; die $@ if $@;
+ package Aspect::Advice::Hook;
+
*$NAME = sub $PROTOTYPE {
# Is this a lexically scoped hook that has finished
goto &\$original if $MATCH_DISABLED;
@@ -75,6 +78,7 @@
return \@\$return unless \$\@;
my \$runtime = {
+ wantarray => \$wantarray,
return_value => \$return,
exception => \$\@,
};
@@ -82,12 +86,11 @@
# Create the context
my \$context = Aspect::AdviceContext->new(
- type => 'after_throwing',
- pointcut => \$pointcut,
- sub_name => \$name,
- wantarray => \$wantarray,
- params => \\\@_,
- original => \$original,
+ type => 'after_throwing',
+ pointcut => \$pointcut,
+ sub_name => \$name,
+ params => \\\@_,
+ original => \$original,
\%\$runtime,
);
@@ -116,6 +119,7 @@
return \$return unless \$\@;
my \$runtime = {
+ wantarray => \$wantarray,
return_value => \$return,
exception => \$\@,
};
@@ -123,12 +127,11 @@
# Create the context
my \$context = Aspect::AdviceContext->new(
- type => 'after_throwing',
- pointcut => \$pointcut,
- sub_name => \$name,
- wantarray => \$wantarray,
- params => \\\@_,
- original => \$original,
+ type => 'after_throwing',
+ pointcut => \$pointcut,
+ sub_name => \$name,
+ params => \\\@_,
+ original => \$original,
\%\$runtime,
);
@@ -151,6 +154,7 @@
return unless \$\@;
my \$runtime = {
+ wantarray => \$wantarray,
return_value => undef,
exception => \$\@,
};
@@ -158,12 +162,11 @@
# Create the context
my \$context = Aspect::AdviceContext->new(
- type => 'after_throwing',
- pointcut => \$pointcut,
- sub_name => \$name,
- wantarray => \$wantarray,
- params => \\\@_,
- original => \$original,
+ type => 'after_throwing',
+ pointcut => \$pointcut,
+ sub_name => \$name,
+ params => \\\@_,
+ original => \$original,
\%\$runtime,
);
Modified: trunk/libaspect-perl/lib/Aspect/Advice/Around.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Advice/Around.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Advice/Around.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Advice/Around.pm Tue Jan 19 15:22:24 2010
@@ -9,9 +9,10 @@
use Carp ();
use Sub::Uplevel ();
use Aspect::Advice ();
+use Aspect::Advice::Hook ();
use Aspect::AdviceContext ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Advice';
sub _install {
@@ -58,21 +59,24 @@
# Generate the new function
no warnings 'redefine';
eval <<"END_PERL"; die $@ if $@;
+ package Aspect::Advice::Hook;
+
*$NAME = sub $PROTOTYPE {
# Is this a lexically scoped hook that has finished
goto &\$original if $MATCH_DISABLED;
# Apply any runtime-specific context checks
- my \$runtime = {};
+ my \$wantarray = wantarray;
+ my \$runtime = {
+ wantarray => \$wantarray,
+ };
goto &\$original unless $MATCH_RUN;
# Prepare the context object
- my \$wantarray = wantarray;
my \$context = Aspect::AdviceContext->new(
type => 'around',
pointcut => \$pointcut,
sub_name => \$name,
- wantarray => \$wantarray,
params => \\\@_,
return_value => \$wantarray ? [ ] : undef,
original => \$original,
Modified: trunk/libaspect-perl/lib/Aspect/Advice/Before.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Advice/Before.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Advice/Before.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Advice/Before.pm Tue Jan 19 15:22:24 2010
@@ -8,9 +8,10 @@
use Carp::Heavy ();
use Carp ();
use Aspect::Advice ();
+use Aspect::Advice::Hook ();
use Aspect::AdviceContext ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Advice';
sub _install {
@@ -18,6 +19,13 @@
my $pointcut = $self->pointcut;
my $code = $self->code;
my $lexical = $self->lexical;
+
+ # Special case.
+ # The method used by the Highest pointcut is incompatible
+ # with the goto optimisation used by the before() advice.
+ if ( $pointcut->match_contains('Aspect::Pointcut::Highest') ) {
+ Carp::croak("The highest pointcut is not currently supported by this advice");
+ }
# Get the curried version of the pointcut we will use for the
# runtime checks instead of the original.
@@ -57,21 +65,24 @@
# Generate the new function
no warnings 'redefine';
eval <<"END_PERL"; die $@ if $@;
+ package Aspect::Advice::Hook;
+
*$NAME = sub $PROTOTYPE {
# Is this a lexically scoped hook that has finished
goto &\$original if $MATCH_DISABLED;
# Apply any runtime-specific context checks
- my \$runtime = {};
+ my \$wantarray = wantarray;
+ my \$runtime = {
+ wantarray => \$wantarray,
+ };
goto &\$original unless $MATCH_RUN;
# Prepare the context object
- my \$wantarray = wantarray;
- my \$context = Aspect::AdviceContext->new(
+ my \$context = Aspect::AdviceContext->new(
type => 'before',
pointcut => \$pointcut,
sub_name => \$name,
- wantarray => \$wantarray,
params => \\\@_,
return_value => \$wantarray ? [ ] : undef,
original => \$original,
Modified: trunk/libaspect-perl/lib/Aspect/AdviceContext.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/AdviceContext.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/AdviceContext.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/AdviceContext.pm Tue Jan 19 15:22:24 2010
@@ -5,7 +5,7 @@
use Carp ();
use Sub::Uplevel ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
Modified: trunk/libaspect-perl/lib/Aspect/Library/Listenable.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Library/Listenable.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Library/Listenable.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Library/Listenable.pm Tue Jan 19 15:22:24 2010
@@ -12,7 +12,7 @@
use Aspect::Advice::Before ();
use Aspect::Library::Listenable::Event ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = qw{ Aspect::Modular };
sub import {
Modified: trunk/libaspect-perl/lib/Aspect/Library/Listenable/Event.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Library/Listenable/Event.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Library/Listenable/Event.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Library/Listenable/Event.pm Tue Jan 19 15:22:24 2010
@@ -3,7 +3,7 @@
use strict;
use warnings;
-our $VERSION = '0.37';
+our $VERSION = '0.40';
sub new {
my $class = shift;
Modified: trunk/libaspect-perl/lib/Aspect/Library/Singleton.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Library/Singleton.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Library/Singleton.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Library/Singleton.pm Tue Jan 19 15:22:24 2010
@@ -6,7 +6,7 @@
use Aspect::Advice::Before ();
use Aspect::Pointcut::Call ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Modular';
my %CACHE = ();
Modified: trunk/libaspect-perl/lib/Aspect/Library/Wormhole.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Library/Wormhole.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Library/Wormhole.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Library/Wormhole.pm Tue Jan 19 15:22:24 2010
@@ -8,7 +8,7 @@
use Aspect::Pointcut::Cflow ();
use Aspect::Pointcut::And ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Modular';
sub get_advice {
Modified: trunk/libaspect-perl/lib/Aspect/Modular.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Modular.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Modular.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Modular.pm Tue Jan 19 15:22:24 2010
@@ -3,7 +3,7 @@
use strict;
use warnings;
-our $VERSION = '0.37';
+our $VERSION = '0.40';
sub new {
my $class = shift;
Modified: trunk/libaspect-perl/lib/Aspect/Pointcut.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Pointcut.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Pointcut.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Pointcut.pm Tue Jan 19 15:22:24 2010
@@ -7,7 +7,7 @@
use Aspect::Pointcut::And ();
use Aspect::Pointcut::Not ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
use overload (
# Keep traditional Perl boolification and stringification
@@ -96,6 +96,12 @@
die("Method 'match_define' not implemented in class '$class'");
}
+sub match_contains {
+ my $self = shift;
+ return 1 if $self->isa($_[0]);
+ return '';
+}
+
sub curry_run {
my $class = ref $_[0] || $_[0];
die("Method 'curry' not implemented in class '$class'");
Modified: trunk/libaspect-perl/lib/Aspect/Pointcut/And.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Pointcut/And.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Pointcut/And.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Pointcut/And.pm Tue Jan 19 15:22:24 2010
@@ -4,7 +4,7 @@
use warnings;
use Aspect::Pointcut ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Pointcut';
@@ -22,23 +22,37 @@
return 1;
}
+sub match_contains {
+ my $self = shift;
+ return 1 if $self->isa($_[0]);
+ foreach my $child ( @$self ) {
+ return 1 if $child->match_contains($_[0]);
+ }
+ return '';
+}
+
sub curry_run {
my $self = shift;
+ my @list = @$self;
- # Reduce our children to the subset which themselves do not curry
- my @children = grep { $_->curry_run } @$self;
+ # Collapse nested And clauses
+ while ( scalar grep { $_->isa('Aspect::Pointcut::And') } @list ) {
+ @list = map {
+ $_->isa('Aspect::Pointcut::And') ? @$_ : $_
+ } @list;
+ }
+
+ # Curry down our children
+ @list = grep { defined $_ } map { $_->curry_run } @list;
# If none are left, curry us away to nothing
- return unless @children;
+ return unless @list;
# If only one remains, curry us away to just that child
- if ( @children == 1 ) {
- return $children[0];
- }
+ return $list[0] if @list == 1;
# Create our clone to hold the curried subset
- my $class = ref($self);
- return $class->new( @children );
+ return ref($self)->new( @list );
}
Modified: trunk/libaspect-perl/lib/Aspect/Pointcut/Call.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Pointcut/Call.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Pointcut/Call.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Pointcut/Call.pm Tue Jan 19 15:22:24 2010
@@ -6,7 +6,7 @@
use Params::Util ();
use Aspect::Pointcut ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Pointcut';
Modified: trunk/libaspect-perl/lib/Aspect/Pointcut/Cflow.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Pointcut/Cflow.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Pointcut/Cflow.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Pointcut/Cflow.pm Tue Jan 19 15:22:24 2010
@@ -8,7 +8,7 @@
use Aspect::Pointcut::Call ();
use Aspect::AdviceContext ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Pointcut';
use constant KEY => 0;
Modified: trunk/libaspect-perl/lib/Aspect/Pointcut/If.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Pointcut/If.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Pointcut/If.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Pointcut/If.pm Tue Jan 19 15:22:24 2010
@@ -4,7 +4,7 @@
use warnings;
use Aspect::Pointcut ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Pointcut';
Modified: trunk/libaspect-perl/lib/Aspect/Pointcut/Not.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Pointcut/Not.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Pointcut/Not.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Pointcut/Not.pm Tue Jan 19 15:22:24 2010
@@ -4,7 +4,7 @@
use warnings;
use Aspect::Pointcut ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Pointcut';
@@ -16,6 +16,13 @@
sub match_define {
return ! shift->[0]->match_define(@_);
+}
+
+sub match_contains {
+ my $self = shift;
+ return 1 if $self->isa($_[0]);
+ return 1 if $self->[0]->match_contains($_[0]);
+ return '';
}
# Logical not inherits it's curryability from the element contained
Modified: trunk/libaspect-perl/lib/Aspect/Pointcut/Or.pm
URL: http://svn.debian.org/wsvn/pkg-perl/trunk/libaspect-perl/lib/Aspect/Pointcut/Or.pm?rev=51256&op=diff
==============================================================================
--- trunk/libaspect-perl/lib/Aspect/Pointcut/Or.pm (original)
+++ trunk/libaspect-perl/lib/Aspect/Pointcut/Or.pm Tue Jan 19 15:22:24 2010
@@ -4,7 +4,7 @@
use warnings;
use Aspect::Pointcut ();
-our $VERSION = '0.37';
+our $VERSION = '0.40';
our @ISA = 'Aspect::Pointcut';
@@ -22,23 +22,37 @@
return;
}
+sub match_contains {
+ my $self = shift;
+ return 1 if $self->isa($_[0]);
+ foreach my $child ( @$self ) {
+ return 1 if $child->match_contains($_[0]);
+ }
+ return '';
+}
+
sub curry_run {
my $self = shift;
+ my @list = @$self;
- # Reduce our children to the subset which themselves do not curry
- my @children = grep { $_->curry_run } @$self;
+ # Collapse nested And clauses
+ while ( scalar grep { $_->isa('Aspect::Pointcut::Or') } @list ) {
+ @list = map {
+ $_->isa('Aspect::Pointcut::Or') ? @$_ : $_
+ } @list;
+ }
+
+ # Curry down our children
+ @list = grep { defined $_ } map { $_->curry_run } @list;
# If none are left, curry us away to nothing
- return unless @children;
+ return unless @list;
# If only one remains, curry us away to just that child
- if ( @children == 1 ) {
- return $children[0];
- }
+ return $list[0] if @list == 1;
# Create our clone to hold the curried subset
- my $class = ref($self);
- return $class->new( @children );
+ return ref($self)->new( @list );
}
More information about the Pkg-perl-cvs-commits
mailing list