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 &lt;<a href=3D"mailto:schnoerr@mailzone=
=2Ecom"
              moz-do-not-send=3D"true" class=3D"moz-txt-link-freetext">sc=
[email protected]</a>&gt;
            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 -&gt; '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 &lt;iostream&gt;<br>
                using namespace std;<br>
                <br>
                template &lt;typename Tnum&gt;<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 &lt=
;&lt; "A::B() called" &lt;&lt;
                endl; };<br>
                =C2=A0=C2=A0=C2=A0 };<br>
                =C2=A0=C2=A0=C2=A0 A() { cout &lt;&lt; "A() called" &lt;&=
lt; endl; };<br>
                };<br>
                <br>
                <font color=3D"#0000ff">template &lt;typename Tnum&gt;
                  using Bnest =3D typename A&lt;Tnum&gt;::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&lt;int&gt;::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&lt=
;int&gt;;=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&lt;int&gt;::=
B;=C2=A0 //swig syntax
                error<br>
                <br>
                //via using alias:<br>
                <font color=3D"#0000ff">%template(A_B_i)=C2=A0
                  Bnest&lt;int&gt;;=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&lt;int&gt; 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==--