X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=examples%2FClassEncapsulatedAttributes.pod;h=326f527b9d610b6c58aba0b5fde90d808835c04c;hb=56e8dd5d8cb94bc16d5f663e436aa41178b0dc7d;hp=49ef294a187635cc5f827140b10aec48ce7fba73;hpb=49c93440bd912ed231b8ab8e93a8e9ac7328fdc7;p=gitmo%2FClass-MOP.git diff --git a/examples/ClassEncapsulatedAttributes.pod b/examples/ClassEncapsulatedAttributes.pod index 49ef294..326f527 100644 --- a/examples/ClassEncapsulatedAttributes.pod +++ b/examples/ClassEncapsulatedAttributes.pod @@ -19,14 +19,15 @@ sub initialize { sub construct_instance { my ($class, %params) = @_; - my $instance = $class->get_meta_instance->create_instance(); + my $meta_instance = $class->get_meta_instance; + my $instance = $meta_instance->create_instance(); # initialize *ALL* attributes, including masked ones (as opposed to applicable) foreach my $current_class ($class->class_precedence_list()) { my $meta = $current_class->meta; foreach my $attr_name ($meta->get_attribute_list()) { my $attr = $meta->get_attribute($attr_name); - $attr->initialize_instance_slot($instance, \%params); + $attr->initialize_instance_slot($meta_instance, $instance, \%params); } } @@ -45,7 +46,7 @@ use base 'Class::MOP::Attribute'; # alter the way parameters are specified sub initialize_instance_slot { - my ($self, $instance, $params) = @_; + my ($self, $meta_instance, $instance, $params) = @_; # if the attr has an init_arg, use that, otherwise, # use the attributes name itself as the init_arg my $init_arg = $self->init_arg(); @@ -62,9 +63,7 @@ sub initialize_instance_slot { } # now add this to the instance structure - $self->associated_class - ->get_meta_instance - ->set_slot_value($instance, $self->name, $val); + $meta_instance->set_slot_value($instance, $self->name, $val); } sub name { @@ -134,10 +133,12 @@ is similar to how C++ handles its data members. Thanks to Yuval "nothingmuch" Kogman for the idea for this example. -=head1 AUTHOR +=head1 AUTHORS Stevan Little Estevan@iinteractive.comE +Yuval Kogman Enothingmuch@woobling.comE + =head1 COPYRIGHT AND LICENSE Copyright 2006 by Infinity Interactive, Inc.