From octave-maintainers-request at bevo dot che dot wisc dot edu Sun Feb 4 02:57:11 2001 Subject: ISO C++ (partial) replacement for libio stream:scan From: Mumit Khan To: octave-maintainers at bevo dot che dot wisc dot edu cc: khan at xraylith dot wisc dot edu Date: Sun, 4 Feb 2001 02:57:05 -0600 (CST) 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 at docserver dot cac dot washington dot edu for more info. ---559023410-851401618-981277025=:832 Content-Type: TEXT/PLAIN; charset=US-ASCII Forgot to include this in my 6-part patchset. First cut at a working sscanf/fscanf functionality in C++ library with libstdc++-v2/libio scan/form extension. The correct way to fix this problem of course is either (1) write a complete scan and form implementation based on libio, or (2) write a stream manipulator that translates print-style format to stream style (preferred). Octave makes (2) easy by pre-sorting all the format codes in advance. Very rudimentary, partial implementation just so I could get some work done and run the tests. Now passes all the tests with newer compilers. Patch against Octave CVS 2001-02-02. Haven't tested anything other than trivial format specifiers, and haven't even considered character classes yet. Regards, Mumit ---559023410-851401618-981277025=:832 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="src-scan.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: missed patch Rm9yZ290IHRvIGluY2x1ZGUgdGhpcyBpbiBteSA2LXBhcnQgcGF0Y2hzZXQu IA0KDQpGaXJzdCBjdXQgYXQgYSB3b3JraW5nIHNzY2FuZi9mc2NhbmYgZnVu Y3Rpb25hbGl0eSBpbiBDKysgbGlicmFyeQ0Kd2l0aCBsaWJzdGRjKystdjIv bGliaW8gc2Nhbi9mb3JtIGV4dGVuc2lvbi4gVGhlIGNvcnJlY3Qgd2F5IHRv DQpmaXggdGhpcyBwcm9ibGVtIG9mIGNvdXJzZSBpcyBlaXRoZXIgKDEpIHdy aXRlIGEgY29tcGxldGUgc2NhbiBhbmQNCmZvcm0gaW1wbGVtZW50YXRpb24g YmFzZWQgb24gbGliaW8sIG9yICgyKSB3cml0ZSBhIHN0cmVhbSBtYW5pcHVs YXRvcg0KdGhhdCB0cmFuc2xhdGVzIHByaW50LXN0eWxlIGZvcm1hdCB0byBz dHJlYW0gc3R5bGUgKHByZWZlcnJlZCkuIE9jdGF2ZQ0KbWFrZXMgKDIpIGVh c3kgYnkgcHJlLXNvcnRpbmcgYWxsIHRoZSBmb3JtYXQgY29kZXMgaW4gYWR2 YW5jZS4NCg0KVmVyeSBydWRpbWVudGFyeSwgcGFydGlhbCBpbXBsZW1lbnRh dGlvbiBqdXN0IHNvIEkgY291bGQgZ2V0IHNvbWUgd29yaw0KZG9uZSBhbmQg cnVuIHRoZSB0ZXN0cy4gTm93IHBhc3NlcyBhbGwgdGhlIHRlc3RzIHdpdGgg bmV3ZXIgY29tcGlsZXJzLg0KDQpQYXRjaCBhZ2FpbnN0IE9jdGF2ZSBDVlMg MjAwMS0wMi0wMi4NCg0KMjAwMS0wMi0wMyAgTXVtaXQgS2hhbiAgPGtoYW5A bmFub3RlY2gud2lzYy5lZHU+DQoNCgkqIG9jdC1zdHJlYW0uY2MgKG9jdGF2 ZV9zY2FuKTogSW1wbGVtZW50LCBhbmQgc3BlY2lhbGl6ZSBmb3INCgljaGFy Ki4gRGVsZXRlIHRoZSBvbGQgdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMuDQoJ KEJFR0lOX1NfQ09OVkVSU0lPTik6IFVzZSBzdHJpbmdzIGluc3RlYWQgb2Yg b3N0cnN0cmVhbWJ1Zi4NCgkob2N0YXZlX2Jhc2Vfc3RyZWFtOjpkb19zY2Fu Zik6IFBhc3MgY29ycmVjdCBwYXJhbWV0ZXIgdG8NCglkb19zY2FuX2NvbnYu DQoNCkluZGV4OiBzcmMvb2N0LXN0cmVhbS5jYw0KPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL2toYW4vc3JjL21hdGgvQ1ZTUk9P VC9vY3RhdmUtZGV2L3NyYy9vY3Qtc3RyZWFtLmNjLHYNCnJldHJpZXZpbmcg cmV2aXNpb24gMS4yDQpkaWZmIC11IC0zIC1wIC1yMS4yIG9jdC1zdHJlYW0u Y2MNCi0tLSBzcmMvb2N0LXN0cmVhbS5jYwkyMDAxLzAyLzA0IDAwOjQ1OjAz CTEuMg0KKysrIHNyYy9vY3Qtc3RyZWFtLmNjCTIwMDEvMDIvMDQgMDg6NDg6 MzUNCkBAIC0xMDY4LDQ2ICsxMDY4LDQwIEBAIG9jdGF2ZV9iYXNlX3N0cmVh bTo6cmVhZCAoY29uc3QgTWF0cml4JiANCiANCiAjZGVmaW5lIE9DVEFWRV9T Q0FOKGlzLCBmbXQsIGFyZykgaXMuc2NhbiAoKGZtdCkudGV4dCwgYXJnKQ0K IA0KLSNlbHNlDQorI2Vsc2UgLyogX19HTlVHX18gJiYgIUNYWF9JU09fQ09N UExJQU5UX0xJQlJBUlkgKi8NCiANCiAjZGVmaW5lIE9DVEFWRV9TQ0FOKGlz LCBmbXQsIGFyZykgb2N0YXZlX3NjYW4gKGlzLCBmbXQsIGFyZykNCiANCiB0 ZW1wbGF0ZSA8Y2xhc3MgVD4NCiBzdGQ6OmlzdHJlYW0mDQotb2N0YXZlX3Nj YW4gKHN0ZDo6aXN0cmVhbSYgaXMsIGNvbnN0IHNjYW5mX2Zvcm1hdF9lbHQm IGZtdCwgVCB2YWxwdHIpDQorb2N0YXZlX3NjYW4gKHN0ZDo6aXN0cmVhbSYg aXMsIGNvbnN0IHNjYW5mX2Zvcm1hdF9lbHQmIGZtdCwgVCogdmFscHRyKQ0K IHsNCi0gIC8vIFNvbWVvbmUgZWxzZSB3aG8gY2FyZXMgd2lsbCBoYXZlIHRv IGZpeCB0aGlzIGNvZGUuICBJIHJlZnVzZSB0bw0KLSAgLy8gd2FzdGUgbXkg dGltZSB3b3JraW5nIG9uIGl0IHdoZW4gYSByZWFzb25hYmxlIGFsdGVybmF0 aXZlIGxpa2UNCi0gIC8vIGlzdHJlYW06OnNjYW4gZXhpc3RzIGluIHRoZSBH TlUgaW9zdHJlYW0gbGlicmFyeS4gIC0tandlDQotDQotICBlcnJvciAoImZv cm1hdHRlZCBpbnB1dCBvbmx5IHdvcmtzIHdoZW4gT2N0YXZlIGlzIGNvbXBp bGVkIHdpdGggRysrIik7DQotDQotICBpcy5zZXRzdGF0ZSAoc3RkOjppb3M6 OmZhaWxiaXQpOw0KLQ0KKyAgVCYgcmVmID0gKnZhbHB0cjsNCisgIHN3aXRj aCAoZm10LnR5cGUpDQorICAgIHsNCisgICAgY2FzZSAnbyc6DQorICAgICAg aXMgPj4gc3RkOjpvY3QgPj4gcmVmOw0KKyAgICAgIGJyZWFrOw0KKyAgICBj YXNlICd4JzoNCisgICAgICBpcyA+PiBzdGQ6OmhleCA+PiByZWY7DQorICAg ICAgYnJlYWs7DQorICAgIGRlZmF1bHQ6DQorICAgICAgaXMgPj4gcmVmOw0K KyAgICAgIGJyZWFrOw0KKyAgICB9DQogICByZXR1cm4gaXM7DQogfQ0KLQ0K LXRlbXBsYXRlIHN0ZDo6aXN0cmVhbSYNCi1vY3RhdmVfc2NhbiAoc3RkOjpp c3RyZWFtJiwgY29uc3Qgc2NhbmZfZm9ybWF0X2VsdCYsIGNoYXIqKTsNCi0N Ci10ZW1wbGF0ZSBzdGQ6OmlzdHJlYW0mDQotb2N0YXZlX3NjYW4gKHN0ZDo6 aXN0cmVhbSYsIGNvbnN0IHNjYW5mX2Zvcm1hdF9lbHQmLCBpbnQqKTsNCiAN Ci10ZW1wbGF0ZSBzdGQ6OmlzdHJlYW0mDQotb2N0YXZlX3NjYW4gKHN0ZDo6 aXN0cmVhbSYsIGNvbnN0IHNjYW5mX2Zvcm1hdF9lbHQmLCBsb25nIGludCop Ow0KLQ0KLXRlbXBsYXRlIHN0ZDo6aXN0cmVhbSYNCi1vY3RhdmVfc2NhbiAo c3RkOjppc3RyZWFtJiwgY29uc3Qgc2NhbmZfZm9ybWF0X2VsdCYsIHNob3J0 IGludCopOw0KLQ0KLSNpZiAwDQotdGVtcGxhdGUgc3RkOjppc3RyZWFtJg0K LW9jdGF2ZV9zY2FuIChzdGQ6OmlzdHJlYW0mLCBjb25zdCBzY2FuZl9mb3Jt YXRfZWx0JiwgZmxvYXQqKTsNCi0jZW5kaWYNCi0NCi10ZW1wbGF0ZSBzdGQ6 OmlzdHJlYW0mDQotb2N0YXZlX3NjYW4gKHN0ZDo6aXN0cmVhbSYsIGNvbnN0 IHNjYW5mX2Zvcm1hdF9lbHQmLCBkb3VibGUqKTsNCisvLyBOb3RlIHRoYXQg dGhpcyBzcGVjaWFsaXphdGlvbiBpcyBvbmx5IHVzZWQgZm9yIHJlYWRpbmcg Y2hhcmFjdGVycywgbm90IA0KKy8vIGNoYXJhY3RlciBzdHJpbmdzLiBTZWUg QkVHSU5fU19DT05WRVJTSU9OIGZvciBkZXRhaWxzLg0KK3RlbXBsYXRlPD4N CitzdGQ6OmlzdHJlYW0mDQorb2N0YXZlX3NjYW48PiAoc3RkOjppc3RyZWFt JiBpcywgY29uc3Qgc2NhbmZfZm9ybWF0X2VsdCYgZm10LCBjaGFyKiB2YWxw dHIpDQorew0KKyAgcmV0dXJuIGlzID4+IHZhbHB0cjsNCit9DQogDQotI2Vu ZGlmDQorI2VuZGlmIC8qIF9fR05VR19fICYmICFDWFhfSVNPX0NPTVBMSUFO VF9MSUJSQVJZICovDQogDQogdGVtcGxhdGUgPGNsYXNzIFQ+DQogdm9pZA0K QEAgLTEyNTQsMjUgKzEyNDgsMTAgQEAgZG9fc2NhbmZfY29udiAoc3RkOjpp c3RyZWFtJiwgY29uc3Qgc2Nhbg0KIAl9IFwNCiAgICAgICBlbHNlIFwNCiAJ eyBcDQotCSAgc3RkOjpvc3Ryc3RyZWFtIGJ1ZjsgXA0KLSBcDQotCSAgaW50 IGMgPSBFT0Y7IFwNCi0gXA0KLQkgIHdoaWxlIChpcyAmJiAoYyA9IGlzLmdl dCAoKSkgIT0gRU9GICYmIGlzc3BhY2UgKGMpKSBcDQotCSAgICAvKiBza2lw IGxlYWRpbmcgd2hpdGVzcGFjZSAqLzsgXA0KLSBcDQotCSAgaWYgKGlzICYm IGMgIT0gRU9GKSBcDQotCSAgICBidWYgPDwgKGNoYXIpIGM7IFwNCi0gXA0K LQkgIHdoaWxlIChpcyAmJiAoYyA9IGlzLmdldCAoKSkgIT0gRU9GICYmICEg aXNzcGFjZSAoYykpIFwNCi0JICAgIGJ1ZiA8PCAoY2hhcikgYzsgXA0KLSBc DQotCSAgaWYgKGlzc3BhY2UgKGMpKSBcDQotCSAgICBpcy5wdXRiYWNrIChj KTsgXA0KLSBcDQotCSAgYnVmIDw8IHN0ZDo6ZW5kczsgXA0KLSBcDQotCSAg dG1wID0gYnVmLnN0ciAoKTsgXA0KKwkgIHN0ZDo6c3RyaW5nIGJ1ZjsgXA0K KwkgIGlzID4+IHN0ZDo6d3MgPj4gYnVmOyBcDQorCSAgdG1wID0gbmV3IGNo YXJbYnVmLmxlbmd0aCgpICsgMV07IFwNCisJICBzdHJjcHkgKHRtcCwgYnVm LmNfc3RyKCkpOyBcDQogCX0gXA0KICAgICB9IFwNCiAgIHdoaWxlICgwKQ0K QEAgLTE1MTIsNyArMTQ5MSw3IEBAIG9jdGF2ZV9iYXNlX3N0cmVhbTo6ZG9f c2NhbmYgKHNjYW5mX2Zvcm0NCiAJCSAgICAgIGNhc2UgJ2gnOg0KIAkJCXsN CiAJCQkgIHNob3J0IGludCB0bXA7DQotCQkJICBkb19zY2FuZl9jb252IChp cywgZm10LCAmdG1wLCBtdmFsLCBkYXRhLA0KKwkJCSAgZG9fc2NhbmZfY29u diAoaXMsICplbHQsICZ0bXAsIG12YWwsIGRhdGEsDQogCQkJCQkgZGF0YV9p bmRleCwgY29udmVyc2lvbl9jb3VudCwNCiAJCQkJCSBuciwgbWF4X3NpemUs IGRpc2NhcmQpOw0KIAkJCX0NCkBAIC0xNTIxLDcgKzE1MDAsNyBAQCBvY3Rh dmVfYmFzZV9zdHJlYW06OmRvX3NjYW5mIChzY2FuZl9mb3JtDQogCQkgICAg ICBjYXNlICdsJzoNCiAJCQl7DQogCQkJICBsb25nIGludCB0bXA7DQotCQkJ ICBkb19zY2FuZl9jb252IChpcywgZm10LCAmdG1wLCBtdmFsLCBkYXRhLA0K KwkJCSAgZG9fc2NhbmZfY29udiAoaXMsICplbHQsICZ0bXAsIG12YWwsIGRh dGEsDQogCQkJCQkgZGF0YV9pbmRleCwgY29udmVyc2lvbl9jb3VudCwNCiAJ CQkJCSBuciwgbWF4X3NpemUsIGRpc2NhcmQpOw0KIAkJCX0NCkBAIC0xNTMw LDcgKzE1MDksNyBAQCBvY3RhdmVfYmFzZV9zdHJlYW06OmRvX3NjYW5mIChz Y2FuZl9mb3JtDQogCQkgICAgICBkZWZhdWx0Og0KIAkJCXsNCiAJCQkgIGlu dCB0bXA7DQotCQkJICBkb19zY2FuZl9jb252IChpcywgZm10LCAmdG1wLCBt dmFsLCBkYXRhLA0KKwkJCSAgZG9fc2NhbmZfY29udiAoaXMsICplbHQsICZ0 bXAsIG12YWwsIGRhdGEsDQogCQkJCQkgZGF0YV9pbmRleCwgY29udmVyc2lv bl9jb3VudCwNCiAJCQkJCSBuciwgbWF4X3NpemUsIGRpc2NhcmQpOw0KIAkJ CX0NCkBAIC0xNTQzLDcgKzE1MjIsNyBAQCBvY3RhdmVfYmFzZV9zdHJlYW06 OmRvX3NjYW5mIChzY2FuZl9mb3JtDQogCQkgIHsNCiAJCSAgICBkb3VibGUg dG1wOw0KIA0KLQkJICAgIGRvX3NjYW5mX2NvbnYgKGlzLCBmbXQsICZ0bXAs IG12YWwsIGRhdGEsDQorCQkgICAgZG9fc2NhbmZfY29udiAoaXMsICplbHQs ICZ0bXAsIG12YWwsIGRhdGEsDQogCQkJCSAgIGRhdGFfaW5kZXgsIGNvbnZl cnNpb25fY291bnQsDQogCQkJCSAgIG5yLCBtYXhfc2l6ZSwgZGlzY2FyZCk7 DQogCQkgIH0NCg== ---559023410-851401618-981277025=:832--