C# issue with module dependency

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

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

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

[https://storage.letsignit.com/5e205f9364ef1e0007df8dd1/1579318688094003965=
51428155263482193943.png]
13 Rue Levacher Cintrat, Parc Fontaine de Jouvence - 91460 Marcoussis - Fra=
nce
Office  : +33 1 70 84 08 98

l-acoustics.com
[https://storage.letsignit.com/5e205f9364ef1e0007df8dd1/3482866732572454930=
1384413623356639143.png]<https://cloud.letsignit.com/collect/bc/64a7be18452=
a27db4360347b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy=
_q5b3x-VHo3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0mRKcAbIcY9EZYZKbviCE5yGd3=
tnlp7kBBVIKkAYwW0ZOXmUKQMhhzKNAXYq6Sn1j2xyBLWvF02lAtBLfioAwT>  [https://sto=
rage.letsignit.com/5e205f9364ef1e0007df8dd1/1781706188661573686227659322466=
99512081.png] <https://cloud.letsignit.com/collect/bc/64a7be18452a27db43603=
47b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo=
3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0mRKcAbIcY9EZYZKbviCE5krCQI7iOjKL9rc=
ShM_dPkWyzshVh0h15MJjhKYhaTyzuqZ4ie7sno56jroIN9ZSo>   [https://storage.lets=
ignit.com/5e205f9364ef1e0007df8dd1/284525336458572053570367734995237269837.=
png] <https://cloud.letsignit.com/collect/bc/64a7be18452a27db4360347b?p=3DU=
sTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXRxrOe-=
IptTyhxCN2Rh9feXLiyWXdTMD1_8sy02FJau7ravxn65ADDCFsrjQ5aqYW9g6SQ8F69CCS6-v-A=
A2tKPDXmcvjvjLIIjvySoQPH0hdhFsDTu3osl-Z7y>   [https://storage.letsignit.com=
/5e205f9364ef1e0007df8dd1/logo_5e205f9364ef1e0007df8dd1_40e4ebcc85fe2550fa0=
13ff6c52aae88.png] <https://cloud.letsignit.com/collect/bc/64a7be18452a27db=
4360347b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3=
x-VHo3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0LNijUNdUicuCOSnTBvePS5vNpnlj3J=
UYx_sJFFyu5S6oHykNMLGn_xbBjY4CKnQo=3D>   [https://storage.letsignit.com/5e2=
05f9364ef1e0007df8dd1/logo_5e205f9364ef1e0007df8dd1_98bb140e27bdc29eec87f67=
fc7ed5d1c.png] <https://cloud.letsignit.com/collect/bc/64a7be18452a27db4360=
347b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VH=
o3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy1zNTgIGfoGfk7_Je1fJuaspseiI_F2ZmkaC=
7rRCL-e5GCRWQurIaztOnMVwTwecp8=3D>   [https://storage.letsignit.com/5e205f9=
364ef1e0007df8dd1/65382111016339093392920242222991313588.png] <https://clou=
d.letsignit.com/collect/bc/64a7be18452a27db4360347b?p=3DUsTT3QRdxkzMmk8xWrT=
uV-uvIKAerqcZMr6658o8-taqTH6nWN6ZOM_Zy_q5b3x-VHo3zXRxrOe-IptTyhxCN2Rh9feXLi=
yWXdTMD1_8sy0mRKcAbIcY9EZYZKbviCE5DR33ee51F4MQQyP1gffWzUpshOs9woJxNJnwLb0kZ=
8ZXn0fkAx706ZFMBZcEuYiI>


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.

[https://storage.letsignit.com/5e205f9364ef1e0007df8dd1/generated/effects_4=
41587a357fa77555b7bb7a52c0011ae83171eda3212dc1d03dd56fa.png]



--_000_PR0P264MB22045EFB26A3A0C2E14AEE80DF372PR0P264MB2204FRAP_
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;
	mso-ligatures:standardcontextual;
	mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:#467886;
	text-decoration:underline;}
span.EmailStyle17
	{mso-style-type:personal-compose;
	font-family:"Aptos",sans-serif;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:11.0pt;
	mso-fareast-language:EN-US;}
@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">Hi,<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-US">Context</span></b><span lang=
=3D"EN-US">:<o:p></o:p></span></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.<o:p></o:p></span></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.<o:p></o:p>=
</span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-US">Change</span></b><span lang=
=3D"EN-US">:<o:p></o:p></span></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.<o:p></o:=
p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-US">Issue</span></b><span lang=
=3D"EN-US">:<o:p></o:p></span></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).<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><b><span lang=3D"EN-US">Example</span></b><span lang=
=3D"EN-US">:<o:p></o:p></span></p>
<p class=3D"MsoNormal"><i><u><span lang=3D"EN-US">moduleA.hpp</span></u></i=
><span lang=3D"EN-US">:<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">#p=
ragma once<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">#i=
nclude &lt;cstdint&gt;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">cl=
ass ModA<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">{<=
o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">pu=
blic:<o:p></o:p></span></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;<o:p></o:p></span></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;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></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<o:p></o:p></span></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; {<o:p></o:p></span></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;<o:p></o:p></span></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; }<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></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<o:p></o:p></span></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; {<o:p></o:p></span></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;<o:p></o:p></span></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; }<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></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;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">pr=
ivate:<o:p></o:p></span></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 };<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">};=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><i><u><span lang=3D"EN-US">moduleA.i</span></u></i><=
span lang=3D"EN-US">:<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%m=
odule moduleA<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%i=
nclude &lt;stdint.i&gt;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%i=
nclude &quot;moduleA.hpp&quot;<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><i><u><span lang=3D"EN-US">moduleB.hpp</span></u></i=
><span lang=3D"EN-US">:<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">#p=
ragma once<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">#i=
nclude &lt;moduleA.hpp&gt;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">cl=
ass ModB<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">{<=
o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">pu=
blic:<o:p></o:p></span></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;<o:p></o:p></span></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;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></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<o:p>=
</o:p></span></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; {<o:p></o:p></span></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;<o:p></o:p>=
</span></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; }<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></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;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">pr=
ivate:<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">};=
<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><i><u><span lang=3D"EN-US">moduleB.i</span></u></i><=
span lang=3D"EN-US">:<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%m=
odule moduleB<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%i=
nclude &lt;stdint.i&gt;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%i=
mport &quot;moduleA/file.i&quot;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US"><o=
:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">%i=
nclude &quot;moduleB.hpp&quot;<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><i><u><span lang=3D"EN-US">ModC.cs</span></u></i><sp=
an lang=3D"EN-US">:<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">=
=85<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp; public bool testModuleA(ModA moduleA) {<o:p></o:p></span></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));<o:p></o:p></span></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();<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp;&nbsp;&nbsp; return ret;<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">&n=
bsp; }<o:p></o:p></span></p>
<p class=3D"MsoNormal" style=3D"margin-left:35.4pt"><span lang=3D"EN-US">=
=85<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">ModA.getCPtr is not accessible =
here as it=92s part of a different assembly.<o:p></o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></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?<o:p></o:p></span></=
p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></p>
<p class=3D"MsoNormal"><span lang=3D"EN-US">Many thanks<o:p></o:p></span></=
p>
<p class=3D"MsoNormal"><span lang=3D"EN-US"><o:p>&nbsp;</o:p></span></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 style=3D=
"mso-ligatures:none"><o:p></o:p></span></span></b></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"><img border=3D"0" width=3D"120" style=3D"width:1.25in"=
 id=3D"_x0000_i1032" src=3D"https://storage.letsignit.com/5e205f9364ef1e000=
7df8dd1/157931868809400396551428155263482193943.png"></span><span lang=3D"E=
N-US" style=3D"font-size:9.0pt;font-family:&quot;Verdana&quot;,sans-serif;c=
olor:#575756"><o:p></o:p></span></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;<o:p></o:p></span></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>
</span><span style=3D"font-size:9.0pt;font-family:&quot;Verdana&quot;,sans-=
serif;color:#575756"><a href=3D"https://cloud.letsignit.com/collect/bc/64a7=
be18452a27db4360347b?p=3DUsTT3QRdxkzMmk8xWrTuV-uvIKAerqcZMr6658o8-taqTH6nWN=
6ZOM_Zy_q5b3x-VHo3zXRxrOe-IptTyhxCN2Rh9feXLiyWXdTMD1_8sy0mRKcAbIcY9EZYZKbvi=
CE5yGd3tnlp7kBBVIKkAYwW0ZOXmUKQMhhzKNAXYq6Sn1j2xyBLWvF02lAtBLfioAwT"><span =
style=3D"color:blue;text-decoration:none"><img border=3D"0" width=3D"12" st=
yle=3D"width:.125in" id=3D"_x0000_i1031" src=3D"https://storage.letsignit.c=
om/5e205f9364ef1e0007df8dd1/34828667325724549301384413623356639143.png"></s=
pan></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:blue;text-decoration:none"><img border=3D"0" width=3D"=
12" style=3D"width:.125in" id=3D"_x0000_i1030" src=3D"https://storage.letsi=
gnit.com/5e205f9364ef1e0007df8dd1/178170618866157368622765932246699512081.p=
ng"></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:blue;text-decoration:none"><img border=3D"0" width=3D"=
12" style=3D"width:.125in" id=3D"_x0000_i1029" src=3D"https://storage.letsi=
gnit.com/5e205f9364ef1e0007df8dd1/284525336458572053570367734995237269837.p=
ng"></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:blue;text-decoration:none"><img border=3D"0" width=3D"=
12" style=3D"width:.125in" id=3D"_x0000_i1028" src=3D"https://storage.letsi=
gnit.com/5e205f9364ef1e0007df8dd1/logo_5e205f9364ef1e0007df8dd1_40e4ebcc85f=
e2550fa013ff6c52aae88.png"></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:blue;text-decoration:none"><img border=3D"0" width=3D"=
12" style=3D"width:.125in" id=3D"_x0000_i1027" src=3D"https://storage.letsi=
gnit.com/5e205f9364ef1e0007df8dd1/logo_5e205f9364ef1e0007df8dd1_98bb140e27b=
dc29eec87f67fc7ed5d1c.png"></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:blue;text-decoration:none"><img border=3D"0" width=3D"=
12" style=3D"width:.125in" id=3D"_x0000_i1026" src=3D"https://storage.letsi=
gnit.com/5e205f9364ef1e0007df8dd1/65382111016339093392920242222991313588.pn=
g"></span></a><o:p></o:p></span></p>
</td>
</tr>
</tbody>
</table>
<p class=3D"MsoNormal"><span style=3D"font-size:12.0pt"><o:p>&nbsp;</o:p></=
span></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><span lang=3D"EN-US"><o:p></o:p></span></p>
<p style=3D"margin:.1pt;mso-line-height-alt:0pt;max-height:170.05px"><img b=
order=3D"0" width=3D"339" height=3D"170" style=3D"width:3.5312in;height:1.7=
708in" id=3D"_x0000_i1025" src=3D"https://storage.letsignit.com/5e205f9364e=
f1e0007df8dd1/generated/effects_441587a357fa77555b7bb7a52c0011ae83171eda321=
2dc1d03dd56fa.png"><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;<o:p></o:p></s=
pan></p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<p class=3D"MsoNormal"><o:p>&nbsp;</o:p></p>
</div>
</body>
</html>

--_000_PR0P264MB22045EFB26A3A0C2E14AEE80DF372PR0P264MB2204FRAP_--


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


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

--===============5612575459115403101==--