Re: [personal] Re: swig/python: making a nested class inside templated class accessible by using declaration
Claudius Schnörr <[email protected]> Wed, 20 Mar 2024 02:20:18 +0100
| Newsgroups | gmane.comp.programming.swig |
|---|---|
| Message-ID | <[email protected]> |
This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --===============6651052959222684491== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------VKo1RM0M4y1P0e9qxZMS0aeL" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------VKo1RM0M4y1P0e9qxZMS0aeL Content-Type: multipart/mixed; boundary="------------xyUgIrTGKWb4Lqi4r1WhbRyf"; protected-headers="v1" From: =?UTF-8?Q?Claudius_Schn=C3=B6rr?= <[email protected]> To: William S Fulton <[email protected]> Cc: [email protected] Message-ID: <[email protected]> Subject: Re: [personal] Re: [Swig-user] swig/python: making a nested class inside templated class accessible by using declaration References: <[email protected]> <[email protected]> <CANGqftDdQbmgBtsb02Gi2vTy5m8ZEKcPmpbJX+P+PXa29k3_3w@mail.gmail.com> In-Reply-To: <CANGqftDdQbmgBtsb02Gi2vTy5m8ZEKcPmpbJX+P+PXa29k3_3w@mail.gmail.com> --------------xyUgIrTGKWb4Lqi4r1WhbRyf Content-Type: multipart/mixed; boundary="------------0SrHaLPYqTTwZUPZS4lLcbK8" --------------0SrHaLPYqTTwZUPZS4lLcbK8 Content-Type: multipart/alternative; boundary="------------XnraOcvAI9lUAu0hRTcHesjP" --------------XnraOcvAI9lUAu0hRTcHesjP Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 RGVhciBXaWxsaWFtLA0KDQp0aGFuayB5b3UgdmVyeSBtdWNoIGZvciB5b3VyIGhpbnRzIHdp dGggdGhlIHdyb25nICV0ZW1wbGF0ZSBzdGF0ZW1lbnQuDQoNCkFzIHN1Z2dlc3RlZCBJIHdv cmtlZCBvdXQgYSBidWcgcmVwb3J0IGZvciB0d28gYnVnczoNCg0KaHR0cHM6Ly9naXRodWIu Y29tL3N3aWcvc3dpZy9pc3N1ZXMvMjg0MQ0KDQpDbGF1ZGl1cw0KDQoNCkFtIDE0LjAyLjIw MjQgdW0gMDg6NTggc2NocmllYiBXaWxsaWFtIFMgRnVsdG9uOg0KPg0KPg0KPiBPbiBNb24s IDEgSmFuIDIwMjQgYXQgMjA6MzUsIENsYXVkaXVzIFNjaG7DtnJyIDxzY2hub2VyckBtYWls em9uZS5jb20+IA0KPiB3cm90ZToNCj4NCj4gICAgIFN1YmplY3QgY29ycmVjdGVkIC0+ICdh Y2Nlc3NpYmxlJw0KPg0KPiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KPg0KPiAgICAgSGVsbG8sDQo+DQo+ICAgICBhZnRlciBzd2lnIHJlbGVh c2UgNC4yLjAgaGFzIGJlZW4gc3VibWl0dGVkLCBhbmQgaW1wcm92ZW1lbnRzIGluDQo+ICAg ICAndXNpbmctZGVjbGFyYXRpb25zJyBoYXZlIGJlZW4gc3RhdGVkLCBJIHJ1biBhZ2FpbiBh IHRlc3QgZnJvbQ0KPiAgICAgc29tZSB5ZWFycyBhZ28uDQo+DQo+ICAgICBJIHRlc3RlZCB3 aGV0aGVyIGEgbmVzdGVkIGNsYXNzICdCJyBpbnNpZGUgYSB0ZW1wbGF0ZWQgY2xhc3MgJ0En DQo+ICAgICBjYW4gYmUgbWFkZSBhY2Nlc3NpYmxlIGJ5IGEgZ2xvYmFsIHVzaW5nIHN0YXRl bWVudC4NCj4gICAgIFRoZXJlIGlzIG5vIGxvbmdlciBhIHN5bnRheCBlcnJvciB3aXRoIHN3 aWctNC4yLjAsIGhvd2V2ZXIgaXQNCj4gICAgIHN0aWxsIGRvZXNuJ3Qgd29yay4NCj4gICAg IDEpIENhbiBzb21lb25lIHF1aWNrbHkgY2hlY2sgd2hldGhlciBJIGhhdmUgb3ZlcnNlZW4g c29tZXRoaW5nPw0KPg0KPiAgICAgVGhlIG90aGVyIHdheSB3b3VsZCBiZSB0byBtYWtlIHRo ZSBuZXN0ZWQgY2xhc3MgZ2xvYmFsIGFuZCBkZWNsYXJlDQo+ICAgICBpdCBhcyBhIG5lc3Rl ZCBjbGFzcyBieSBhIGxvY2FsIHVzaW5nLWRlY2xhcmF0aW9uIGluIEEuIFRoaXMNCj4gICAg IHdvcmtzLCBidXQgcmVxdWlyZXMgYmlnZ2VyIHJlY29kaW5ncyBpbiB0aGUgQysrLWxpYnJh cnkgSSB3cmFwIHRvDQo+ICAgICBweXRob24uDQo+ICAgICAyKSBpcyB0aGVyZSBhIHRpbWVs aW5lIGZvciB3aGVuIHB5dGhvbiBzdXBwb3J0IGZvciBuZXN0ZWQgdGVtcGxhdGUNCj4gICAg IGNsYXNzZXMgY2FuIGJlIGV4cGVjdGVkPw0KPg0KPiAgICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAgICAgTmVzdGVkVGVtcGxhdGUuaDoNCj4gICAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4NCj4gICAgICNpbmNsdWRlIDxpb3N0cmVhbT4N Cj4gICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7DQo+DQo+ICAgICB0ZW1wbGF0ZSA8dHlwZW5h bWUgVG51bT4NCj4gICAgIGNsYXNzIEEgew0KPiAgICAgcHVibGljOg0KPiAgICAgwqDCoMKg IGNsYXNzIEIge8KgwqAgLy9uZXN0ZWQgY2xhc3MNCj4gICAgIMKgwqDCoCBwdWJsaWM6DQo+ ICAgICDCoMKgwqDCoMKgwqDCoCBCKCkgeyBjb3V0IDw8ICJBOjpCKCkgY2FsbGVkIiA8PCBl bmRsOyB9Ow0KPiAgICAgwqDCoMKgIH07DQo+ICAgICDCoMKgwqAgQSgpIHsgY291dCA8PCAi QSgpIGNhbGxlZCIgPDwgZW5kbDsgfTsNCj4gICAgIH07DQo+DQo+ICAgICB0ZW1wbGF0ZSA8 dHlwZW5hbWUgVG51bT4gdXNpbmcgQm5lc3QgPSB0eXBlbmFtZSBBPFRudW0+OjpCOw0KPg0K PiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPg0KPiAgICAg TmVzdGVkVGVtcGxhdGUuaToNCj4gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPg0K PiAgICAgJW1vZHVsZSBOZXN0ZWRUZW1wbGF0ZQ0KPg0KPiAgICAgJWZlYXR1cmUgKCJmbGF0 bmVzdGVkIiwxKcKgIEE6OkI7DQo+DQo+ICAgICAlaGVhZGVyICV7DQo+ICAgICAjaW5jbHVk ZSAiTmVzdGVkVGVtcGxhdGUuaCINCj4gICAgICV9DQo+ICAgICAlaW5jbHVkZSAiTmVzdGVk VGVtcGxhdGUuaCINCj4NCj4gICAgIC8vIGV4cGxpY2l0IGluc3RhbnRpYXRpb25zDQo+DQo+ IFJlbmFtZSB0aGUgd3JhcHBlZCBuZXN0ZWQgY2xhc3MgYXMgU1dJRyBjYWxscyB0aGUgZ2Vu ZXJhdGVkIG5lc3RlZCANCj4gY2xhc3MganVzdCBCLg0KPiAlcmVuYW1lKEFfQl9pKSBBPGlu dD46OkI7DQo+DQo+ICAgICAldGVtcGxhdGUoQV9pKcKgwqDCoMKgwqDCoCBBPGludD47wqDC oMKgwqDCoMKgIC8vb2sNCj4NCj4gICAgIC8vdGhpcyBzeW50YXggd291bGQgYmUgcGVyZmVj dCwgaG93ZXZlciBub3Qgc3VwcG9ydGVkIHlldA0KPiAgICAgLy8ldGVtcGxhdGUoQV9pX0Ip wqDCoMKgwqAgQTxpbnQ+OjpCO8KgIC8vc3dpZyBzeW50YXggZXJyb3INCj4NCj4gICAgIC8v dmlhIHVzaW5nIGFsaWFzOg0KPiAgICAgJXRlbXBsYXRlKEFfQl9pKSBCbmVzdDxpbnQ+OyDC oMKgwqDCoMKgIC8vd2l0aCBzd2lnLTQuMi4wLCBubyBzeW50YXggZXJyb3INCj4NCj4gVGhl ICV0ZW1wbGF0ZSBhYm92ZSBkb2Vzbid0IGRvIGFueXRoaW5nIGFzIHRoaXMgaXMgbm90IHdo YXQgc2hvdWxkIGJlIA0KPiBpbnN0YW50aWF0ZWQuIFRoZSBvbmUgYW5kIG9ubHkgdGhpbmcg dG8gaW5zdGFudGlhdGUgaXMgdGhlIHRlbXBsYXRlIA0KPiBBPGludD4gYW5kIHRoYXQgaGFz IGFscmVhZHkgYmVlbiBpbnN0YW50aWF0ZWQgYWJvdmUuIEkgZ3Vlc3MgaXQgb3VnaHQgDQo+ IHRvIHdhcm4gb3IgZXJyb3Igb3V0IHRob3VnaC4gVGhlIGluc3RhbnRpYXRpb24gbmFtZWQg QV9pIGdlbmVyYXRlcyB0aGUgDQo+IG5lc3RlZCBCIGNsYXNzLCBuYW1lZCBzaW1wbHkgYXMg QiwgdGhvdWdoLg0KPiBJJ2QgcmFpc2UgYSBidWcgcmVwb3J0IGluIEdpdGh1YiBhYm91dCB0 aGUgbmVzdGVkIGNsYXNzIGJlaW5nIGNhbGxlZCBBIA0KPiBpbnN0ZWFkIG9mIHNheSBBX0Jf aSB0aG91Z2ggYnkgZGVmYXVsdC4gSSB0aGluayB0aGF0IG1pZ2h0IGJlIGEgYnVnLg0KPg0K PiBXaWxsaWFtDQo= --------------XnraOcvAI9lUAu0hRTcHesjP Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <!DOCTYPE html> <html> <head> <meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF= -8"> </head> <body> <p>Dear William,</p> <p>thank you very much for your hints with the wrong %template statement.</p> <p>As suggested I worked out a bug report for two bugs:<br> </p> <p><a class=3D"moz-txt-link-freetext" href=3D"https://github.com/swig= /swig/issues/2841">https://github.com/swig/swig/issues/2841</a></p> <p>Claudius<br> </p> <p><br> </p> <div class=3D"moz-cite-prefix">Am 14.02.2024 um 08:58 schrieb William= S Fulton:<br> </div> <blockquote type=3D"cite" cite=3D"mid:[email protected]= l.com"> <meta http-equiv=3D"content-type" content=3D"text/html; charset=3DU= TF-8"> <div dir=3D"ltr"> <div dir=3D"ltr"><br> </div> <br> <div class=3D"gmail_quote"> <div dir=3D"ltr" class=3D"gmail_attr">On Mon, 1 Jan 2024 at 20:= 35, Claudius Schn=C3=B6rr <<a href=3D"mailto:schnoerr@mailzone= =2Ecom" moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext">sc= [email protected]</a>> wrote:<br> </div> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);= padding-left:1ex"> <div> <p>Subject corrected -> 'accessible'</p> <p>-------------------------------------------<br> </p> <p>Hello, <br> </p> <p>after swig release 4.2.0 has been submitted, and improvements in 'using-declarations' have been stated, I run again a test from some years ago.</p> <p>I tested whether a nested class 'B' inside a templated class 'A' can be made accessible by a global using statement.<br> There is no longer a syntax error with swig-4.2.0, however it still doesn't work.<br> 1) Can someone quickly check whether I have overseen something?<br> </p> <p>The other way would be to make the nested class global and declare it as a nested class by a local using-declaration in A. This works, but requires bigger recodings in the C++-library I wrap to python.<br> 2) is there a timeline for when python support for nested template classes can be expected?<br> </p> <p>--------------------------------------------------------= -------------------------------------------------------------------------= ----------------<br> NestedTemplate.h:<br> -------------------------<br> </p> <p>#include <iostream><br> using namespace std;<br> <br> template <typename Tnum><br> class A {<br> public:<br> =C2=A0=C2=A0=C2=A0 class B {=C2=A0=C2=A0 //nested class<b= r> =C2=A0=C2=A0=C2=A0 public:<br> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 B() { cout <= ;< "A::B() called" << endl; };<br> =C2=A0=C2=A0=C2=A0 };<br> =C2=A0=C2=A0=C2=A0 A() { cout << "A() called" <&= lt; endl; };<br> };<br> <br> <font color=3D"#0000ff">template <typename Tnum> using Bnest =3D typename A<Tnum>::B;</font><br> </p> <p>--------------------------------------------------------= -------------------------------------------------------------------------= ----------------</p> <p>NestedTemplate.i:<br> ------------------------<br> </p> <p>%module NestedTemplate<br> <br> %feature ("flatnested",1)=C2=A0 A::B;<br> <br> %header %{<br> #include "NestedTemplate.h"<br> %}<br> %include "NestedTemplate.h"<br> <br> // explicit instantiations<br> <br> </p> </div> </blockquote> <div>Rename the wrapped nested class as SWIG calls the generated nested class just B.<br> </div> <div>%rename(A_B_i) A<int>::B;<br> =C2=A0</div> <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);= padding-left:1ex"> <div> <p> %template(A_i)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 A<= ;int>;=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 //ok<br> <br> //this syntax would be perfect, however not supported yet<br> //%template(A_i_B)=C2=A0=C2=A0=C2=A0=C2=A0 A<int>::= B;=C2=A0 //swig syntax error<br> <br> //via using alias:<br> <font color=3D"#0000ff">%template(A_B_i)=C2=A0 Bnest<int>;=C2=A0</font>=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 //with swig-4.2.0, no syntax error<br> </p> </div> </blockquote> <div>The %template above doesn't do anything as this is not what should be instantiated. The one and only thing to instantiate is the template A<int> and that has already been instantiated above. I guess it ought to warn or error out though. The instantiation named A_i generates the nested B class, named simply as B, though.<br> </div> <div>=C2=A0</div> I'd raise a bug report in Github about the nested class being called A instead of say A_B_i though by default. I think that might be a bug.=C2=A0</div> <div class=3D"gmail_quote"><br> </div> <div class=3D"gmail_quote">William<br> </div> </div> </blockquote> </body> </html> --------------XnraOcvAI9lUAu0hRTcHesjP-- --------------0SrHaLPYqTTwZUPZS4lLcbK8 Content-Type: application/pgp-keys; name="OpenPGP_0x78764B93596D9DE5.asc" Content-Disposition: attachment; filename="OpenPGP_0x78764B93596D9DE5.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- xjMEZfZ7LBYJKwYBBAHaRw8BAQdAvOGn6JrNmcfxYk4/B36DIDs45veHNELKJuAi g35QtBXNFXNjaG5vZXJyQG1haWx6b25lLmNvbcKZBBMWCgBBFiEEKGG4SIJ3eQM/ dpCTeHZLk1ltneUFAmX2eywCGwMFCUsC8FQFCwkIBwICIgIGFQoJCAsCBBYCAwEC HgcCF4AACgkQeHZLk1ltneXJiAEAoV2Hu6nHEPDEQdchpljznJ0X+FX6f1TMlGxJ UW1jyTkBAK6WsGBxN9NHr/QdUds6Qek+oBTdurKyhesz2LImsZgBzSBDbGF1ZGl1 cyA8c2Nobm9lcnJAbWFpbHpvbmUuY29tPsJ4BDAWCgAgFiEEKGG4SIJ3eQM/dpCT eHZLk1ltneUFAmX2gcMCHSAACgkQeHZLk1ltneVl6AEAr2WKYnnr4VsoHEmlI6FJ DDUWzKXit1ZQ7TMiy3BT/eIBAJr6583h3iSXtamHsHi0CNl99toY3n9qZFBaBgE7 ynYJwpkEExYKAEEWIQQoYbhIgnd5Az92kJN4dkuTWW2d5QUCZfZ8tAIbAwUJSwLw VAULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRB4dkuTWW2d5fv9AQDu0eia THaw6cYUcPQ3lAy3+XyceElXNQyBh/R1ifSyawD8Dj69h40PoSpOpjfdszMD0fqp VckqjD8kgktr1ox5swTNLXNjaG5vZXJyLm1haWx6b25lLmNvbSA8c2Nobm9lcnJA bWFpbHpvbmUuY29tPsKZBBMWCgBBFiEEKGG4SIJ3eQM/dpCTeHZLk1ltneUFAmX2 ggQCGwMFCUsC8FQFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQeHZLk1lt neXthQD+I7b52cvcyKi9XhEOWMw/1Q1CbPyN8v8Y6lzYF9c3fSAA/3Mla0RN+GIH Bww/EqvoO5sAXReiSzByR700HChLB/MBzjgEZfZ7LBIKKwYBBAGXVQEFAQEHQM7w B0V9O4I2yUNu8TGaGIE7qnJkS1ZbAKpXwmluGngNAwEIB8J+BBgWCgAmFiEEKGG4 SIJ3eQM/dpCTeHZLk1ltneUFAmX2eywCGwwFCUsC8FQACgkQeHZLk1ltneUApAD+ NbpvpMvTeSufr9TYnapXWAEKjfAMAA0z9/rcxdUnavoBAKPu56tER1hot6YE/zlU xPnh4lbF8I296ZuxSKyeB9sC =3Ds7K1 -----END PGP PUBLIC KEY BLOCK----- --------------0SrHaLPYqTTwZUPZS4lLcbK8-- --------------xyUgIrTGKWb4Lqi4r1WhbRyf-- --------------VKo1RM0M4y1P0e9qxZMS0aeL Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- wnsEABYIACMWIQQoYbhIgnd5Az92kJN4dkuTWW2d5QUCZfo50gUDAAAAAAAKCRB4dkuTWW2d5QII AP44wPEHEfpi97+VL7kr1l8NQTVG7mnFc0g1ChyvOH1/+wD+Mpi5ikhWwYI0WSKkkc50E/b/H2Bn ewn45xg8dcdUtAQ= =VH3J -----END PGP SIGNATURE----- --------------VKo1RM0M4y1P0e9qxZMS0aeL-- --===============6651052959222684491== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline --===============6651052959222684491== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Swig-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/swig-user --===============6651052959222684491==--