[Mono-list] Why InternalCall rather than DllImport?

Matt Kimball matt@kimball.net
Wed, 09 Jan 2002 08:20:10 -0800 (PST)


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

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

So, I'm looking at the Linux.cs implementation, and I'm wondering why most of
the file I/O methods implemented there are using InternalCall methods, rather
than using the Wrapper methods defined in libmonowrapper.so.  Using the Unix
Wrapper class would seem to be a cleaner approach.  Is there a reason for doing
the former?  Or would it be kosher to implement some of the missing methods
using the Wrapper methods, as in the attached patch?

-- 
Matt Kimball
matt@kimball.net



------------=_1010593210-24662-0
Content-Type: application/octet-stream; name="getfiles.patch"
Content-Disposition: attachment; filename="getfiles.patch"
Content-Transfer-Encoding: base64

SW5kZXg6IExpbnV4LmNzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp
bGU6IC9jdnMvcHVibGljL21jcy9jbGFzcy9jb3JsaWIvTGludXgvTGludXgu
Y3MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNwpkaWZmIC11IC1yMS43IExp
bnV4LmNzCi0tLSBMaW51eC5jcwkyMDAxLzEyLzExIDE2OjU5OjQzCTEuNwor
KysgTGludXguY3MJMjAwMi8wMS8wOSAxMjoxOTozOQpAQCAtMjQsNiArMjQs
NyBAQAogdXNpbmcgU3lzdGVtLkNvbGxlY3Rpb25zOwogdXNpbmcgU3lzdGVt
LlJlZmxlY3Rpb247CiB1c2luZyBTeXN0ZW0uUnVudGltZS5Db21waWxlclNl
cnZpY2VzOwordXNpbmcgU3lzdGVtLlByaXZhdGU7CiAKIG5hbWVzcGFjZSBT
eXN0ZW0uUEFMCiB7CkBAIC0yOTEsMjIgKzI5Miw2OSBAQAogCQlbU3lzdGVt
LlJ1bnRpbWUuQ29tcGlsZXJTZXJ2aWNlcy5NZXRob2RJbXBsQXR0cmlidXRl
KFN5c3RlbS5SdW50aW1lLkNvbXBpbGVyU2VydmljZXMuTWV0aG9kSW1wbE9w
dGlvbnMuSW50ZXJuYWxDYWxsKV0KIAkJcHVibGljIGV4dGVybiBzdHJpbmcg
R2V0Q3VycmVudERpcmVjdG9yeSgpOwogCi0JCXB1YmxpYyBzdHJpbmdbXQlH
ZXREaXJlY3RvcmllcyhzdHJpbmcgcGF0aCwgc3RyaW5nIHNlYXJjaFBhdHRl
cm4pCisJCXVuc2FmZSBwdWJsaWMgc3RyaW5nW10gR2V0RGlyZWN0b3JpZXMo
c3RyaW5nIHBhdGgsIHN0cmluZyBzZWFyY2hQYXR0ZXJuKQogCQl7Ci0JCQlT
eXN0ZW0uRGlhZ25vc3RpY3MuRGVidWcuV3JpdGVMaW5lKCJMaW51eDpHZXRE
aXJlY3RvcmllcyhTeXN0ZW0uU3RyaW5nLFN5c3RlbS5TdHJpbmcpOiBTdHVi
IE1ldGhvZCIpOwotCQkJcmV0dXJuIG51bGw7CisJCQlzdHJpbmdbXSBmc19l
bnRzID0gR2V0RmlsZVN5c3RlbUVudHJpZXMocGF0aCwgc2VhcmNoUGF0dGVy
bik7CisKKwkJCUFycmF5TGlzdCBsaXN0ID0gbmV3IEFycmF5TGlzdCgpOwor
CQkJZm9yIChpbnQgaSA9IDA7IGkgPCBmc19lbnRzLkxlbmd0aDsgaSsrKSB7
CisJCQkJc3RhdCBidWY7CisJCQkJaWYgKFdyYXBwZXIuc3RhdChwYXRoICsg
RGlyZWN0b3J5U2VwYXJhdG9yICsgZnNfZW50c1tpXSwgJmJ1ZikgPT0gMCkg
eworCQkJCQlpZiAoKGJ1Zi5zdF9tb2RlICYgV3JhcHBlci5TX0lGRElSKSA9
PSBXcmFwcGVyLlNfSUZESVIpIHsKKwkJCQkJCWxpc3QuQWRkKGZzX2VudHNb
aV0pOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQlzdHJpbmdbXSByZXQg
PSBuZXcgc3RyaW5nW2xpc3QuQ291bnRdOworCQkJZm9yIChpbnQgaSA9IDA7
IGkgPCBsaXN0LkNvdW50OyBpKyspIHsKKwkJCQlyZXRbaV0gPSAoc3RyaW5n
KWxpc3RbaV07CisJCQl9CisKKwkJCXJldHVybiByZXQ7CiAJCX0KIAotCQlw
dWJsaWMgc3RyaW5nW10JR2V0RmlsZXMoc3RyaW5nCXBhdGgsIHN0cmluZyBz
ZWFyY2hQYXR0ZXJuKQorCQl1bnNhZmUgcHVibGljIHN0cmluZ1tdIEdldEZp
bGVzKHN0cmluZyBwYXRoLCBzdHJpbmcgc2VhcmNoUGF0dGVybikKIAkJewot
CQkJU3lzdGVtLkRpYWdub3N0aWNzLkRlYnVnLldyaXRlTGluZSgiTGludXg6
R2V0RmlsZXMoU3lzdGVtLlN0cmluZywgU3lzdGVtLlN0cmluZyk6IFN0dWIg
TWV0aG9kIik7Ci0JCQlyZXR1cm4gbnVsbDsKKwkJCXN0cmluZ1tdIGZzX2Vu
dHMgPSBHZXRGaWxlU3lzdGVtRW50cmllcyhwYXRoLCBzZWFyY2hQYXR0ZXJu
KTsKKworCQkJQXJyYXlMaXN0IGxpc3QgPSBuZXcgQXJyYXlMaXN0KCk7CisJ
CQlmb3IgKGludCBpID0gMDsgaSA8IGZzX2VudHMuTGVuZ3RoOyBpKyspIHsK
KwkJCQlzdGF0IGJ1ZjsKKwkJCQlpZiAoV3JhcHBlci5zdGF0KHBhdGggKyBE
aXJlY3RvcnlTZXBhcmF0b3IgKyBmc19lbnRzW2ldLCAmYnVmKSA9PSAwKSB7
CisJCQkJCWlmICgoYnVmLnN0X21vZGUgJiBXcmFwcGVyLlNfSUZESVIpID09
IDApIHsKKwkJCQkJCWxpc3QuQWRkKGZzX2VudHNbaV0pOworCQkJCQl9CisJ
CQkJfQorCQkJfQorCisJCQlzdHJpbmdbXSByZXQgPSBuZXcgc3RyaW5nW2xp
c3QuQ291bnRdOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0LkNvdW50
OyBpKyspIHsKKwkJCQlyZXRbaV0gPSAoc3RyaW5nKWxpc3RbaV07CisJCQl9
CisKKwkJCXJldHVybiByZXQ7CiAJCX0KIAotCQlwdWJsaWMgc3RyaW5nW10J
R2V0RmlsZVN5c3RlbUVudHJpZXMoc3RyaW5nIHBhdGgsIHN0cmluZyBzZWFy
Y2hQYXR0ZXJuKQorCQl1bnNhZmUgcHVibGljIHN0cmluZ1tdIEdldEZpbGVT
eXN0ZW1FbnRyaWVzKHN0cmluZyBwYXRoLCBzdHJpbmcgc2VhcmNoUGF0dGVy
bikKIAkJewotCQkJU3lzdGVtLkRpYWdub3N0aWNzLkRlYnVnLldyaXRlTGlu
ZSgiTGludXg6R2V0RmlsZVN5c3RlbUVudHJpZXMoU3lzdGVtLlN0cmluZywg
U3lzdGVtLlN0cmluZyk6IFN0dWIgTWV0aG9kIik7Ci0JCQlyZXR1cm4gbnVs
bDsKKwkJCUludFB0ciBkaXIgPSBXcmFwcGVyLm9wZW5kaXIocGF0aCk7CisJ
CQlzdHJpbmcgZmlsZSA9IFdyYXBwZXIucmVhZGRpcihkaXIpOworCisJCQlB
cnJheUxpc3QgbGlzdCA9IG5ldyBBcnJheUxpc3QoKTsKKwkJCXdoaWxlIChm
aWxlICE9IG51bGwpIHsKKwkJCQlsaXN0LkFkZChmaWxlKTsKKworCQkJCWZp
bGUgPSBXcmFwcGVyLnJlYWRkaXIoZGlyKTsKKwkJCX0KKwkJCVdyYXBwZXIu
Y2xvc2VkaXIoZGlyKTsKKworCQkJc3RyaW5nW10gcmV0ID0gbmV3IHN0cmlu
Z1tsaXN0LkNvdW50XTsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgbGlzdC5D
b3VudDsgaSsrKSB7CisJCQkJcmV0W2ldID0gKHN0cmluZylsaXN0W2ldOwor
CQkJfQorCisJCQlyZXR1cm4gcmV0OwogCQl9CiAKIAkJcHVibGljIERhdGVU
aW1lCUdldExhc3RBY2Nlc3NUaW1lRGlyZWN0b3J5KHN0cmluZyBwYXRoKQo=

------------=_1010593210-24662-0--