diff options
author | Father Chrysostomos <sprout@cpan.org> | 2015-01-03 17:55:53 -0800 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2015-01-31 22:03:50 -0800 |
commit | 7dd648412d5aa4efd8fb68cc6d58d99d867af2a2 (patch) | |
tree | 83216b9f26a37457d1d88f6d3d39a9372bea1266 | |
parent | 26b17dd21e4aedef224e009510eebb11d2256d3a (diff) | |
download | perl-7dd648412d5aa4efd8fb68cc6d58d99d867af2a2.tar.gz |
Add overload types for string-specifc bitops
-rw-r--r-- | lib/overload/numbers.pm | 14 | ||||
-rw-r--r-- | overload.c | 14 | ||||
-rw-r--r-- | overload.h | 47 | ||||
-rw-r--r-- | regen/overload.pl | 7 |
4 files changed, 62 insertions, 20 deletions
diff --git a/lib/overload/numbers.pm b/lib/overload/numbers.pm index a90c175db9..ccea9e17bc 100644 --- a/lib/overload/numbers.pm +++ b/lib/overload/numbers.pm @@ -62,13 +62,20 @@ our @names = qw# (>>= (& (&= + (&. + (&.= (| (|= + (|. + (|.= (^ (^= + (^. + (^.= (<=> (cmp (~ + (~. (atan2 (cos (sin @@ -133,13 +140,20 @@ our @enums = qw# rshift_ass band band_ass + sband + sband_ass bor bor_ass + sbor + sbor_ass bxor bxor_ass + sbxor + sbxor_ass ncmp scmp compl + scompl atan2 cos sin diff --git a/overload.c b/overload.c index cd28df4c93..3cf64c7e40 100644 --- a/overload.c +++ b/overload.c @@ -65,13 +65,20 @@ static const U8 PL_AMG_namelens[NofAMmeth] = { 4, 2, 3, + 3, + 4, 2, 3, + 3, + 4, 2, 3, + 3, + 4, 4, 4, 2, + 3, 6, 4, 4, @@ -141,13 +148,20 @@ static const char * const PL_AMG_names[NofAMmeth] = { "(>>=", /* rshift_ass */ "(&", /* band */ "(&=", /* band_ass */ + "(&.", /* sband */ + "(&.=", /* sband_ass */ "(|", /* bor */ "(|=", /* bor_ass */ + "(|.", /* sbor */ + "(|.=", /* sbor_ass */ "(^", /* bxor */ "(^=", /* bxor_ass */ + "(^.", /* sbxor */ + "(^.=", /* sbxor_ass */ "(<=>", /* ncmp */ "(cmp", /* scmp */ "(~", /* compl */ + "(~.", /* scompl */ "(atan2", /* atan2 */ "(cos", /* cos */ "(sin", /* sin */ diff --git a/overload.h b/overload.h index 1628ac0025..50e7660ad7 100644 --- a/overload.h +++ b/overload.h @@ -62,26 +62,33 @@ enum { rshift_ass_amg, /* 0x2d >>= */ band_amg, /* 0x2e & */ band_ass_amg, /* 0x2f &= */ - bor_amg, /* 0x30 | */ - bor_ass_amg, /* 0x31 |= */ - bxor_amg, /* 0x32 ^ */ - bxor_ass_amg, /* 0x33 ^= */ - ncmp_amg, /* 0x34 <=> */ - scmp_amg, /* 0x35 cmp */ - compl_amg, /* 0x36 ~ */ - atan2_amg, /* 0x37 atan2 */ - cos_amg, /* 0x38 cos */ - sin_amg, /* 0x39 sin */ - exp_amg, /* 0x3a exp */ - log_amg, /* 0x3b log */ - sqrt_amg, /* 0x3c sqrt */ - repeat_amg, /* 0x3d x */ - repeat_ass_amg, /* 0x3e x= */ - concat_amg, /* 0x3f . */ - concat_ass_amg, /* 0x40 .= */ - smart_amg, /* 0x41 ~~ */ - ftest_amg, /* 0x42 -X */ - regexp_amg, /* 0x43 qr */ + sband_amg, /* 0x30 &. */ + sband_ass_amg, /* 0x31 &.= */ + bor_amg, /* 0x32 | */ + bor_ass_amg, /* 0x33 |= */ + sbor_amg, /* 0x34 |. */ + sbor_ass_amg, /* 0x35 |.= */ + bxor_amg, /* 0x36 ^ */ + bxor_ass_amg, /* 0x37 ^= */ + sbxor_amg, /* 0x38 ^. */ + sbxor_ass_amg, /* 0x39 ^.= */ + ncmp_amg, /* 0x3a <=> */ + scmp_amg, /* 0x3b cmp */ + compl_amg, /* 0x3c ~ */ + scompl_amg, /* 0x3d ~. */ + atan2_amg, /* 0x3e atan2 */ + cos_amg, /* 0x3f cos */ + sin_amg, /* 0x40 sin */ + exp_amg, /* 0x41 exp */ + log_amg, /* 0x42 log */ + sqrt_amg, /* 0x43 sqrt */ + repeat_amg, /* 0x44 x */ + repeat_ass_amg, /* 0x45 x= */ + concat_amg, /* 0x46 . */ + concat_ass_amg, /* 0x47 .= */ + smart_amg, /* 0x48 ~~ */ + ftest_amg, /* 0x49 -X */ + regexp_amg, /* 0x4a qr */ max_amg_code /* Do not leave a trailing comma here. C9X allows it, C89 doesn't. */ }; diff --git a/regen/overload.pl b/regen/overload.pl index 6d9e04d944..165e1c1eda 100644 --- a/regen/overload.pl +++ b/regen/overload.pl @@ -178,13 +178,20 @@ rshift (>> rshift_ass (>>= band (& band_ass (&= +sband (&. +sband_ass (&.= bor (| bor_ass (|= +sbor (|. +sbor_ass (|.= bxor (^ bxor_ass (^= +sbxor (^. +sbxor_ass (^.= ncmp (<=> scmp (cmp compl (~ +scompl (~. atan2 (atan2 cos (cos sin (sin |