]> git.vpit.fr Git - perl/modules/Variable-Magic.git/blobdiff - lib/Variable/Magic.pm
Importing Variable-Magic-0.07_01.tar.gz
[perl/modules/Variable-Magic.git] / lib / Variable / Magic.pm
index ff6ec4ab8717dc892ea811cbcde288d40ea8b240..f60564917e14c139d3bfd9a8ae0d925d7b5c2b59 100644 (file)
@@ -13,11 +13,15 @@ Variable::Magic - Associate user-defined magic to variables from Perl.
 
 =head1 VERSION
 
-Version 0.06
+Version 0.07_01
 
 =cut
 
-our $VERSION = '0.06';
+use vars qw/$VERSION/;
+
+BEGIN {
+ $VERSION = '0.07_01';
+}
 
 =head1 SYNOPSIS
 
@@ -96,13 +100,27 @@ The maximum integer used as a signature for user-defined magic.
 
     SIG_NBR = SIG_MAX - SIG_MIN + 1
 
+=head2 C<MGf_COPY>
+
+True iff the 'copy' magic is available.
+
+=head2 C<MGf_DUP>
+
+True iff the 'dup' magic is available.
+
+=head2 C<MGf_LOCAL>
+
+True iff the 'local' magic is available.
+
 =head1 FUNCTIONS
 
 =cut
 
 use XSLoader;
 
-XSLoader::load __PACKAGE__, $VERSION;
+BEGIN {
+ XSLoader::load __PACKAGE__, $VERSION;
+}
 
 =head2 C<wizard>
 
@@ -136,7 +154,13 @@ Code references to corresponding magic callbacks. You don't have to specify all
 sub wizard {
  croak 'Wrong number of arguments for wizard()' if @_ % 2;
  my %opts = @_;
- return _wizard(map { $opts{$_} } qw/sig get set len clear free data/);
+ my $sig = $opts{sig};
+ my @types = qw/data get set len clear free/;
+ push @types, 'copy'  if MGf_COPY;
+ push @types, 'dup'   if MGf_DUP;
+ delete $opts{dup}; # don't use it for now
+ push @types, 'local' if MGf_LOCAL;
+ return _wizard($sig, map { $opts{$_} } @types);
 }
 
 =head2 C<gensig>
@@ -196,7 +220,7 @@ use base qw/Exporter/;
 our @EXPORT         = ();
 our %EXPORT_TAGS    = (
  'funcs' =>  [ qw/wizard gensig getsig cast getdata dispell/ ],
- 'consts' => [ qw/SIG_MIN SIG_MAX SIG_NBR/ ]
+ 'consts' => [ qw/SIG_MIN SIG_MAX SIG_NBR MGf_COPY MGf_DUP MGf_LOCAL/ ]
 );
 our @EXPORT_OK      = map { @$_ } values %EXPORT_TAGS;
 $EXPORT_TAGS{'all'} = \@EXPORT_OK;