X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2Foverload.pm;h=690be22175115742c8142118419525fbbc1d77e7;hb=a07cd53d52eddd3373b7f4babb55144d44a1613d;hp=8a07efec6974a1d237abc7f820d3cc3b7d1b5758;hpb=0d863452f5cac86322a90184dc68dbf446006ed7;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/overload.pm b/lib/overload.pm index 8a07efe..690be22 100644 --- a/lib/overload.pm +++ b/lib/overload.pm @@ -1,8 +1,6 @@ package overload; -our $VERSION = '1.03'; - -$overload::hint_bits = 0x20000; # HINT_LOCALIZE_HH +our $VERSION = '1.04'; sub nil {} @@ -149,7 +147,7 @@ sub constant { } else { $^H{$_[0]} = $_[1]; - $^H |= $constants{$_[0]} | $overload::hint_bits; + $^H |= $constants{$_[0]}; } shift, shift; } @@ -517,11 +515,6 @@ The key C<"fallback"> governs what to do if a method for a particular operation is not found. Three different cases are possible depending on the value of C<"fallback">: -=head2 Smart Match - -The key C<"~~"> allows you to override the smart matching used by -the switch construct. See L. - =over 16 =item * C @@ -547,6 +540,11 @@ C<"nomethod"> value, and if this is missing, raises an exception. B C<"fallback"> inheritance via @ISA is not carved in stone yet, see L<"Inheritance and overloading">. +=head2 Smart Match + +The key C<"~~"> allows you to override the smart matching used by +the switch construct. See L. + =head2 Copy Constructor The value for C<"="> is a reference to a function with three @@ -668,6 +666,23 @@ value is a scalar and not a reference. =back +=head1 Minimal set of overloaded operations + +Since some operations can be automatically generated from others, there is +a minimal set of operations that need to be overloaded in order to have +the complete set of overloaded operations at one's disposal. +Of course, the autogenerated operations may not do exactly what the user +expects. See L above. The minimal set is: + + + - * / % ** << >> x + <=> cmp + & | ^ ~ + atan2 cos sin exp log sqrt int + +Additionally, you need to define at least one of string, boolean or +numeric conversions because any one can be used to emulate the others. +The string conversion can also be used to emulate concatenation. + =head1 Losing overloading The restriction for the comparison operation is that even if, for example, @@ -783,9 +798,6 @@ From these methods they may be called as overload::constant integer => sub {Math::BigInt->new(shift)}; } -B Currently overloaded-ness of constants does not propagate -into C. - =head1 IMPLEMENTATION What follows is subject to change RSN. @@ -1091,7 +1103,7 @@ The value of $side is Note that while we obtained this value using a nice little script, there is no simple way to I this value. In fact this value may -be inspected in debugger (see L), but ony if +be inspected in debugger (see L), but only if C Bption is set, and not via C

command. If one attempts to print this value, then the overloaded operator