Re: C# issue with module dependency

Christophe CALMEJANE via Swig-user <[email protected]> Wed, 4 Dec 2024 16:27:23 +0000
Newsgroups gmane.comp.programming.swig
Message-ID <PR0P264MB22044DD7A28145C75EB04E11DF372@PR0P264MB2204.FRAP264.PROD.OUTLOOK.COM>
--===============6148423824797536915==
Content-Language: fr-FR
Content-Type: multipart/alternative;
	boundary="_000_PR0P264MB22044DD7A28145C75EB04E11DF372PR0P264MB2204FRAP_"

--_000_PR0P264MB22044DD7A28145C75EB04E11DF372PR0P264MB2204FRAP_
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

Ok nevermind, we were not looking at the correct version of the documentati=
on (google search pointed to 2.0). I suppose there is nothing new than defi=
ning the method as public.
I was hoping maybe SWIG could detect the =93import=94 directive in moduleB.=
i file and use something different than ModA.getCPtr() but I guess it=92s w=
ay too complicated.
We=92ll go for public symbol then, except if somebody has a better approach=
.

Thanks,
Chris




De : Christophe CALMEJANE via Swig-user <[email protected]>
Date : mercredi, 4 d=E9cembre 2024 =E0 17:17
=C0 : [email protected] <[email protected]>
Objet : [Swig-user] C# issue with module dependency
Hi,

Context:
We have a few C++ libraries that are wrapped to C# using SWIG. Each library=
 being a separate module (each with its own .i file). Some wrapped C++ libr=
aries depend on other wrapped C++ libraries, so our module definition impor=
t other modules.
We used to deploy all generated C# files at once (all modules together) so =
they can be imported all directly in a C# project. This worked fine without=
 any specific issue.

Change:
We are now deploying each individual module as nuget, meaning each module i=
s in its own assembly.

Issue:
If one of the module=92s method takes a l-value parameter, the getCPtr meth=
od is used but it=92s not accessible (declared =93internal=94).

Example:
moduleA.hpp:
#pragma once

#include <cstdint>

class ModA
{
public:
                ModA() =3D default;
                ~ModA() =3D default;

                std::uint8_t getA() const noexcept
                {
                                return _a;
                }

                void setA(std::uint8_t const a) noexcept
                {
                                _a =3D a;
                }

                ModA(ModA const&) =3D default;

private:
                std::uint8_t _a{ 0 };
};

moduleA.i:
%module moduleA
%include <stdint.i>

%include "moduleA.hpp"


moduleB.hpp:
#pragma once

#include <moduleA.hpp>

class ModB
{
public:
                ModB() =3D default;
                ~ModB() =3D default;

                bool testModuleA(ModA const& moduleA) const noexcept
                {
                                return moduleA.getA() !=3D 0;
                }

                ModB(ModB const&) =3D default;

private:
};


moduleB.i:
%module moduleB
%include <stdint.i>

%import "moduleA/file.i"

%include "moduleB.hpp"

ModC.cs:
=85
  public bool testModuleA(ModA moduleA) {
    bool ret =3D moduleBPINVOKE.ModB_testModuleA(swigCPtr, ModA.getCPtr(mod=
uleA));
    if (moduleBPINVOKE.SWIGPendingException.Pending) throw moduleBPINVOKE.S=
WIGPendingException.Retrieve();
    return ret;
  }
=85

ModA.getCPtr is not accessible here as it=92s part of a different assembly.

I did find some related question but from 2011, and I was wondering if ther=
e is a new way to properly solve that issue (https://sourceforge.net/p/swig=
/mailman/swig-devel/thread/[email protected]/), or at le=
ast what is the recommended way to solve that?

Many thanks

Christophe CALMEJANE
Head of Technology, Middleware & Tools

[Image supprim=E9e par l'exp=E9diteur.]
13 Rue Levacher Cintrat, Parc Fontaine de Jouvence - 91460 Marcoussis - Fra=
nce
Office  : +33 1 70 84 08 98

l-acoustics.com
[Image supprim=E9e par l'exp=E9diteur.]<https://cloud.letsignit.com/collect=
/bc/64a7be18452a27db4360347b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-t=
aqTH6nWN6ZOM_Zy_q5b3x-VHo3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0mRKcAbIcY9=
EZYZKbviCE5yGd3tnlp7kBBVIKkAYwW0ZOXmUKQMhhzKNAXYq6Sn1j2xyBLWvF02lAtBLfioAwT=
>  [Image supprim=E9e par l'exp=E9diteur.] <https://cloud.letsignit.com/col=
lect/bc/64a7be18452a27db4360347b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658=
o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0mRKcAb=
IcY9EZYZKbviCE5krCQI7iOjKL9rcShM_dPkWyzshVh0h15MJjhKYhaTyzuqZ4ie7sno56jroIN=
9ZSo>   [Image supprim=E9e par l'exp=E9diteur.] <https://cloud.letsignit.co=
m/collect/bc/64a7be18452a27db4360347b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZM=
r6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy02=
FJau7ravxn65ADDCFsrjQ5aqYW9g6SQ8F69CCS6-v-AA2tKPDXmcvjvjLIIjvySoQPH0hdhFsDT=
u3osl-Z7y>   [Image supprim=E9e par l'exp=E9diteur.] <https://cloud.letsign=
it.com/collect/bc/64a7be18452a27db4360347b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAe=
rqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_=
8sy0LNijUNdUicuCOSnTBvePS5vNpnlj3JUYx_sJFFyu5S6oHykNMLGn_xbBjY4CKnQo=3D>   =
[Image supprim=E9e par l'exp=E9diteur.] <https://cloud.letsignit.com/collec=
t/bc/64a7be18452a27db4360347b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-=
taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy1zNTgIGfoG=
fk7_Je1fJuaspseiI_F2ZmkaC7rRCL-e5GCRWQurIaztOnMVwTwecp8=3D>   [Image suppri=
m=E9e par l'exp=E9diteur.] <https://cloud.letsignit.com/collect/bc/64a7be18=
452a27db4360347b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM=
_Zy_q5b3x-VHo3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0mRKcAbIcY9EZYZKbviCE5D=
R33ee51F4MQQyP1gffWzUpshOs9woJxNJnwLb0kZ8ZXn0fkAx706ZFMBZcEuYiI>


Si vous recevez ce mail pendant votre p=E9riode de repos, vous n=92=EAtes p=
as tenu d=92y r=E9pondre imm=E9diatement.
If you receive this email during your time off, you are not required to res=
pond immediately.

[Image supprim=E9e par l'exp=E9diteur.]



--_000_PR0P264MB22044DD7A28145C75EB04E11DF372PR0P264MB2204FRAP_
Content-Type: text/html; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DWindows-1=
252">
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Verdana;
	panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
	{font-family:Aptos;
	panose-1:2 11 0 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	font-size:11.0pt;
	font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#467886;
	text-decoration:underline;}
span.EmailStyle21
	{mso-style-type:personal-reply;
	font-family:"Aptos",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:11.0pt;
	mso-ligatures:none;}
@page WordSection1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"FR" link=3D"#467886" vlink=3D"#96607D" style=3D"word-wrap:bre=
ak-word">
<div class=3D"WordSection1">
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-fareast-language:E=
N-US">Ok nevermind, we were not looking at the correct version of the docum=
entation (google search pointed to 2.0). I suppose there is nothing new tha=
n defining the method as public.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-fareast-language:E=
N-US">I was hoping maybe SWIG could detect the =93import=94 directive in mo=
duleB.i file and use something different than ModA.getCPtr() but I guess it=
=92s way too complicated.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-fareast-language:E=
N-US">We=92ll go for public symbol then, except if somebody has a better ap=
proach.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-fareast-language:E=
N-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-fareast-language:E=
N-US">Thanks,<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-fareast-language:E=
N-US">Chris<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-fareast-language:E=
N-US"><o:p>&nbsp;</o:p></span></p>
<div>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"display:none"><o:p>&nb=
sp;</o:p></span></p>
<table class=3D"MsoNormalTable" border=3D"0" cellspacing=3D"0" cellpadding=
=3D"0" width=3D"0">
<tbody>
<tr>
<td style=3D"padding:0cm 0cm 0cm 0cm">
<div id=3D"LSI_marker">
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:1.0pt">&nbsp=
;<o:p></o:p></span></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"mso-fareast-language:E=
N-US"><o:p>&nbsp;</o:p></span></p>
<div id=3D"mail-editor-reference-message-container">
<div>
<div>
<div style=3D"border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm =
0cm 0cm">
<p class=3D"MsoNormal" style=3D"margin-bottom:12.0pt"><b><span style=3D"fon=
t-size:12.0pt;color:black">De&nbsp;:
</span></b><span style=3D"font-size:12.0pt;color:black">Christophe CALMEJAN=
E via Swig-user &lt;[email protected]&gt;<br>
<b>Date&nbsp;: </b>mercredi, 4 d=E9cembre 2024 =E0 17:17<br>
<b>=C0&nbsp;: </b>[email protected] &lt;[email protected]=
eforge.net&gt;<br>
<b>Objet&nbsp;: </b>[Swig-user] C# issue with module dependency<o:p></o:p><=
/span></p>
</div>
<div>
<p class=3D"MsoNormal">Hi,<o:p></o:p></p>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-US">Context</span></b><span lang=
=3D"EN-US">:</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">We have a few C++ libraries tha=
t are wrapped to C# using SWIG. Each library being a separate module (each =
with its own .i file). Some wrapped C++ libraries depend on other wrapped C=
++ libraries, so our module definition
 import other modules.</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">We used to deploy all generated=
 C# files at once (all modules together) so they can be imported all direct=
ly in a C# project. This worked fine without any specific issue.</span><o:p=
></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-US">Change</span></b><span lang=
=3D"EN-US">:</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">We are now deploying each indiv=
idual module as nuget, meaning each module is in its own assembly.</span><o=
:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-US">Issue</span></b><span lang=
=3D"EN-US">:</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">If one of the module=92s method=
 takes a l-value parameter, the getCPtr method is used but it=92s not acces=
sible (declared =93internal=94).</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-US">Example</span></b><span lang=
=3D"EN-US">:</span><o:p></o:p></p>
<p class=3D"MsoNormal"><i><u><span lang=3D"EN-US">moduleA.hpp</span></u></i=
><span lang=3D"EN-US">:</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">#p=
ragma once</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">#i=
nclude &lt;cstdint&gt;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">cl=
ass ModA</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">{<=
/span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">pu=
blic:</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; ModA() =3D default;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; ~ModA() =3D default;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; std::uint8_t getA() const noexcept</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; {</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return _a;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; }</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; void setA(std::uint8_t const a) noexcept</span><o:p></o:p></p=
>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; {</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _a =3D a;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; }</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; ModA(ModA const&amp;) =3D default;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">pr=
ivate:</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; std::uint8_t _a{ 0 };</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">};=
</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><i><u><span lang=3D"EN-US">moduleA.i</span></u></i><=
span lang=3D"EN-US">:</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%m=
odule moduleA</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%i=
nclude &lt;stdint.i&gt;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%i=
nclude &quot;moduleA.hpp&quot;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><i><u><span lang=3D"EN-US">moduleB.hpp</span></u></i=
><span lang=3D"EN-US">:</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">#p=
ragma once</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">#i=
nclude &lt;moduleA.hpp&gt;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">cl=
ass ModB</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">{<=
/span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">pu=
blic:</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; ModB() =3D default;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; ~ModB() =3D default;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; bool testModuleA(ModA const&amp; moduleA) const noexcept</spa=
n><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; {</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return moduleA.getA() !=3D 0;</span><o:p=
></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; }</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp; ModB(ModB const&amp;) =3D default;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">pr=
ivate:</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">};=
</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><i><u><span lang=3D"EN-US">moduleB.i</span></u></i><=
span lang=3D"EN-US">:</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%m=
odule moduleB</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%i=
nclude &lt;stdint.i&gt;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%i=
mport &quot;moduleA/file.i&quot;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%i=
nclude &quot;moduleB.hpp&quot;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><i><u><span lang=3D"EN-US">ModC.cs</span></u></i><sp=
an lang=3D"EN-US">:</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">=
=85</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp; public bool testModuleA(ModA moduleA) {</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp; bool ret =3D moduleBPINVOKE.ModB_testModuleA(swigCPtr,
<b>ModA.getCPtr</b>(moduleA));</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp; if (moduleBPINVOKE.SWIGPendingException.Pending) throw mod=
uleBPINVOKE.SWIGPendingException.Retrieve();</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp; return ret;</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp; }</span><o:p></o:p></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">=
=85</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">ModA.getCPtr is not accessible =
here as it=92s part of a different assembly.</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">I did find some related questio=
n but from 2011, and I was wondering if there is a new way to properly solv=
e that issue (<a href=3D"https://sourceforge.net/p/swig/mailman/swig-devel/=
thread/[email protected]/">https://sourceforge.net/p/swi=
g/mailman/swig-devel/thread/[email protected]/</a>),
 or at least what is the recommended way to solve that?</span><o:p></o:p></=
p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">Many thanks</span><o:p></o:p></=
p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">&nbsp;</span><o:p></o:p></p>
<div>
<table class=3D"MsoNormalTable" border=3D"0" cellspacing=3D"0" cellpadding=
=3D"0" width=3D"550" style=3D"width:412.5pt">
<tbody>
<tr>
<td style=3D"padding:0cm 0cm 0cm 0cm">
<p class=3D"MsoNormal"><b><span style=3D"font-size:10.0pt;font-family:&quot=
;Verdana&quot;,sans-serif;color:#575756">Christophe CALMEJANE</span></b><o:=
p></o:p></p>
</td>
</tr>
<tr>
<td style=3D"padding:0cm 0cm 0cm 0cm">
<p class=3D"MsoNormal"><span lang=3D"EN-US" style=3D"font-size:9.0pt;font-f=
amily:&quot;Verdana&quot;,sans-serif;color:#575756">Head of Technology, Mid=
dleware &amp; Tools<br>
<br>
</span><span style=3D"font-size:9.0pt;font-family:&quot;Verdana&quot;,sans-=
serif;color:#575756;border:solid windowtext 1.0pt;padding:0cm"><img border=
=3D"0" width=3D"120" height=3D"120" style=3D"width:1.25in;height:1.25in" id=
=3D"_x0000_i1032" src=3D"cid:~WRD1309.jpg" alt=3D"Image supprim=E9e par l'e=
xp=E9diteur."></span><o:p></o:p></p>
</td>
</tr>
<tr>
<td style=3D"padding:0cm 0cm 0cm 0cm">
<p class=3D"MsoNormal"><span style=3D"font-size:8.0pt;font-family:&quot;Ver=
dana&quot;,sans-serif;color:#575756">13 Rue Levacher Cintrat, Parc Fontaine=
 de Jouvence - 91460 Marcoussis - France<br>
Office &nbsp;:&nbsp;+33 1 70 84 08 98<br>
&nbsp;</span><o:p></o:p></p>
</td>
</tr>
<tr>
<td style=3D"padding:0cm 0cm 0cm 0cm">
<p class=3D"MsoNormal"><span style=3D"font-size:9.0pt;font-family:&quot;Ver=
dana&quot;,sans-serif;color:#575756">l-acoustics.com
<br>
<a href=3D"https://cloud.letsignit.com/collect/bc/64a7be18452a27db4360347b?=
p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXR=
xrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0mRKcAbIcY9EZYZKbviCE5yGd3tnlp7kBBVIKkAY=
wW0ZOXmUKQMhhzKNAXYq6Sn1j2xyBLWvF02lAtBLfioAwT"><span style=3D"color:#57575=
6;text-decoration:none"><span style=3D"color:blue;border:solid windowtext 1=
.0pt;padding:0cm"><img border=3D"0" width=3D"12" height=3D"12" style=3D"wid=
th:.125in;height:.125in" id=3D"_x0000_i1031" src=3D"cid:~WRD1309.jpg" alt=
=3D"Image supprim=E9e par l'exp=E9diteur."></span></span></a>&nbsp;
<a href=3D"https://cloud.letsignit.com/collect/bc/64a7be18452a27db4360347b?=
p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXR=
xrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0mRKcAbIcY9EZYZKbviCE5krCQI7iOjKL9rcShM_=
dPkWyzshVh0h15MJjhKYhaTyzuqZ4ie7sno56jroIN9ZSo">
<span style=3D"color:#575756;text-decoration:none"><span style=3D"color:blu=
e;border:solid windowtext 1.0pt;padding:0cm"><img border=3D"0" width=3D"12"=
 height=3D"12" style=3D"width:.125in;height:.125in" id=3D"_x0000_i1030" src=
=3D"cid:~WRD1309.jpg" alt=3D"Image supprim=E9e par l'exp=E9diteur."></span>=
</span></a>&nbsp;
<a href=3D"https://cloud.letsignit.com/collect/bc/64a7be18452a27db4360347b?=
p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXR=
xrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy02FJau7ravxn65ADDCFsrjQ5aqYW9g6SQ8F69CCS=
6-v-AA2tKPDXmcvjvjLIIjvySoQPH0hdhFsDTu3osl-Z7y">
<span style=3D"color:#575756;text-decoration:none"><span style=3D"color:blu=
e;border:solid windowtext 1.0pt;padding:0cm"><img border=3D"0" width=3D"12"=
 height=3D"12" style=3D"width:.125in;height:.125in" id=3D"_x0000_i1029" src=
=3D"cid:~WRD1309.jpg" alt=3D"Image supprim=E9e par l'exp=E9diteur."></span>=
</span></a>&nbsp;
<a href=3D"https://cloud.letsignit.com/collect/bc/64a7be18452a27db4360347b?=
p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXR=
xrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0LNijUNdUicuCOSnTBvePS5vNpnlj3JUYx_sJFFy=
u5S6oHykNMLGn_xbBjY4CKnQo=3D">
<span style=3D"color:#575756;text-decoration:none"><span style=3D"color:blu=
e;border:solid windowtext 1.0pt;padding:0cm"><img border=3D"0" width=3D"12"=
 height=3D"12" style=3D"width:.125in;height:.125in" id=3D"_x0000_i1028" src=
=3D"cid:~WRD1309.jpg" alt=3D"Image supprim=E9e par l'exp=E9diteur."></span>=
</span></a>&nbsp;
<a href=3D"https://cloud.letsignit.com/collect/bc/64a7be18452a27db4360347b?=
p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXR=
xrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy1zNTgIGfoGfk7_Je1fJuaspseiI_F2ZmkaC7rRCL=
-e5GCRWQurIaztOnMVwTwecp8=3D">
<span style=3D"color:#575756;text-decoration:none"><span style=3D"color:blu=
e;border:solid windowtext 1.0pt;padding:0cm"><img border=3D"0" width=3D"12"=
 height=3D"12" style=3D"width:.125in;height:.125in" id=3D"_x0000_i1027" src=
=3D"cid:~WRD1309.jpg" alt=3D"Image supprim=E9e par l'exp=E9diteur."></span>=
</span></a>&nbsp;
<a href=3D"https://cloud.letsignit.com/collect/bc/64a7be18452a27db4360347b?=
p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXR=
xrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0mRKcAbIcY9EZYZKbviCE5DR33ee51F4MQQyP1gf=
fWzUpshOs9woJxNJnwLb0kZ8ZXn0fkAx706ZFMBZcEuYiI">
<span style=3D"color:#575756;text-decoration:none"><span style=3D"color:blu=
e;border:solid windowtext 1.0pt;padding:0cm"><img border=3D"0" width=3D"12"=
 height=3D"12" style=3D"width:.125in;height:.125in" id=3D"_x0000_i1026" src=
=3D"cid:~WRD1309.jpg" alt=3D"Image supprim=E9e par l'exp=E9diteur."></span>=
</span></a></span><o:p></o:p></p>
</td>
</tr>
</tbody>
</table>
<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt">&nbsp;</span><o:p><=
/o:p></p>
<p><span style=3D"font-size:7.0pt;font-family:&quot;Verdana&quot;,sans-seri=
f;color:#575756">Si vous recevez ce mail pendant votre p=E9riode de repos, =
vous n=92=EAtes pas tenu d=92y r=E9pondre imm=E9diatement.<br>
</span><span lang=3D"EN-US" style=3D"font-size:7.0pt;font-family:&quot;Verd=
ana&quot;,sans-serif;color:#575756">If you receive this email during your t=
ime off, you are not required to respond immediately.
</span><o:p></o:p></p>
<p style=3D"margin:.1pt;max-height:170.05px"><span style=3D"border:solid wi=
ndowtext 1.0pt;padding:0cm"><img border=3D"0" width=3D"339" height=3D"170" =
style=3D"width:3.5312in;height:1.7708in" id=3D"_x0000_i1025" src=3D"cid:~WR=
D1309.jpg" alt=3D"Image supprim=E9e par l'exp=E9diteur."></span><o:p></o:p>=
</p>
<table class=3D"MsoNormalTable" border=3D"0" cellspacing=3D"0" cellpadding=
=3D"0" width=3D"0">
<tbody>
<tr>
<td style=3D"padding:0cm 0cm 0cm 0cm">
<div id=3D"LSI_marker">
<p class=3D"MsoNormal"><span style=3D"font-size:1.0pt">&nbsp;</span><o:p></=
o:p></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p class=3D"MsoNormal">&nbsp;<o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>

--_000_PR0P264MB22044DD7A28145C75EB04E11DF372PR0P264MB2204FRAP_--


--===============6148423824797536915==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============6148423824797536915==
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

--===============6148423824797536915==--