sub generate_method {
my ($self, $into, $name, $spec, $quote_opts) = @_;
+ $name =~ s/^\+//;
die "Must have an is" unless my $is = $spec->{is};
if ($is eq 'ro') {
$spec->{reader} = $name unless exists $spec->{reader};
if (($spec->{trigger}||0) eq 1) {
$spec->{trigger} = quote_sub('shift->_trigger_'.$name.'(@_)');
}
+ if (exists $spec->{default}) {
+ my $default = $spec->{default};
+ unless (ref $default) {
+ die "Invalid default $default";
+ }
+ if (ref $default ne 'CODE') {
+ unless (eval { \&$default }) {
+ die "Invalid default $default";
+ }
+ }
+ }
+
my %methods;
if (my $reader = $spec->{reader}) {
if (our $CAN_HAZ_XS && $self->is_simple_get($name, $spec)) {
}
}
-sub generate_multi_set {
- my ($self, $me, $to_set, $from) = @_;
- "\@{${me}}{qw(${\join ' ', @$to_set})} = $from";
-}
-
sub _generate_core_set {
my ($self, $me, $name, $spec, $value) = @_;
my $name_str = perlstring $name;
my ($self, $type, $into, $name, $slot) = @_;
Class::XSAccessor->import(
class => $into,
- $type => { $name => $slot }
+ $type => { $name => $slot },
+ replace => 1,
);
$into->can($name);
}