X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Fattributes.pm;h=22afaef3f434f161f2c5934e91430b8b93ff6896;hb=023a2b404cea6fcd66ed3d6fd7f27663e85c4093;hp=2dacd02751ec77bea6399d96197ff67a25554f48;hpb=1d2de774c9ccd6c17b728bf1c237fd74eb05416d;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/attributes.pm b/lib/attributes.pm index 2dacd02..22afaef 100644 --- a/lib/attributes.pm +++ b/lib/attributes.pm @@ -1,6 +1,6 @@ package attributes; -our $VERSION = 0.05; +our $VERSION = 0.08; @EXPORT_OK = qw(get reftype); @EXPORT = (); @@ -23,7 +23,6 @@ sub carp { #sub _fetch_attrs ($) ; #sub _guess_stash ($) ; #sub _modify_attrs ; -#sub _warn_reserved () ; # # The extra trips through newATTRSUB in the interpreter wipe out any savings # from avoiding the BEGIN block. Just do the bootstrap now. @@ -43,9 +42,10 @@ sub import { my @badattrs; if ($pkgmeth) { my @pkgattrs = _modify_attrs($svref, @attrs); - @badattrs = $pkgmeth->($home_stash, $svref, @attrs); + @badattrs = $pkgmeth->($home_stash, $svref, @pkgattrs); if (!@badattrs && @pkgattrs) { - return unless _warn_reserved; + require warnings; + return unless warnings::enabled('reserved'); @pkgattrs = grep { m/\A[[:lower:]]+(?:\z|\()/ } @pkgattrs; if (@pkgattrs) { for my $attr (@pkgattrs) { @@ -165,6 +165,10 @@ The following are the built-in attributes for subroutines: =item locked +B<5.005 threads only! The use of the "locked" attribute currently +only makes sense if you are using the deprecated "Perl 5.005 threads" +implementation of threads.> + Setting this attribute is only meaningful when the subroutine or method is to be called by multiple threads. When set on a method subroutine (i.e., one marked with the B attribute below), @@ -251,17 +255,17 @@ The class methods invoked for modifying and fetching are these: =item FETCH_I_ATTRIBUTES -This method receives a single argument, which is a reference to the -variable or subroutine for which package-defined attributes are desired. -The expected return value is a list of associated attributes. -This list may be empty. +This method is called with two arguments: the relevant package name, +and a reference to a variable or subroutine for which package-defined +attributes are desired. The expected return value is a list of +associated attributes. This list may be empty. =item MODIFY_I_ATTRIBUTES This method is called with two fixed arguments, followed by the list of attributes from the relevant declaration. The two fixed arguments are the relevant package name and a reference to the declared subroutine or -variable. The expected return value as a list of attributes which were +variable. The expected return value is a list of attributes which were not recognized by this handler. Note that this allows for a derived class to delegate a call to its base class, and then only examine the attributes which the base class didn't already handle for it.