[Mono-list] [patch] System.BitConverter impl

Matt Kimball matt@kimball.net
Tue, 08 Jan 2002 08:18:40 -0800 (PST)


This is a multi-part message in MIME format...

------------=_1010506720-16342-0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: binary

Hey, here's an initial implementation for System.BitConverter, as requested on
the "classes not yet implemented" page.

It's complete, but assumes a little endian architecture for now.

Do I get a CVS account yet?  ;)

-- 
Matt Kimball
matt@kimball.net



------------=_1010506720-16342-0
Content-Type: application/octet-stream; name="BitConverter.cs"
Content-Disposition: attachment; filename="BitConverter.cs"
Content-Transfer-Encoding: base64

Ly8NCi8vIFN5c3RlbS5CaXRDb252ZXJ0ZXINCi8vDQovLyBBdXRob3I6DQov
LyAgIE1hdHQgS2ltYmFsbCAobWF0dEBraW1iYWxsLm5ldCkNCi8vDQoNCm5h
bWVzcGFjZSBTeXN0ZW0gew0KCVtDTFNDb21wbGlhbnQoZmFsc2UpXQ0KCXVu
c2FmZSBwdWJsaWMgY2xhc3MgQml0Q29udmVydGVyIHsNCgkJW01vbm9UT0RP
XQkvLyAgTm90IGFsbCB0aGUgd29ybGQncyBhbiB4ODYNCgkJcHVibGljIHN0
YXRpYyByZWFkb25seSBib29sIElzTGl0dGxlRW5kaWFuID0gdHJ1ZTsNCg0K
CQlwdWJsaWMgc3RhdGljIGxvbmcgRG91YmxlVG9JbnQ2NEJpdHMoZG91Ymxl
IHZhbHVlKSB7DQoJCQlyZXR1cm4gVG9JbnQ2NChHZXRCeXRlcyh2YWx1ZSks
IDApOw0KCQl9DQoNCgkJcHVibGljIHN0YXRpYyBkb3VibGUgSW50NjRCaXRz
VG9Eb3VibGUobG9uZyB2YWx1ZSkgew0KCQkJcmV0dXJuIFRvRG91YmxlKEdl
dEJ5dGVzKHZhbHVlKSwgMCk7DQoJCX0NCg0KCQlzdGF0aWMgYnl0ZVtdIEdl
dEJ5dGVzKGJ5dGUgKnB0ciwgaW50IGNvdW50KSB7DQoJCQlieXRlW10gcmV0
ID0gbmV3IGJ5dGVbY291bnRdOw0KDQoJCQlmb3IgKGludCBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsNCgkJCQlyZXRbaV0gPSBwdHJbaV07DQoJCQl9DQoN
CgkJCXJldHVybiByZXQ7DQoJCX0NCg0KCQlwdWJsaWMgc3RhdGljIGJ5dGVb
XSBHZXRCeXRlcyhib29sIHZhbHVlKSB7DQoJCQlyZXR1cm4gR2V0Qnl0ZXMo
KGJ5dGUgKikmdmFsdWUsIDEpOw0KCQl9DQoNCgkJcHVibGljIHN0YXRpYyBi
eXRlW10gR2V0Qnl0ZXMoY2hhciB2YWx1ZSkgew0KCQkJcmV0dXJuIEdldEJ5
dGVzKChieXRlICopJnZhbHVlLCAyKTsNCgkJfQ0KDQoJCXB1YmxpYyBzdGF0
aWMgYnl0ZVtdIEdldEJ5dGVzKHNob3J0IHZhbHVlKSB7DQoJCQlyZXR1cm4g
R2V0Qnl0ZXMoKGJ5dGUgKikmdmFsdWUsIDIpOw0KCQl9DQoNCgkJcHVibGlj
IHN0YXRpYyBieXRlW10gR2V0Qnl0ZXMoaW50IHZhbHVlKSB7DQoJCQlyZXR1
cm4gR2V0Qnl0ZXMoKGJ5dGUgKikmdmFsdWUsIDQpOw0KCQl9DQoNCgkJcHVi
bGljIHN0YXRpYyBieXRlW10gR2V0Qnl0ZXMobG9uZyB2YWx1ZSkgew0KCQkJ
cmV0dXJuIEdldEJ5dGVzKChieXRlICopJnZhbHVlLCA4KTsNCgkJfQ0KDQoJ
CXB1YmxpYyBzdGF0aWMgYnl0ZVtdIEdldEJ5dGVzKHVzaG9ydCB2YWx1ZSkg
ew0KCQkJcmV0dXJuIEdldEJ5dGVzKChieXRlICopJnZhbHVlLCAyKTsNCgkJ
fQ0KDQoJCXB1YmxpYyBzdGF0aWMgYnl0ZVtdIEdldEJ5dGVzKHVpbnQgdmFs
dWUpIHsNCgkJCXJldHVybiBHZXRCeXRlcygoYnl0ZSAqKSZ2YWx1ZSwgNCk7
DQoJCX0NCg0KCQlwdWJsaWMgc3RhdGljIGJ5dGVbXSBHZXRCeXRlcyh1bG9u
ZyB2YWx1ZSkgew0KCQkJcmV0dXJuIEdldEJ5dGVzKChieXRlICopJnZhbHVl
LCA4KTsNCgkJfQ0KDQoJCXB1YmxpYyBzdGF0aWMgYnl0ZVtdIEdldEJ5dGVz
KGZsb2F0IHZhbHVlKSB7DQoJCQlyZXR1cm4gR2V0Qnl0ZXMoKGJ5dGUgKikm
dmFsdWUsIDQpOw0KCQl9DQoNCgkJcHVibGljIHN0YXRpYyBieXRlW10gR2V0
Qnl0ZXMoZG91YmxlIHZhbHVlKSB7DQoJCQlyZXR1cm4gR2V0Qnl0ZXMoKGJ5
dGUgKikmdmFsdWUsIDgpOw0KCQl9DQoNCgkJc3RhdGljIHZvaWQgUHV0Qnl0
ZXMoYnl0ZSAqZHN0LCBieXRlW10gc3JjLCBpbnQgc3RhcnRfaW5kZXgsIGlu
dCBjb3VudCkgew0KCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7DQoJCQkJZHN0W2ldID0gc3JjW2kgKyBzdGFydF9pbmRleF07DQoJCQl9
DQoJCX0NCg0KCQlwdWJsaWMgc3RhdGljIGJvb2wgVG9Cb29sZWFuKGJ5dGVb
XSB2YWx1ZSwgaW50IHN0YXJ0X2luZGV4KSB7DQoJCQlib29sIHJldDsNCg0K
CQkJUHV0Qnl0ZXMoKGJ5dGUgKikmcmV0LCB2YWx1ZSwgc3RhcnRfaW5kZXgs
IDEpOw0KDQoJCQlyZXR1cm4gcmV0Ow0KCQl9DQoNCgkJcHVibGljIHN0YXRp
YyBjaGFyIFRvQ2hhcihieXRlW10gdmFsdWUsIGludCBzdGFydF9pbmRleCkg
ew0KCQkJY2hhciByZXQ7DQoNCgkJCVB1dEJ5dGVzKChieXRlICopJnJldCwg
dmFsdWUsIHN0YXJ0X2luZGV4LCAyKTsNCg0KCQkJcmV0dXJuIHJldDsNCgkJ
fQ0KDQoJCXB1YmxpYyBzdGF0aWMgc2hvcnQgVG9JbnQxNihieXRlW10gdmFs
dWUsIGludCBzdGFydF9pbmRleCkgew0KCQkJc2hvcnQgcmV0Ow0KDQoJCQlQ
dXRCeXRlcygoYnl0ZSAqKSZyZXQsIHZhbHVlLCBzdGFydF9pbmRleCwgMik7
DQoNCgkJCXJldHVybiByZXQ7DQoJCX0NCg0KCQlwdWJsaWMgc3RhdGljIGlu
dCBUb0ludDMyKGJ5dGVbXSB2YWx1ZSwgaW50IHN0YXJ0X2luZGV4KSB7DQoJ
CQlpbnQgcmV0Ow0KDQoJCQlQdXRCeXRlcygoYnl0ZSAqKSZyZXQsIHZhbHVl
LCBzdGFydF9pbmRleCwgNCk7DQoNCgkJCXJldHVybiByZXQ7DQoJCX0NCg0K
CQlwdWJsaWMgc3RhdGljIGxvbmcgVG9JbnQ2NChieXRlW10gdmFsdWUsIGlu
dCBzdGFydF9pbmRleCkgew0KCQkJbG9uZyByZXQ7DQoNCgkJCVB1dEJ5dGVz
KChieXRlICopJnJldCwgdmFsdWUsIHN0YXJ0X2luZGV4LCA4KTsNCg0KCQkJ
cmV0dXJuIHJldDsNCgkJfQ0KDQoJCXB1YmxpYyBzdGF0aWMgdXNob3J0IFRv
VUludDE2KGJ5dGVbXSB2YWx1ZSwgaW50IHN0YXJ0X2luZGV4KSB7DQoJCQl1
c2hvcnQgcmV0Ow0KDQoJCQlQdXRCeXRlcygoYnl0ZSAqKSZyZXQsIHZhbHVl
LCBzdGFydF9pbmRleCwgMik7DQoNCgkJCXJldHVybiByZXQ7DQoJCX0NCg0K
CQlwdWJsaWMgc3RhdGljIHVpbnQgVG9VSW50MzIoYnl0ZVtdIHZhbHVlLCBp
bnQgc3RhcnRfaW5kZXgpIHsNCgkJCXVpbnQgcmV0Ow0KDQoJCQlQdXRCeXRl
cygoYnl0ZSAqKSZyZXQsIHZhbHVlLCBzdGFydF9pbmRleCwgNCk7DQoNCgkJ
CXJldHVybiByZXQ7DQoJCX0NCg0KCQlwdWJsaWMgc3RhdGljIHVsb25nIFRv
VUludDY0KGJ5dGVbXSB2YWx1ZSwgaW50IHN0YXJ0X2luZGV4KSB7DQoJCQl1
bG9uZyByZXQ7DQoNCgkJCVB1dEJ5dGVzKChieXRlICopJnJldCwgdmFsdWUs
IHN0YXJ0X2luZGV4LCA4KTsNCg0KCQkJcmV0dXJuIHJldDsNCgkJfQ0KDQoJ
CXB1YmxpYyBzdGF0aWMgZmxvYXQgVG9TaW5nbGUoYnl0ZVtdIHZhbHVlLCBp
bnQgc3RhcnRfaW5kZXgpIHsNCgkJCWZsb2F0IHJldDsNCg0KCQkJUHV0Qnl0
ZXMoKGJ5dGUgKikmcmV0LCB2YWx1ZSwgc3RhcnRfaW5kZXgsIDQpOw0KDQoJ
CQlyZXR1cm4gcmV0Ow0KCQl9DQoNCgkJcHVibGljIHN0YXRpYyBkb3VibGUg
VG9Eb3VibGUoYnl0ZVtdIHZhbHVlLCBpbnQgc3RhcnRfaW5kZXgpIHsNCgkJ
CWRvdWJsZSByZXQ7DQoNCgkJCVB1dEJ5dGVzKChieXRlICopJnJldCwgdmFs
dWUsIHN0YXJ0X2luZGV4LCA4KTsNCg0KCQkJcmV0dXJuIHJldDsNCgkJfQ0K
DQoJCXB1YmxpYyBzdGF0aWMgc3RyaW5nIFRvU3RyaW5nKGJ5dGVbXSB2YWx1
ZSkgew0KCQkJcmV0dXJuIFRvU3RyaW5nKHZhbHVlLCAwLCB2YWx1ZS5MZW5n
dGgpOw0KCQl9DQoNCgkJcHVibGljIHN0YXRpYyBzdHJpbmcgVG9TdHJpbmco
Ynl0ZVtdIHZhbHVlLCBpbnQgc3RhcnRfaW5kZXgpIHsNCgkJCXJldHVybiBU
b1N0cmluZyh2YWx1ZSwgc3RhcnRfaW5kZXgsIHZhbHVlLkxlbmd0aCAtIHN0
YXJ0X2luZGV4KTsNCgkJfQ0KDQoJCXB1YmxpYyBzdGF0aWMgc3RyaW5nIFRv
U3RyaW5nKGJ5dGVbXSB2YWx1ZSwgaW50IHN0YXJ0X2luZGV4LCBpbnQgbGVu
Z3RoKSB7DQoJCQlzdHJpbmcgcmV0ID0gIiI7DQoNCgkJCWZvciAoaW50IGkg
PSAwOyBpIDwgdmFsdWUuTGVuZ3RoOyBpKyspIHsNCgkJCQlpZiAoaSA+IDAp
DQoJCQkJCXJldCA9IHJldCArICctJzsNCgkJCQkNCgkJCQljaGFyIGhpZ2gg
PSAoY2hhcikoKHZhbHVlW2ldID4+IDQpICYgMHgwZik7DQoJCQkJY2hhciBs
b3cgPSAoY2hhcikodmFsdWVbaV0gJiAweDBmKTsNCg0KCQkJCWlmIChoaWdo
IDwgMTApIA0KCQkJCQloaWdoICs9ICcwJzsNCgkJCQllbHNlDQoJCQkJCWhp
Z2ggKz0gJ0EnOw0KDQoJCQkJaWYgKGxvdyA8IDEwKQ0KCQkJCQlsb3cgKz0g
JzAnOw0KCQkJCWVsc2UNCgkJCQkJbG93ICs9ICdBJzsNCg0KCQkJCXJldCA9
IHJldCArIGhpZ2ggKyBsb3c7DQoJCQl9DQoNCgkJCXJldHVybiByZXQ7DQoJ
CX0NCgl9DQp9DQo=

------------=_1010506720-16342-0--