]> git.vpit.fr Git - perl/modules/indirect.git/blobdiff - lib/indirect.pm
Introduce the I_THREADSAFE() constant
[perl/modules/indirect.git] / lib / indirect.pm
index 67ef542c347691776ba8b118cd514b19293c6908..4484dae086a7af00d0d8accc3ce0cbd9ac8418a7 100644 (file)
@@ -11,13 +11,13 @@ indirect - Lexically warn about using the indirect object syntax.
 
 =head1 VERSION
 
-Version 0.09_01
+Version 0.11
 
 =cut
 
 our $VERSION;
 BEGIN {
- $VERSION = '0.09_01';
+ $VERSION = '0.11';
 }
 
 =head1 SYNOPSIS
@@ -57,15 +57,28 @@ BEGIN {
 }
 
 sub import {
- $^H{indirect} = undef;
+ $^H{+(__PACKAGE__)} = undef;
+ ();
 }
 
+my $msg = sub { "Indirect call of method \"$_[1]\" on object \"$_[0]\"" };
+
 sub unimport {
  (undef, my $type) = @_;
  $^H |= 0x00020000;
- $^H{indirect} = (defined $type and $type eq ':fatal') ? 2 : 1;
+ my $cb = (defined $type and $type eq ':fatal')
+           ? sub { die  $msg->(@_) }
+           : sub { warn $msg->(@_) };
+ $^H{+(__PACKAGE__)} = _tag($cb);
+ ();
 }
 
+=head1 CONSTANTS
+
+=head2 C<I_THREADSAFE>
+
+True iff the module could have been built when thread-safety features.
+
 =head1 CAVEATS
 
 C<meth $obj> (no semicolon) at the end of a file won't be seen as an indirect object syntax, although it will as soon as there is another token before the end (as in C<meth $obj;> or C<meth $obj 1>).