]> git.vpit.fr Git - perl/modules/Variable-Magic.git/blobdiff - lib/Variable/Magic.pm
This is 0.19
[perl/modules/Variable-Magic.git] / lib / Variable / Magic.pm
index 8025a408d4e1ed6ed3cb3c01ef27dfd196c17cb3..6258fd73820f3ce875b25a03d09f038d0ee7c584 100644 (file)
@@ -13,13 +13,13 @@ Variable::Magic - Associate user-defined magic to variables from Perl.
 
 =head1 VERSION
 
-Version 0.10
+Version 0.19
 
 =cut
 
 our $VERSION;
 BEGIN {
- $VERSION = '0.10';
+ $VERSION = '0.19';
 }
 
 =head1 SYNOPSIS
@@ -117,7 +117,7 @@ The places where magic is invoked have changed a bit through perl history. Here'
 
 =over 4
 
-=item 'len' magic is no longer called when pushing an element into a magic array.
+=item I<p25854> : 'len' magic is no longer called when pushing an element into a magic array.
 
 =item I<p26569> : 'local' magic.
 
@@ -133,6 +133,22 @@ The places where magic is invoked have changed a bit through perl history. Here'
 
 =back
 
+=head2 B<5.10.0>
+
+=over 4
+
+=item Since C<PERL_MAGIC_uvar> is uppercased, C<hv_magic_check()> triggers 'copy' magic on hash stores for (non-tied) hashes that also have 'uvar' magic.
+
+=back
+
+=head2 B<5.11.x>
+
+=over 4
+
+=item I<p32969> : 'len' magic is no longer invoked when calling C<length> with a magical scalar.
+
+=back
+
 =head1 CONSTANTS
 
 =head2 C<SIG_MIN>
@@ -171,9 +187,13 @@ True for perls that don't call 'len' magic when you push an element in a magical
 
 True for perls that call 'clear' magic when undefining magical arrays.
 
-=head2 C<VMG_COMPAT_HASH_LISTASSIGN_COPY>
+=head2 C<VMG_COMPAT_SCALAR_LENGTH_NOLEN>
 
-True for perls that call 'copy' magic on list assignments. Implies that C<MGf_COPY> is true.
+True for perls that don't call 'len' magic when taking the C<length> of a magical scalar.
+
+=head2 C<VMG_PERL_PATCHLEVEL>
+
+The perl patchlevel this module was built with, or C<0> for non-debugging perls.
 
 =head1 FUNCTIONS
 
@@ -193,7 +213,7 @@ BEGIN {
            len    => sub { my ($ref, $data, $len) = @_; ... ; return $newlen; },
            clear  => sub { my ($ref, $data) = @_; ... },
            free   => sub { my ($ref, $data) = @_, ... },
-           copy   => sub { my ($ref, $data, $elt) = @_; ... },
+           copy   => sub { my ($ref, $data, $key, $elt) = @_; ... },
            local  => sub { my ($ref, $data) = @_; ... },
            fetch  => sub { my ($ref, $data, $key) = @_; ... },
            store  => sub { my ($ref, $data, $key) = @_; ... },
@@ -214,7 +234,7 @@ A code reference to a private data constructor. It is called each time this magi
 
 =item C<get>, C<set>, C<len>, C<clear>, C<free>, C<copy>, C<local>, C<fetch>, C<store>, C<exists> and C<delete>
 
-Code references to corresponding magic callbacks. You don't have to specify all of them : the magic associated with undefined entries simply won't be hooked. In those callbacks, C<$_[0]> is always a reference to the magic object and C<$_[1]> is always the private data (or C<undef> when no private data constructor was supplied). In the special case of C<len> magic and when the variable is an array, C<$_[2]> contains its normal length. C<copy> magic receives the current element (i.e. the value) in C<$_[2]>. C<$_[2]> is also the current key in C<fetch>, C<store>, C<exists> and C<delete> callbacks.
+Code references to corresponding magic callbacks. You don't have to specify all of them : the magic associated with undefined entries simply won't be hooked. In those callbacks, C<$_[0]> is always a reference to the magic object and C<$_[1]> is always the private data (or C<undef> when no private data constructor was supplied). In the special case of C<len> magic and when the variable is an array, C<$_[2]> contains its normal length. C<$_[2]> is the current key in C<copy>, C<fetch>, C<store>, C<exists> and C<delete> callbacks, although for C<copy> it may just be a copy of the actual key so it's useless to (for example) cast magic on it. C<copy> magic also receives the current element (i.e. the value) in C<$_[3]>.
 
 =back
 
@@ -294,7 +314,9 @@ our @EXPORT         = ();
 our %EXPORT_TAGS    = (
  'funcs' =>  [ qw/wizard gensig getsig cast getdata dispell/ ],
  'consts' => [ qw/SIG_MIN SIG_MAX SIG_NBR MGf_COPY MGf_DUP MGf_LOCAL VMG_UVAR/,
-               qw/VMG_COMPAT_ARRAY_PUSH_NOLEN VMG_COMPAT_ARRAY_UNDEF_CLEAR VMG_COMPAT_HASH_LISTASSIGN_COPY/ ]
+               qw/VMG_COMPAT_ARRAY_PUSH_NOLEN VMG_COMPAT_ARRAY_UNDEF_CLEAR/,
+               qw/VMG_COMPAT_SCALAR_LENGTH_NOLEN/,
+               qw/VMG_PERL_PATCHLEVEL/ ]
 );
 our @EXPORT_OK      = map { @$_ } values %EXPORT_TAGS;
 $EXPORT_TAGS{'all'} = [ @EXPORT_OK ];
@@ -325,17 +347,13 @@ L<perltie> and L<overload> for other ways of enhancing objects.
 
 =head1 AUTHOR
 
-Vincent Pit, C<< <perl at profvince.com> >>
+Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
 
-You can contact me by mail or on #perl @ FreeNode (Prof_Vince).
+You can contact me by mail or on #perl @ FreeNode (vincent or Prof_Vince).
 
 =head1 BUGS
 
-Please report any bugs or feature requests to
-C<bug-variable-magic at rt.cpan.org>, or through the web interface at
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Variable-Magic>.
-I will be notified, and then you'll automatically be notified of progress on
-your bug as I make changes.
+Please report any bugs or feature requests to C<bug-variable-magic at rt.cpan.org>, or through the web interface at L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Variable-Magic>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
 
 =head1 SUPPORT
 
@@ -343,6 +361,8 @@ You can find documentation for this module with the perldoc command.
 
     perldoc Variable::Magic
 
+Tests code coverage report is available at L<http://www.profvince.com/perl/cover/Variable-Magic>.
+
 =head1 COPYRIGHT & LICENSE
 
 Copyright 2007-2008 Vincent Pit, all rights reserved.