summaryrefslogtreecommitdiff
path: root/benchmarks/cmop/lib/MOP/Immutable
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/cmop/lib/MOP/Immutable')
-rw-r--r--benchmarks/cmop/lib/MOP/Immutable/Point.pm21
-rw-r--r--benchmarks/cmop/lib/MOP/Immutable/Point3D.pm22
2 files changed, 43 insertions, 0 deletions
diff --git a/benchmarks/cmop/lib/MOP/Immutable/Point.pm b/benchmarks/cmop/lib/MOP/Immutable/Point.pm
new file mode 100644
index 0000000..a0d7c90
--- /dev/null
+++ b/benchmarks/cmop/lib/MOP/Immutable/Point.pm
@@ -0,0 +1,21 @@
+
+package MOP::Immutable::Point;
+
+use strict;
+use warnings;
+use metaclass;
+
+__PACKAGE__->meta->add_attribute('x' => (accessor => 'x', default => 10));
+__PACKAGE__->meta->add_attribute('y' => (accessor => 'y'));
+
+sub clear {
+ my $self = shift;
+ $self->x(0);
+ $self->y(0);
+}
+
+__PACKAGE__->meta->make_immutable;
+
+1;
+
+__END__
diff --git a/benchmarks/cmop/lib/MOP/Immutable/Point3D.pm b/benchmarks/cmop/lib/MOP/Immutable/Point3D.pm
new file mode 100644
index 0000000..bf33cf0
--- /dev/null
+++ b/benchmarks/cmop/lib/MOP/Immutable/Point3D.pm
@@ -0,0 +1,22 @@
+
+package MOP::Immutable::Point3D;
+
+use strict;
+use warnings;
+use metaclass;
+
+use base 'MOP::Point';
+
+__PACKAGE__->meta->add_attribute('z' => (accessor => 'z'));
+
+sub clear {
+ my $self = shift;
+ $self->SUPER::clear();
+ $self->z(0);
+}
+
+__PACKAGE__->meta->make_immutable;
+
+1;
+
+__END__