Re: C++ to Java: using QString
"Alessandro L." <[email protected]> Thu, 2 May 2024 09:47:35 +0200
| Newsgroups | gmane.comp.programming.swig |
|---|---|
| Message-ID | <CAN2SuiiGgom6Mch=4bL-7sy0D3CEUTzr=bmbBGS5WQq1dErgAg@mail.gmail.com> |
--===============2205800250391859106==
Content-Type: multipart/alternative; boundary="000000000000af567b061773d128"
--000000000000af567b061773d128
Content-Type: text/plain; charset="UTF-8"
Hello Mario,
thanks for the suggestions.
I thought a little bit and realized that maybe wrapping these methods into
methods that take and return std::string would be easier.
Given the method:
QString Foo(Qstring arg);
I could do something like
std::string Foo(std::string arg){
Qstring qArg = QString::fromStdString(arg)
Qstring ret = Foo(qArg);
return ret.toStdString();
}
I would have some overhead but this shouldn't be a problem for my
application since it is a batch.
Is there any smart way to do this with SWIG without changing the cpp source
file?
Thanks,
Alessandro Lensi
Il giorno mer 1 mag 2024 alle ore 14:14 Mario Emmenlauer <
[email protected]> ha scritto:
>
> hi,
>
> On 30.04.24 08:55, Alessandro L. wrote:
> > I have some methods in C++ that return and take as arguments instances
> of QString.
> > I'd like to understand if there are any typesettings for QString in the
> new SWIG.
> >
> > If not, could you give some advice on what to read and what could be the
> steps to do so?
> > I am not new at SWIG, but it's been a while since the last time I used
> it and I am trying to remember things :)
>
> I think the easiest may be to look at the definitions for std::string,
> and copy that into a new definition file for QString. Then adapt step
> by step for your needs? It will require you to investigate quite a
> number of details from the std::string definitions, but at least you
> would start off with something working...
>
> https://github.com/swig/swig/blob/master/Lib/java/std_string.i
>
> That's at least what I would do. If you prefer, there seem to be some
> open source projects that already have bindings. I did not check or use
> this, but you could take a look i.e. at
> https://github.com/osmandapp/OsmAnd-core/blob/master/swig/java/QString.i
>
> All the best,
>
> Mario
>
>
--000000000000af567b061773d128
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div dir=3D"ltr"><div class=3D"gmail_default" style=3D"fon=
t-family:verdana,sans-serif"><br></div></div><div><br></div><div><div class=
=3D"gmail_default" style=3D"font-family:verdana,sans-serif">Hello Mario,</d=
iv><div class=3D"gmail_default" style=3D"font-family:verdana,sans-serif">th=
anks for the suggestions.</div><div class=3D"gmail_default" style=3D"font-f=
amily:verdana,sans-serif"><br></div><div class=3D"gmail_default" style=3D"f=
ont-family:verdana,sans-serif">I thought a little bit and realized that may=
be wrapping these methods into methods that take and return std::string wou=
ld be easier.</div><div class=3D"gmail_default" style=3D"font-family:verdan=
a,sans-serif"><br></div><div class=3D"gmail_default" style=3D"font-family:v=
erdana,sans-serif">Given the method:</div><div class=3D"gmail_default" styl=
e=3D"font-family:verdana,sans-serif"><br></div><div class=3D"gmail_default"=
style=3D"font-family:verdana,sans-serif">QString Foo(Qstring arg);</div><d=
iv class=3D"gmail_default" style=3D"font-family:verdana,sans-serif"><br></d=
iv><div class=3D"gmail_default" style=3D"font-family:verdana,sans-serif">I =
could do something like</div><div class=3D"gmail_default" style=3D"font-fam=
ily:verdana,sans-serif"><br></div><div class=3D"gmail_default" style=3D"fon=
t-family:verdana,sans-serif">std::string Foo(std::string arg){</div><div cl=
ass=3D"gmail_default" style=3D"font-family:verdana,sans-serif">=C2=A0 =C2=
=A0Qstring qArg =3D QString::fromStdString(arg)</div><div class=3D"gmail_de=
fault" style=3D"font-family:verdana,sans-serif">=C2=A0 =C2=A0Qstring ret =
=3D Foo(qArg);</div><div class=3D"gmail_default" style=3D"font-family:verda=
na,sans-serif">=C2=A0 =C2=A0return ret.toStdString();</div><div class=3D"gm=
ail_default" style=3D"font-family:verdana,sans-serif">}</div><div class=3D"=
gmail_default" style=3D"font-family:verdana,sans-serif"><br></div><div clas=
s=3D"gmail_default" style=3D"font-family:verdana,sans-serif"><br></div><div=
class=3D"gmail_default" style=3D"font-family:verdana,sans-serif">I would h=
ave some overhead but this shouldn't be a problem for my application si=
nce it is a batch.</div><div class=3D"gmail_default" style=3D"font-family:v=
erdana,sans-serif"><br></div><div class=3D"gmail_default" style=3D"font-fam=
ily:verdana,sans-serif">Is there any smart way to do this with SWIG without=
changing the cpp source file?</div><div class=3D"gmail_default" style=3D"f=
ont-family:verdana,sans-serif"><br></div><div class=3D"gmail_default" style=
=3D"font-family:verdana,sans-serif">Thanks,</div><div class=3D"gmail_defaul=
t" style=3D"font-family:verdana,sans-serif">Alessandro Lensi</div><div clas=
s=3D"gmail_default" style=3D"font-family:verdana,sans-serif"><br></div><br>=
</div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">=
Il giorno mer 1 mag 2024 alle ore 14:14 Mario Emmenlauer <<a href=3D"mai=
lto:[email protected]">[email protected]</a>> ha scritto:<br></div><=
blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l=
eft:1px solid rgb(204,204,204);padding-left:1ex"><br>
hi,<br>
<br>
On 30.04.24 08:55, Alessandro L. wrote:<br>
> I have some methods in=C2=A0C++ that return and take as arguments inst=
ances of QString.<br>
> I'd like to understand if there are any typesettings for QString i=
n the new SWIG.<br>
> <br>
> If not, could you give some advice on what to read and what could be t=
he steps to do so?<br>
> I am not new at SWIG, but it's been a while since the last time I =
used it and I am trying to remember things :)<br>
<br>
I think the easiest may be to look at the definitions for std::string,<br>
and copy that into a new definition file for QString. Then adapt step<br>
by step for your needs? It will require you to investigate quite a<br>
number of details from the std::string definitions, but at least you<br>
would start off with something working...<br>
<br>
<a href=3D"https://github.com/swig/swig/blob/master/Lib/java/std_string.i" =
rel=3D"noreferrer" target=3D"_blank">https://github.com/swig/swig/blob/mast=
er/Lib/java/std_string.i</a><br>
<br>
That's at least what I would do. If you prefer, there seem to be some<b=
r>
open source projects that already have bindings. I did not check or use<br>
this, but you could take a look i.e. at<br>
<a href=3D"https://github.com/osmandapp/OsmAnd-core/blob/master/swig/java/Q=
String.i" rel=3D"noreferrer" target=3D"_blank">https://github.com/osmandapp=
/OsmAnd-core/blob/master/swig/java/QString.i</a><br>
<br>
All the best,<br>
<br>
=C2=A0 =C2=A0 =C2=A0Mario<br>
<br>
</blockquote></div></div>
--000000000000af567b061773d128--
--===============2205800250391859106==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--===============2205800250391859106==
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
--===============2205800250391859106==--