From octave-maintainers-request at octave dot org Sun Apr 18 22:17:57 2004 Subject: Evaluating struct fields in whos From: Oyvind Kristiansen To: maintainers at octave dot org Date: Mon, 19 Apr 2004 05:17:23 +0200 (CEST) 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. ---243157704-2055327-1082344643=:22376 Content-Type: TEXT/PLAIN; charset=US-ASCII Attached is a patch that adds functionality to whos calls. It works like this: whos y.u i y will result in a call to the parser in order to evaluate y.u. The rest of the symbols appended to this string will be evaluated as usual (lookups in curr_sym_tab). The benefits are: it is possible to evaluate the size of (and other properties) of struct fields and matrix cells. Non-existing struct fields will show up as empty variables, which might be a problem? Comments? -Oeyvind Kristiansen ---243157704-2055327-1082344643=:22376 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=patch SW5kZXg6IG9jdGF2ZS9zcmMvc3ltdGFiLmNjDQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09DQpSQ1MgZmlsZTogL2N2cy9vY3RhdmUvc3JjL3N5bXRhYi5jYyx2 DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuOTkNCmRpZmYgLWMgLXAgLXIxLjk5 IHN5bXRhYi5jYw0KKioqIGEvb2N0YXZlL3NyYy9zeW10YWIuY2MJMTggRGVj IDIwMDMgMTU6MzU6MDkgLTAwMDAJMS45OQ0KLS0tIGIvb2N0YXZlL3NyYy9z eW10YWIuY2MJMTkgQXByIDIwMDQgMDI6NTM6MDggLTAwMDANCioqKioqKioq KioqKioqKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2Ug LSBTDQoqKiogNDcsNTIgKioqKg0KLS0tIDQ3LDU1IC0tLS0NCiAgI2luY2x1 ZGUgInV0aWxzLmgiDQogICNpbmNsdWRlICJ2YXJpYWJsZXMuaCINCiAgDQor ICNpbmNsdWRlICJwYXJzZS5oIg0KKyAjaW5jbHVkZSA8c3RkaW8uaD4NCisg DQogIHVuc2lnbmVkIGxvbmcgaW50IHN5bWJvbF90YWJsZTo6c3ltdGFiX2Nv dW50ID0gMDsNCiAgDQogIC8vIFNob3VsZCB2YXJpYWJsZXMgYmUgYWxsb3dl ZCB0byBoaWRlIGZ1bmN0aW9ucyBvZiB0aGUgc2FtZSBuYW1lPyAgQQ0KKioq KioqKioqKioqKioqIG1hdGNoZXNfcGF0dGVybnMgKGNvbnN0IHN0ZDo6c3Ry aW5nJiBuYW0NCioqKiA4MzMsODM4ICoqKioNCi0tLSA4MzYsOTA0IC0tLS0N CiAgfQ0KICANCiAgQXJyYXk8c3ltYm9sX3JlY29yZCAqPg0KKyBzeW1ib2xf dGFibGU6OnN1YnN5bWJvbF9saXN0IChjb25zdCBzdHJpbmdfdmVjdG9yJiBw YXRzLA0KKyAJCQkgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwgdW5zaWduZWQg aW50IHNjb3BlKSBjb25zdA0KKyB7DQorICAgaW50IGNvdW50ID0gMDsNCisg DQorICAgaW50IG4gPSBzaXplICgpOw0KKyANCisgICBBcnJheTxzeW1ib2xf cmVjb3JkICo+IHN1YnN5bWJvbHMgKG4pOw0KKyAgIGludCBwYXRzX2xlbmd0 aCA9IHBhdHMubGVuZ3RoICgpOw0KKyANCisgICBpZiAobiA9PSAwKQ0KKyAg ICAgcmV0dXJuIHN1YnN5bWJvbHM7DQorIA0KKyAgIC8vIExvb2sgZm9yIHNl cGFyYXRvcnMgbGlrZSAuKHsNCisgICBmb3IgKGludCBqID0gMDsgaiA8IHBh dHNfbGVuZ3RoOyBqKyspDQorICAgICB7DQorICAgICAgIHN0ZDo6c3RyaW5n IHZhcl9uYW1lID0gcGF0cyAoaik7DQorIA0KKyAgICAgICBzaXplX3QgcG9z ID0gdmFyX25hbWUuZmluZF9maXJzdF9vZiAoIi4oeyIpOw0KKyANCisgICAg ICAgaWYgKChwb3MgIT0gTlBPUykgJiYgKHBvcyA+IDApKQ0KKyAgICAgICAg IHsNCisgCSAgc3RkOjpzdHJpbmcgZmlyc3RfbmFtZSA9IHZhcl9uYW1lLnN1 YnN0cigwLHBvcyk7DQorIA0KKyAJICBmb3IgKHVuc2lnbmVkIGludCBpID0g MDsgaSA8IHRhYmxlX3NpemU7IGkrKykNCisgCSAgICB7DQorIAkgICAgICBz eW1ib2xfcmVjb3JkICpwdHIgPSB0YWJsZVtpXS5uZXh0ICgpOw0KKyANCisg CSAgICAgIHdoaWxlIChwdHIpDQorIAkgICAgICAgIHsNCisgCQkgIGFzc2Vy dCAoY291bnQgPCBuKTsNCisgDQorIAkJICB1bnNpZ25lZCBpbnQgbXlfc2Nv cGUgPSBwdHItPmlzX2xpbmtlZF90b19nbG9iYWwgKCkgKyAxOyAvLyBUcmlj a3kuLi4NCisgDQorIAkJICB1bnNpZ25lZCBpbnQgbXlfdHlwZSA9IHB0ci0+ dHlwZSAoKTsNCisgDQorIAkJICBzdGQ6OnN0cmluZyBteV9uYW1lID0gcHRy LT5uYW1lICgpOw0KKyANCisgCQkgIGlmICgodHlwZSAmIG15X3R5cGUpICYm IChzY29wZSAmIG15X3Njb3BlKSAmJiAoZmlyc3RfbmFtZSA9PSBteV9uYW1l KSkNCisgCQkgICAgew0KKyAJCSAgICAgIHN5bWJvbF9yZWNvcmQgKnB0ciA9 IG5ldyBzeW1ib2xfcmVjb3JkICgpOw0KKyAJCSAgICAgIG9jdGF2ZV92YWx1 ZSB2YWx1ZTsNCisgCQkgICAgICBpbnQgcGFyc2Vfc3RhdHVzOw0KKyAJICAN CisgCQkgICAgICB2YWx1ZSA9IGV2YWxfc3RyaW5nICh2YXJfbmFtZSwgdHJ1 ZSwgcGFyc2Vfc3RhdHVzKTsNCisgCSAgDQorIAkJICAgICAgcHRyLT5kZWZp bmUgKHZhbHVlKTsNCisgCQkgICAgICBwdHItPnJlbmFtZSAodmFyX25hbWUp Ow0KKyAJCSAgICAgIHN1YnN5bWJvbHMoY291bnQrKykgPSBwdHI7DQorIAkJ ICAgIH0NCisgDQorIAkJICBwdHIgPSBwdHItPm5leHQgKCk7DQorIAkJfQ0K KyAJICAgIH0NCisgCX0NCisgICAgIH0NCisgDQorICAgc3Vic3ltYm9scy5y ZXNpemUgKGNvdW50KTsNCisgDQorICAgcmV0dXJuIHN1YnN5bWJvbHM7DQor IH0NCisgDQorIEFycmF5PHN5bWJvbF9yZWNvcmQgKj4NCiAgc3ltYm9sX3Rh YmxlOjpzeW1ib2xfbGlzdCAoY29uc3Qgc3RyaW5nX3ZlY3RvciYgcGF0cywN CiAgCQkJICAgdW5zaWduZWQgaW50IHR5cGUsIHVuc2lnbmVkIGludCBzY29w ZSkgY29uc3QNCiAgew0KKioqKioqKioqKioqKioqIHN5bWJvbF90YWJsZTo6 c3ltYm9sX2xpc3QgKGNvbnN0IHN0cmluZ18NCioqKiA4NTksODY2ICoqKioN CiAgDQogIAkgIHN0ZDo6c3RyaW5nIG15X25hbWUgPSBwdHItPm5hbWUgKCk7 DQogIA0KISAJICBpZiAoKHR5cGUgJiBteV90eXBlKSAmJiAoc2NvcGUgJiBt eV9zY29wZSkNCiEgCSAgICAgICYmIG1hdGNoZXNfcGF0dGVybnMgKG15X25h bWUsIHBhdHMpKQ0KICAJICAgIHN5bWJvbHMoY291bnQrKykgPSBwdHI7DQog IA0KICAJICBwdHIgPSBwdHItPm5leHQgKCk7DQotLS0gOTI1LDkzMSAtLS0t DQogIA0KICAJICBzdGQ6OnN0cmluZyBteV9uYW1lID0gcHRyLT5uYW1lICgp Ow0KICANCiEgCSAgaWYgKCh0eXBlICYgbXlfdHlwZSkgJiYgKHNjb3BlICYg bXlfc2NvcGUpICYmIChtYXRjaGVzX3BhdHRlcm5zIChteV9uYW1lLCBwYXRz KSkpDQogIAkgICAgc3ltYm9scyhjb3VudCsrKSA9IHB0cjsNCiAgDQogIAkg IHB0ciA9IHB0ci0+bmV4dCAoKTsNCioqKioqKioqKioqKioqKiBzeW1ib2xf dGFibGU6Om1heWJlX2xpc3QgKGNvbnN0IGNoYXIgKmhlDQoqKiogOTE3LDkz NSAqKioqDQogIA0KICAgIGlmIChzaG93X3ZlcmJvc2UpDQogICAgICB7DQoh ICAgICAgIEFycmF5PHN5bWJvbF9yZWNvcmQgKj4gc3ltYm9scyA9IHN5bWJv bF9saXN0IChhcmd2LCB0eXBlLCBzY29wZSk7DQogIA0KISAgICAgICBpbnQg bGVuID0gc3ltYm9scy5sZW5ndGggKCk7DQogIA0KICAgICAgICBpZiAobGVu ID4gMCkNCiAgCXsNCiAgCSAgb3MgPDwgIlxuIiA8PCBoZWFkZXIgPDwgIlxu XG4iDQogIAkJICAgICA8PCAicHJvdCAgdHlwZSAgICAgICAgICAgICAgICAg ICAgICAgcm93cyAgIGNvbHMgIG5hbWVcbiINCiAgCQkgICAgIDw8ICI9PT09 ICA9PT09ICAgICAgICAgICAgICAgICAgICAgICA9PT09ICAgPT09PSAgPT09 PVxuIjsNCiAgDQogIAkgIHN5bWJvbHMucXNvcnQgKG1heWJlX2xpc3RfY21w X2Zjbik7DQogIA0KISAJICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgaSsr KQ0KICAJICAgIHN5bWJvbHMoaSktPnByaW50X3N5bWJvbF9pbmZvX2xpbmUg KG9zKTsNCiAgDQogIAkgIHN0YXR1cyA9IDE7DQotLS0gOTgyLDEwMTMgLS0t LQ0KICANCiAgICBpZiAoc2hvd192ZXJib3NlKQ0KICAgICAgew0KISAgICAg ICAvLyBYWFggRklYTUUgWFhYIFNob3VsZCBzZXBhcmF0ZSBhcmd2IHRvIGxp c3RzIHdpdGggYW5kIHdpdGhvdXQgZG90cw0KISAgICAgICBBcnJheTxzeW1i b2xfcmVjb3JkICo+IF9zeW1ib2xzID0gc3ltYm9sX2xpc3QgKGFyZ3YsIHR5 cGUsIHNjb3BlKTsNCiEgICAgICAgQXJyYXk8c3ltYm9sX3JlY29yZCAqPiBf c3Vic3ltYm9scyA9IHN1YnN5bWJvbF9saXN0IChhcmd2LCB0eXBlLCBzY29w ZSk7DQohIA0KISAgICAgICBpbnQgc3ltX2xlbiA9IF9zeW1ib2xzLmxlbmd0 aCAoKSwgc3Vic3ltX2xlbiA9IF9zdWJzeW1ib2xzLmxlbmd0aCAoKSwgbGVu ID0gc3ltX2xlbiArIHN1YnN5bV9sZW47DQogIA0KISAgICAgICBBcnJheTxz eW1ib2xfcmVjb3JkICo+IHN5bWJvbHMgKGxlbik7DQohICAgICAgIC8vaW50 IGxlbiA9IHN5bWJvbHMubGVuZ3RoICgpOw0KICANCiAgICAgICAgaWYgKGxl biA+IDApDQogIAl7DQorIAkgIC8vIEpvaW5pbmcgc3ltYm9saWMgdGFibGVz DQorIAkgIGludCBpOw0KKyANCisgCSAgZm9yIChpID0gMDsgaSA8IHN5bV9s ZW47IGkrKykNCisgCSAgICBzeW1ib2xzKGkpID0gX3N5bWJvbHMoaSk7DQor IA0KKyAJICBzeW1ib2xzKGkrc3ltX2xlbikgPSBfc3Vic3ltYm9scyhpKTsN CisgDQogIAkgIG9zIDw8ICJcbiIgPDwgaGVhZGVyIDw8ICJcblxuIg0KICAJ CSAgICAgPDwgInByb3QgIHR5cGUgICAgICAgICAgICAgICAgICAgICAgIHJv d3MgICBjb2xzICBuYW1lXG4iDQogIAkJICAgICA8PCAiPT09PSAgPT09PSAg ICAgICAgICAgICAgICAgICAgICAgPT09PSAgID09PT0gID09PT1cbiI7DQog IA0KICAJICBzeW1ib2xzLnFzb3J0IChtYXliZV9saXN0X2NtcF9mY24pOw0K ICANCiEgCSAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQ0KICAJICAgIHN5 bWJvbHMoaSktPnByaW50X3N5bWJvbF9pbmZvX2xpbmUgKG9zKTsNCiAgDQog IAkgIHN0YXR1cyA9IDE7DQpJbmRleDogb2N0YXZlL3NyYy9zeW10YWIuaA0K PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9jdnMvb2N0YXZl L3NyYy9zeW10YWIuaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNjYNCmRp ZmYgLWMgLXAgLXIxLjY2IHN5bXRhYi5oDQoqKiogYS9vY3RhdmUvc3JjL3N5 bXRhYi5oCTEzIEZlYiAyMDAzIDIxOjAzOjA0IC0wMDAwCTEuNjYNCi0tLSBi L29jdGF2ZS9zcmMvc3ltdGFiLmgJMTkgQXByIDIwMDQgMDI6NTM6MDggLTAw MDANCioqKioqKioqKioqKioqKiBwdWJsaWM6DQoqKiogNDU0LDQ1OSAqKioq DQotLS0gNDU0LDQ2NCAtLS0tDQogICAgaW50IHNpemUgKHZvaWQpIGNvbnN0 Ow0KICANCiAgICBBcnJheTxzeW1ib2xfcmVjb3JkICo+DQorICAgc3Vic3lt Ym9sX2xpc3QgKGNvbnN0IHN0cmluZ192ZWN0b3ImIHBhdHMgPSBzdHJpbmdf dmVjdG9yICgpLA0KKyAJCSAgdW5zaWduZWQgaW50IHR5cGUgPSBTWU1UQUJf QUxMX1RZUEVTLA0KKyAJCSAgdW5zaWduZWQgaW50IHNjb3BlID0gU1lNVEFC X0FMTF9TQ09QRVMpIGNvbnN0Ow0KKyANCisgICBBcnJheTxzeW1ib2xfcmVj b3JkICo+DQogICAgc3ltYm9sX2xpc3QgKGNvbnN0IHN0cmluZ192ZWN0b3Im IHBhdHMgPSBzdHJpbmdfdmVjdG9yICgpLA0KICAJICAgICAgIHVuc2lnbmVk IGludCB0eXBlID0gU1lNVEFCX0FMTF9UWVBFUywNCiAgCSAgICAgICB1bnNp Z25lZCBpbnQgc2NvcGUgPSBTWU1UQUJfQUxMX1NDT1BFUykgY29uc3Q7DQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoN Cg0KDQoNCg0KDQoNCg0KDQoNCg== ---243157704-2055327-1082344643=:22376 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=ChangeLog Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=ChangeLog CSogc3ltdGFiLmNjLCBzeW10YWIuaA0KCShzeW1ib2xfcmVjb3JkOjpzdWJz eW1ib2xzX2xpc3QpOiBOZXcgbWV0aG9kLiBJZGVudGlmaWVzIHN5bWJvbHMN Cgljb250YWluaW5nIC4oeywgbGlrZSBtYXRyaXggZWxlbWVudHMsIHN0cnVj dCBlbGVtZW50cyBhbmQgc28gb24uDQoNCgkoc3ltYm9sX3JlY29yZDo6bWF5 YmVfbGlzdCk6IEluc2VydGVkIGEgY2FsbCB0bw0KCXN1YnN5bWJvbHNfbGlz dC4gTWVyZ2luZyB0aGlzIGFuZCB0aGUgb3JpZ2luYWwgbGlzdCBvZiBzeW1i b2xzLg== ---243157704-2055327-1082344643=:22376--