package Aspect::Pointcut::BinOp;
use strict;
use warnings;
use Carp;
use base 'Aspect::Pointcut';
sub init {
my $self = shift;
$self->{left_op} = shift;
$self->{right_op} = shift;
}
sub match_define {
my ($self, $sub_name) = @_;
return $self->binop(
$self->{left_op}->match_define($sub_name),
$self->{right_op}->match_define($sub_name)
);
}
sub match_run {
my ($self, $sub_name, $runtime_context) = @_;
return $self->binop(
$self->{left_op }->match_run($sub_name, $runtime_context),
$self->{right_op}->match_run($sub_name, $runtime_context)
);
}
# template method to be defined in subclasses
sub binop { die "Must be implemented by subclass" }
1;