X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=lib%2FVariable%2FMagic.pm;h=190102d5669a85782b90ea12ba9cdbb001c6cce8;hb=aec8d8c69d06247ad948ef908268a57c27560920;hp=8025a408d4e1ed6ed3cb3c01ef27dfd196c17cb3;hpb=fee1a480bc5d827590dc7394e0a77741bad86dc3;p=perl%2Fmodules%2FVariable-Magic.git diff --git a/lib/Variable/Magic.pm b/lib/Variable/Magic.pm index 8025a40..190102d 100644 --- a/lib/Variable/Magic.pm +++ b/lib/Variable/Magic.pm @@ -13,13 +13,13 @@ Variable::Magic - Associate user-defined magic to variables from Perl. =head1 VERSION -Version 0.10 +Version 0.18 =cut our $VERSION; BEGIN { - $VERSION = '0.10'; + $VERSION = '0.18'; } =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 : 'len' magic is no longer called when pushing an element into a magic array. =item I : '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 is uppercased, C 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 : 'len' magic is no longer invoked when calling C with a magical scalar. + +=back + =head1 CONSTANTS =head2 C @@ -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 +=head2 C -True for perls that call 'copy' magic on list assignments. Implies that C is true. +True for perls that don't call 'len' magic when taking the C of a magical scalar. + +=head2 C + +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, C, C, C, C, C, C, C, C, C and C -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 when no private data constructor was supplied). In the special case of C magic and when the variable is an array, C<$_[2]> contains its normal length. C magic receives the current element (i.e. the value) in C<$_[2]>. C<$_[2]> is also the current key in C, C, C and C 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 when no private data constructor was supplied). In the special case of C magic and when the variable is an array, C<$_[2]> contains its normal length. C<$_[2]> is the current key in C, C, C, C and C callbacks, although for C it may just be a copy of the actual key so it's useless to (for example) cast magic on it. C 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 and L for other ways of enhancing objects. =head1 AUTHOR -Vincent Pit, C<< >> +Vincent Pit, C<< >>, L. -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, or through the web interface at -L. -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, or through the web interface at L. 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. + =head1 COPYRIGHT & LICENSE Copyright 2007-2008 Vincent Pit, all rights reserved.