Lots of doc updates
Stevan Little [Wed, 21 Feb 2007 03:05:23 +0000 (03:05 +0000)]
23 files changed:
Changes
README
examples/ArrayBasedStorage.pod
examples/AttributesWithHistory.pod
examples/C3MethodDispatchOrder.pod
examples/ClassEncapsulatedAttributes.pod
examples/InsideOutClass.pod
examples/InstanceCountingClass.pod
examples/LazyClass.pod
examples/Perl6Attribute.pod
lib/Class/MOP.pm
lib/Class/MOP/Attribute.pm
lib/Class/MOP/Class.pm
lib/Class/MOP/Immutable.pm
lib/Class/MOP/Instance.pm
lib/Class/MOP/Method.pm
lib/Class/MOP/Method/Accessor.pm
lib/Class/MOP/Method/Constructor.pm
lib/Class/MOP/Method/Wrapped.pm
lib/Class/MOP/Module.pm
lib/Class/MOP/Object.pm
lib/Class/MOP/Package.pm
lib/metaclass.pm

diff --git a/Changes b/Changes
index 05ac1b0..10056fa 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
 Revision history for Perl extension Class-MOP.
 
 0.37
+    ~~ Many documentation updates ~~
+
     * Class::MOP::Attribute
       - default now checks the instance with defined to 
         avoid setting off bool-overloads (found by Carl Franks)
diff --git a/README b/README
index a0afd06..ad3f01d 100644 (file)
--- a/README
+++ b/README
@@ -23,7 +23,7 @@ This module requires these other modules and libraries:
 
 COPYRIGHT AND LICENCE
 
-Copyright (C) 2006 Infinity Interactive, Inc.
+Copyright (C) 2006, 2007 Infinity Interactive, Inc.
 
 http://www.iinteractive.com
 
index 1c23505..cd4dc1e 100644 (file)
@@ -104,7 +104,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 6365e79..5a91923 100644 (file)
@@ -126,7 +126,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 18ad9e3..5623137 100644 (file)
@@ -129,7 +129,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index c869dd5..c3c71eb 100644 (file)
@@ -141,7 +141,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index e106113..1018c0b 100644 (file)
@@ -185,7 +185,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index d0274e7..b3fbac5 100644 (file)
@@ -63,7 +63,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 7c9d00a..839b609 100644 (file)
@@ -153,7 +153,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index bb8047e..a5bc8fd 100644 (file)
@@ -73,7 +73,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index a4c9f04..9b341f7 100644 (file)
@@ -829,7 +829,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 2935d35..941f90a 100644 (file)
@@ -262,6 +262,11 @@ sub install_accessors {
     
     sub remove_accessors {
         my $self = shift;
+        # TODO:
+        # we really need to make sure to remove from the 
+        # associates methods here as well. But this is 
+        # such a slimly used method, I am not worried 
+        # about it right now.
         $_remove_accessor->($self->accessor(),  $self->associated_class()) if $self->has_accessor();
         $_remove_accessor->($self->reader(),    $self->associated_class()) if $self->has_reader();
         $_remove_accessor->($self->writer(),    $self->associated_class()) if $self->has_writer();
@@ -445,6 +450,12 @@ back to their "unfulfilled" state.
 
 =head2 Value management
 
+These methods are basically "backdoors" to the instance, which can be used 
+to bypass the regular accessors, but still stay within the context of the MOP. 
+
+These methods are not for general use, and should only be used if you really 
+know what you are doing.
+
 =over 4
 
 =item B<set_value ($instance, $value)>
@@ -459,8 +470,15 @@ even to attributes with just write only accessors.
 
 =item B<has_value ($instance)>
 
+Returns a boolean indicating if the item in the C<$instance> has a value in it. 
+This is basically what the default C<predicate> method calls.
+
 =item B<clear_value ($instance)>
 
+This will clear the value in the C<$instance>. This is basically what the default
+C<clearer> would call. Note that this may be done even if the attirbute does not 
+have any associated read, write or clear methods.
+
 =back
 
 =head2 Informational
@@ -523,14 +541,32 @@ These are all basic predicate methods for the values passed into C<new>.
 
 =head2 Class association
 
+These methods allow you to manage the attributes association with 
+the class that contains it. These methods should not be used 
+lightly, nor are they very magical, they are mostly used internally
+and by metaclass instances.
+
 =over 4
 
 =item B<associated_class>
 
+This returns the metaclass this attribute is associated with.
+
 =item B<attach_to_class ($class)>
 
+This will store a weaken reference to C<$class> internally. You should 
+note that just changing the class assocation will not remove the attribute
+from it's old class, and initialize it (and it's accessors) in the new
+C<$class>. It is up to you to do this manually.
+
 =item B<detach_from_class>
 
+This will remove the weakened reference to the class. It does B<not> 
+remove the attribute itself from the class (or remove it's accessors), 
+you must do that yourself if you want too. Actually if that is what 
+you want to do, you should probably be looking at 
+L<Class::MOP::Class::remove_attribute> instead.
+
 =back
 
 =head2 Attribute Accessor generation
@@ -539,10 +575,20 @@ These are all basic predicate methods for the values passed into C<new>.
 
 =item B<accessor_metaclass>
 
-=item B<associate_method>
+Accessors are generated by an accessor metaclass, which is usually
+a subclass of C<Class::MOP::Method::Accessor>. This method returns 
+the name of the accessor metaclass that this attribute uses.
+
+=item B<associate_method ($method)>
+
+This will associate a C<$method> with the given attribute which is 
+used internally by the accessor generator. 
 
 =item B<associated_methods>
 
+This will return the list of methods which have been associated with 
+the C<associate_method> methods. 
+
 =item B<install_accessors>
 
 This allows the attribute to generate and install code for it's own 
@@ -566,6 +612,9 @@ This allows the attribute to remove the method for it's own
 I<accessor/reader/writer/predicate/clearer>. This is called by 
 C<Class::MOP::Class::remove_attribute>.
 
+NOTE: This does not currently remove methods from the list returned 
+by C<associated_methods>, that is on the TODO list.
+
 =back
 
 =head2 Introspection
@@ -592,7 +641,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index f5e9f8d..bde5f52 100644 (file)
@@ -1313,7 +1313,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 1af082a..72a577a 100644 (file)
@@ -226,7 +226,7 @@ Stevan Little E<lt>stevan@iinteractive.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 89ea9c8..5af57b3 100644 (file)
@@ -328,7 +328,7 @@ Stevan Little E<lt>stevan@iinteractive.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 55b22fb..8064c22 100644 (file)
@@ -133,7 +133,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 1c03e31..7087047 100644 (file)
@@ -234,7 +234,7 @@ Stevan Little E<lt>stevan@iinteractive.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 7e389db..fcff479 100644 (file)
@@ -165,7 +165,7 @@ Stevan Little E<lt>stevan@iinteractive.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index ba1451b..68ad0a2 100644 (file)
@@ -183,7 +183,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 1611362..d992080 100644 (file)
@@ -81,7 +81,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index e20e299..49ae865 100644 (file)
@@ -93,7 +93,7 @@ Stevan Little E<lt>stevan@iinteractive.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index 912072b..15ccfd6 100644 (file)
@@ -276,7 +276,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>
 
index e1bd16a..56d8475 100644 (file)
@@ -88,7 +88,7 @@ Yuval Kogman E<lt>nothingmuch@woobling.comE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2006 by Infinity Interactive, Inc.
+Copyright 2006, 2007 by Infinity Interactive, Inc.
 
 L<http://www.iinteractive.com>