[Patches] in-overloading: done right, with Guido's comments folded in

Moshe Zadka Moshe Zadka <mzadka@geocities.com>
Fri, 18 Feb 2000 22:36:00 +0200 (IST)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---559023410-1804928587-950906160=:6879
Content-Type: TEXT/PLAIN; charset=US-ASCII


I've re-written the in overloading patch to comply with Guido's comments.
The only comment I haven't taken care of is to remove the special casing
for strings. This could be done in a seperate patch, and I don't want to 
burden this patch with too much.

Please send me any comments!

Icky lawerism:
--
I confirm that, to the best of my knowledge and belief, this contribution is
free of any claims of third parties under copyright, patent or other rights
or interests ("claims").  To the extent that I have any such claims, I
hereby grant to CNRI a nonexclusive, irrevocable, royalty-free, worldwide
license to reproduce, distribute, perform and/or display publicly, prepare
derivative versions, and otherwise use this contribution as part of the
Python software and its related documentation, or any derivative versions
thereof, at no cost to CNRI or its licensed users, and to authorize others
to do so.

I acknowledge that CNRI may, at its sole discretion, decide whether or not
to incorporate this contribution in the Python software and its related
documentation.  I further grant CNRI permission to use my name and other
identifying information provided to CNRI by me for use in connection with
the Python software and its related documentation.
--

--
Moshe Zadka <mzadka@geocities.com>. 
INTERNET: Learn what you know.
Share what you don't.

---559023410-1804928587-950906160=:6879
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="in_diff.txt"
Content-ID: <Pine.GSO.4.10.10002182236000.6879@sundial>
Content-Description: 
Content-Disposition: attachment; filename="in_diff.txt"
Content-Transfer-Encoding: BASE64

ZGlmZiAtYyAtciBweXRob24vZGlzdC9zcmMvSW5jbHVkZS9vYmplY3QuaCBi
dWlsZC9kaXN0L3NyYy9JbmNsdWRlL29iamVjdC5oDQoqKiogcHl0aG9uL2Rp
c3Qvc3JjL0luY2x1ZGUvb2JqZWN0LmgJV2VkIEZlYiAgMiAxNjowMjo1MSAy
MDAwDQotLS0gYnVpbGQvZGlzdC9zcmMvSW5jbHVkZS9vYmplY3QuaAlGcmkg
RmViIDE4IDA5OjI2OjEyIDIwMDANCioqKioqKioqKioqKioqKg0KKioqIDE1
MCwxNTUgKioqKg0KLS0tIDE1MCwxNTYgLS0tLQ0KICB0eXBlZGVmIGludCAo
KmdldHdyaXRlYnVmZmVycHJvYykgUHlfUFJPVE8oKFB5T2JqZWN0ICosIGlu
dCwgdm9pZCAqKikpOw0KICB0eXBlZGVmIGludCAoKmdldHNlZ2NvdW50cHJv
YykgUHlfUFJPVE8oKFB5T2JqZWN0ICosIGludCAqKSk7DQogIHR5cGVkZWYg
aW50ICgqZ2V0Y2hhcmJ1ZmZlcnByb2MpIFB5X1BST1RPKChQeU9iamVjdCAq
LCBpbnQsIGNvbnN0IGNoYXIgKiopKTsNCisgdHlwZWRlZiBpbnQgKCpvYmpv
Ympwcm9jKSBQeV9QUk9UTygoUHlPYmplY3QgKiwgUHlPYmplY3QgKikpOw0K
ICANCiAgdHlwZWRlZiBzdHJ1Y3Qgew0KICAJYmluYXJ5ZnVuYyBuYl9hZGQ7
DQoqKioqKioqKioqKioqKioNCioqKiAxODUsMTkwICoqKioNCi0tLSAxODYs
MTkyIC0tLS0NCiAgCWludGludGFyZ2Z1bmMgc3Ffc2xpY2U7DQogIAlpbnRv
Ymphcmdwcm9jIHNxX2Fzc19pdGVtOw0KICAJaW50aW50b2JqYXJncHJvYyBz
cV9hc3Nfc2xpY2U7DQorICAgICAgICAgb2Jqb2JqcHJvYyBzcV9jb250YWlu
czsNCiAgfSBQeVNlcXVlbmNlTWV0aG9kczsNCiAgDQogIHR5cGVkZWYgc3Ry
dWN0IHsNCioqKioqKioqKioqKioqKg0KKioqIDMxNywzMjMgKioqKg0KICAv
KiBQeUJ1ZmZlclByb2NzIGNvbnRhaW5zIGJmX2dldGNoYXJidWZmZXIgKi8N
CiAgI2RlZmluZSBQeV9UUEZMQUdTX0hBVkVfR0VUQ0hBUkJVRkZFUiAgKDFM
PDwwKQ0KICANCiEgI2RlZmluZSBQeV9UUEZMQUdTX0RFRkFVTFQgIChQeV9U
UEZMQUdTX0hBVkVfR0VUQ0hBUkJVRkZFUikNCiAgDQogICNkZWZpbmUgUHlU
eXBlX0hhc0ZlYXR1cmUodCxmKSAgKCgodCktPnRwX2ZsYWdzICYgKGYpKSAh
PSAwKQ0KICANCi0tLSAzMTksMzI5IC0tLS0NCiAgLyogUHlCdWZmZXJQcm9j
cyBjb250YWlucyBiZl9nZXRjaGFyYnVmZmVyICovDQogICNkZWZpbmUgUHlf
VFBGTEFHU19IQVZFX0dFVENIQVJCVUZGRVIgICgxTDw8MCkNCiAgDQohIC8q
IFB5U2VxdWVuY2VNZXRob2RzIGNvbnRhaW5zIHNxX2NvbnRhaW5zICovDQoh
ICNkZWZpbmUgUHlfVFBGTEFHU19IQVZFX1NFUVVFTkNFX0lOICgxTDw8MSkN
CiEgDQohICNkZWZpbmUgUHlfVFBGTEFHU19ERUZBVUxUICAoUHlfVFBGTEFH
U19IQVZFX0dFVENIQVJCVUZGRVIgfCBcDQohICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUHlfVFBGTEFHU19IQVZFX1NFUVVFTkNFX0lOKQ0KICAN
CiAgI2RlZmluZSBQeVR5cGVfSGFzRmVhdHVyZSh0LGYpICAoKCh0KS0+dHBf
ZmxhZ3MgJiAoZikpICE9IDApDQogIA0KZGlmZiAtYyAtciBweXRob24vZGlz
dC9zcmMvT2JqZWN0cy9hYnN0cmFjdC5jIGJ1aWxkL2Rpc3Qvc3JjL09iamVj
dHMvYWJzdHJhY3QuYw0KKioqIHB5dGhvbi9kaXN0L3NyYy9PYmplY3RzL2Fi
c3RyYWN0LmMJRnJpIEZlYiAxOCAwOTowNjo0NSAyMDAwDQotLS0gYnVpbGQv
ZGlzdC9zcmMvT2JqZWN0cy9hYnN0cmFjdC5jCUZyaSBGZWIgMTggMDk6MzA6
NDQgMjAwMA0KKioqKioqKioqKioqKioqDQoqKiogMTEyMSwxMTI3ICoqKioN
CiAgCQl9DQogIAkJcmV0dXJuIDA7DQogIAl9DQohIA0KICAJc3EgPSB3LT5v
Yl90eXBlLT50cF9hc19zZXF1ZW5jZTsNCiAgCWlmIChzcSA9PSBOVUxMIHx8
IHNxLT5zcV9pdGVtID09IE5VTEwpIHsNCiAgCQlQeUVycl9TZXRTdHJpbmco
UHlFeGNfVHlwZUVycm9yLA0KLS0tIDExMjEsMTEzNSAtLS0tDQogIAkJfQ0K
ICAJCXJldHVybiAwOw0KICAJfQ0KISAJaWYoUHlUeXBlX0hhc0ZlYXR1cmUo
dy0+b2JfdHlwZSwgUHlfVFBGTEFHU19IQVZFX1NFUVVFTkNFX0lOKSkgew0K
ISAJCXNxID0gdy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7DQohIAkgICAg
ICAgIGlmKHNxICE9IE5VTEwpDQohIAkJCWlmKHNxLT5zcV9jb250YWlucyAh
PSBOVUxMKQ0KISAJCQkJcmV0dXJuICgqc3EtPnNxX2NvbnRhaW5zKSh3LCB2
KTsNCiEgCX0NCiEgCQ0KISAJLyogSWYgdGhlcmUgaXMgbm8gYmV0dGVyIHdh
eSB0byBjaGVjayB3aGV0aGVyIGFuIGl0ZW0gaXMgaXMgY29udGFpbmVkLA0K
ISAJICAgZG8gaXQgdGhlIGhhcmQgd2F5ICovDQogIAlzcSA9IHctPm9iX3R5
cGUtPnRwX2FzX3NlcXVlbmNlOw0KICAJaWYgKHNxID09IE5VTEwgfHwgc3Et
PnNxX2l0ZW0gPT0gTlVMTCkgew0KICAJCVB5RXJyX1NldFN0cmluZyhQeUV4
Y19UeXBlRXJyb3IsDQpkaWZmIC1jIC1yIHB5dGhvbi9kaXN0L3NyYy9PYmpl
Y3RzL2NsYXNzb2JqZWN0LmMgYnVpbGQvZGlzdC9zcmMvT2JqZWN0cy9jbGFz
c29iamVjdC5jDQoqKiogcHl0aG9uL2Rpc3Qvc3JjL09iamVjdHMvY2xhc3Nv
YmplY3QuYwlGcmkgRmViIDE4IDA5OjA2OjQ5IDIwMDANCi0tLSBidWlsZC9k
aXN0L3NyYy9PYmplY3RzL2NsYXNzb2JqZWN0LmMJRnJpIEZlYiAxOCAxMDow
NjozMCAyMDAwDQoqKioqKioqKioqKioqKioNCioqKiAxMDY1LDEwNzAgKioq
Kg0KLS0tIDEwNjUsMTA5OSAtLS0tDQogIAlyZXR1cm4gMDsNCiAgfQ0KICAN
Cisgc3RhdGljIGludCBpbnN0YW5jZV9jb250YWlucyhQeUluc3RhbmNlT2Jq
ZWN0ICppbnN0LCBQeU9iamVjdCAqbWVtYmVyKQ0KKyB7DQorIAlzdGF0aWMg
UHlPYmplY3QgKl9fY29udGFpbnNfXzsNCisgCVB5T2JqZWN0ICpmdW5jLCAq
YXJnLCAqcmVzOw0KKyAJaW50IHJldDsNCisgDQorIAlpZihfX2NvbnRhaW5z
X18gPT0gTlVMTCkgew0KKyAJCV9fY29udGFpbnNfXyA9IFB5U3RyaW5nX0lu
dGVybkZyb21TdHJpbmcoIl9fY29udGFpbnNfXyIpOw0KKyAJCWlmKF9fY29u
dGFpbnNfXyA9PSBOVUxMKQ0KKyAJCQlyZXR1cm4gLTE7DQorIAl9DQorIAlm
dW5jID0gaW5zdGFuY2VfZ2V0YXR0cihpbnN0LCBfX2NvbnRhaW5zX18pOw0K
KyAJaWYoZnVuYyA9PSBOVUxMKQ0KKyAJCXJldHVybiAtMTsNCisgCWFyZyA9
IFB5X0J1aWxkVmFsdWUoIihPKSIsIG1lbWJlcik7DQorIAlpZihhcmcgPT0g
TlVMTCkgew0KKyAJCVB5X0RFQ1JFRihmdW5jKTsNCisgCQlyZXR1cm4gLTE7
DQorIAl9DQorIAlyZXMgPSBQeUV2YWxfQ2FsbE9iamVjdChmdW5jLCBhcmcp
Ow0KKyAJUHlfREVDUkVGKGZ1bmMpOw0KKyAJUHlfREVDUkVGKGFyZyk7DQor
IAlpZihyZXMgPT0gTlVMTCkgDQorIAkJcmV0dXJuIC0xOw0KKyAJcmV0ID0g
UHlPYmplY3RfSXNUcnVlKHJlcyk7DQorIAlQeV9ERUNSRUYocmVzKTsNCisg
CXJldHVybiByZXQ7DQorIH0NCisgDQogIHN0YXRpYyBQeVNlcXVlbmNlTWV0
aG9kcyBpbnN0YW5jZV9hc19zZXF1ZW5jZSA9IHsNCiAgCShpbnF1aXJ5KWlu
c3RhbmNlX2xlbmd0aCwgLypzcV9sZW5ndGgqLw0KICAJMCwgLypzcV9jb25j
YXQqLw0KKioqKioqKioqKioqKioqDQoqKiogMTA3MywxMDc4ICoqKioNCi0t
LSAxMTAyLDExMDggLS0tLQ0KICAJKGludGludGFyZ2Z1bmMpaW5zdGFuY2Vf
c2xpY2UsIC8qc3Ffc2xpY2UqLw0KICAJKGludG9iamFyZ3Byb2MpaW5zdGFu
Y2VfYXNzX2l0ZW0sIC8qc3FfYXNzX2l0ZW0qLw0KICAJKGludGludG9iamFy
Z3Byb2MpaW5zdGFuY2VfYXNzX3NsaWNlLCAvKnNxX2Fzc19zbGljZSovDQor
IAkob2Jqb2JqcHJvYylpbnN0YW5jZV9jb250YWlucywgLyogc3FfY29udGFp
bnMgKi8NCiAgfTsNCiAgDQogIHN0YXRpYyBQeU9iamVjdCAqDQoqKioqKioq
KioqKioqKioNCioqKiAxNDA1LDE0MTAgKioqKg0KLS0tIDE0MzUsMTQ0MiAt
LS0tDQogIAkwLAkJCS8qdHBfc3RyKi8NCiAgCShnZXRhdHRyb2Z1bmMpaW5z
dGFuY2VfZ2V0YXR0ciwgLyp0cF9nZXRhdHRybyovDQogIAkoc2V0YXR0cm9m
dW5jKWluc3RhbmNlX3NldGF0dHIsIC8qdHBfc2V0YXR0cm8qLw0KKyAgICAg
ICAgIDAsIC8qIHRwX2FzX2J1ZmZlciAqLw0KKyAJUHlfVFBGTEFHU19IQVZF
X1NFUVVFTkNFX0lOLCAvKnRwX2ZsYWdzICovDQogIH07DQogIA0KICANCg==
---559023410-1804928587-950906160=:6879--