<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<id>tag:old.nabble.com,2006:forum-3366</id>
	<title>Nabble - swig-user</title>
	<updated>2009-12-10T02:53:49Z</updated>
	<link rel="self" type="application/atom+xml" href="http://old.nabble.com/swig-user-f3366.xml" />
	<link rel="alternate" type="text/html" href="http://old.nabble.com/swig-user-f3366.html" />
	<subtitle type="html">Mailing list archive for swig-user</subtitle>
	
<entry>
	<id>tag:old.nabble.com,2006:post-26725603</id>
	<title>Passing structure pointings from a library to the other</title>
	<published>2009-12-10T02:53:49Z</published>
	<updated>2009-12-10T02:53:49Z</updated>
	<author>
		<name>Luigi-2</name>
	</author>
	<content type="html">Dear all,
&lt;br&gt;&lt;br&gt;I have a C library (std_comp) with a header (std_comp.h) that defines a 
&lt;br&gt;structure like this:
&lt;br&gt;&lt;br&gt;typedef struct pset_impl PSet;
&lt;br&gt;&lt;br&gt;a function to get a new instance of it:
&lt;br&gt;&lt;br&gt;PSet * pset_new(char * name);
&lt;br&gt;&lt;br&gt;and a getter function:
&lt;br&gt;&lt;br&gt;char * get_name(PSet * pset);
&lt;br&gt;&lt;br&gt;The related code (std_comp.c) implements this structure as:
&lt;br&gt;&lt;br&gt;struct pset_impl {
&lt;br&gt;&amp;nbsp; &amp;nbsp;char * name;
&lt;br&gt;};
&lt;br&gt;typedef struct pset_impl pset_impl;
&lt;br&gt;&lt;br&gt;and the functions as well:
&lt;br&gt;&lt;br&gt;PSet * pset_new(char * name) {
&lt;br&gt;&amp;nbsp; &amp;nbsp;/* code omitted */
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;char * get_name(PSet * pset) [
&lt;br&gt;&amp;nbsp; &amp;nbsp;return pset-&amp;gt;name;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;(I have simplified a bit).
&lt;br&gt;&lt;br&gt;If I compile dynamically this library and I link and use it inside a C 
&lt;br&gt;`main` it works perfectly.
&lt;br&gt;&lt;br&gt;Then I have create the Python bindings (as an extension module) through 
&lt;br&gt;SWIG using this interface:
&lt;br&gt;&lt;br&gt;%module std_comp
&lt;br&gt;%{
&lt;br&gt;#include &amp;quot;std_comp.h&amp;quot;
&lt;br&gt;%}
&lt;br&gt;%include &amp;quot;std_comp.h&amp;quot;
&lt;br&gt;&lt;br&gt;It works without problems and produces some Python bindings that work 
&lt;br&gt;perfectly as well:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; from std_comp import *
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; p = pset_new(&amp;quot;hello world&amp;quot;)
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; print get_name(p)
&lt;br&gt;hello world
&lt;br&gt;&lt;br&gt;So far so good.
&lt;br&gt;&lt;br&gt;Now I have another C library (cont_cpl) that uses the structures and 
&lt;br&gt;functions above linking std_comp, example:
&lt;br&gt;&lt;br&gt;-- cont_cpl.h --
&lt;br&gt;&lt;br&gt;#include &amp;lt;std_comp.h&amp;gt;
&lt;br&gt;&lt;br&gt;char * get_pset_name(PSet * pset);
&lt;br&gt;&lt;br&gt;-- cont_cpl.c --
&lt;br&gt;&lt;br&gt;#include &amp;lt;std_comp.h&amp;gt;
&lt;br&gt;&lt;br&gt;char * get_pset_name(PSet * pset) {
&lt;br&gt;&amp;nbsp; &amp;nbsp;return get_name(pset);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;(the above is a simplification of the real library).
&lt;br&gt;&lt;br&gt;Again, if I compile this library linking std_comp and afterwords I 
&lt;br&gt;use/link it in a C `main`, I have no problems, it works.
&lt;br&gt;&lt;br&gt;Here comes the problem. I have created the SWIG Python bindings (as an 
&lt;br&gt;extension module) to this library using the the following interface:
&lt;br&gt;&lt;br&gt;%module cont_cpl
&lt;br&gt;&lt;br&gt;%{
&lt;br&gt;#include &amp;quot;cont_cpl.h&amp;quot;
&lt;br&gt;%}
&lt;br&gt;%include &amp;quot;cont_cpl.h&amp;quot;
&lt;br&gt;&lt;br&gt;Apparently the bindings are created without problems, but if I try to 
&lt;br&gt;get a new instance of a PSet using the std_comp module and I pass the 
&lt;br&gt;pointer to the cont_cpl function I get an error:
&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; import std_comp
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; import cont_cpl
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; p = std_comp.pset_new(&amp;quot;hello world&amp;quot;)
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; print p
&lt;br&gt;&amp;lt;Swig Object of type 'PSet *' at 0x82841a0&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt; print cont_cpl.get_pset_name(p)
&lt;br&gt;Traceback (most recent call last):
&lt;br&gt;&amp;nbsp; &amp;nbsp;File &amp;quot;&amp;lt;stdin&amp;gt;&amp;quot;, line 1, in &amp;lt;module&amp;gt;
&lt;br&gt;TypeError: in method 'get_pset_name', argument 1 of type 'PSet *'
&lt;br&gt;&lt;br&gt;It seems like there is a type casting problem, but I don't know how and 
&lt;br&gt;I don't know how to work around this issue.
&lt;br&gt;&lt;br&gt;Any help is really appreciated.
&lt;br&gt;&lt;br&gt;Thanks in advance.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Luigi
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Return on Information:
&lt;br&gt;Google Enterprise Search pays you back
&lt;br&gt;Get the facts.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/google-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/google-dev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26725603&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Passing-structure-pointings-from-a-library-to-the-other-tp26725603p26725603.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26720998</id>
	<title>Re: Python C++ extension (multithreadedenvironment)(Somethign useful ? )</title>
	<published>2009-12-09T17:38:37Z</published>
	<updated>2009-12-09T17:38:37Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.3603&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY style=&quot;WORD-WRAP: break-word; webkit-nbsp-mode: space; webkit-line-break: after-white-space&quot;&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I SOLVED IT ...&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;thanks for people who provided me help .. but I believe 
solved it myself. .haha .. took me long time.. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;so .. the solution is something like this.. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;in my c function ..which calls python call .. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;[code]&lt;BR&gt;PyObject *argobj = 
SWIG_NewPointerObj(SWIG_as_voidptr(&amp;amp;msg2), SWIGTYPE_p_RFAMessageWrapper, 
SWIG_POINTER_NEW |&amp;nbsp; 0 );&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,argobj);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument 
list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 
Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;[\code]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I am using &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;PyObject *argobj = 
SWIG_NewPointerObj(SWIG_as_voidptr(&amp;amp;msg2), SWIGTYPE_p_RFAMessageWrapper, 
&lt;STRONG&gt;SWIG_POINTER_NEW &lt;/STRONG&gt;|&amp;nbsp; 0 );&lt;/FONT&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;This was incorrect... i guess &lt;STRONG&gt;SWIG_POINTER_NEW 
&lt;/STRONG&gt;is used to create pointer to the actual c++ object where as if I pass 
0&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;PyObject *argobj = 
SWIG_NewPointerObj(SWIG_as_voidptr(&amp;amp;msg2), SWIGTYPE_p_RFAMessageWrapper, 
&lt;STRONG&gt;0 &lt;/STRONG&gt;|&amp;nbsp; 0 );&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;This actually creates a pointer to the wrapped python 
object :)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;I could access my object in my python code 
now.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;I had to include std_string.i to enable string typemaps 
:)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;Thanks,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=031373401-10122009&gt;Alok&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=031373401-10122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok 
&lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Wednesday, December 09, 2009 3:42 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multithreadedenvironment)(Somethign useful ? )&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;So basically, I have a C++ pointer object 
available.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;From this I want to get (or create) a new object which 
is&amp;nbsp;proxy to my RFAMessageWrapper class.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;Example: &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;def callback_fun(msg):&lt;BR&gt;&lt;SPAN class=708213606-09122009&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=708213606-09122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;In 
python function above &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;msg is &amp;lt;Swig Object of type 'RFAMessageWrapper *' at 
0x00DC93C0&amp;gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;where as when I create a normal proxy object for some 
other class&amp;nbsp;eg&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;client is &amp;lt;RFAClient.RFAClient; &lt;U&gt;&lt;STRONG&gt;proxy 
of&lt;/STRONG&gt; &lt;/U&gt;&amp;lt;Swig Object of type 'RFAClient *' at 
0x00DC98C0&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;So 
from Swig Object of type 'RFAMessageWrapper' I want to get a new object which is 
something like&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;msg2 
is &amp;lt;RFAClient.RFAMessageWrapper; &lt;U&gt;&lt;STRONG&gt;proxy of &lt;/STRONG&gt;&lt;/U&gt;&amp;lt;Swig 
Object of type 'RFAMessageWrapper *' at 0x00DC93C0&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;Can 
someone please tell me how to create a new proxy object using the given C++ 
pointer object.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;I 
believe this should solve my issue.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;Regards, Alok&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Wednesday, 
December 09, 2009 1:56 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threadedenvironment)(Somethign useful ? )&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=732415504-09122009&gt;Everything boils down to one question 
now:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=732415504-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=732415504-09122009&gt;
&lt;DIV dir=ltr align=left&gt;&lt;BR&gt;When I pass a C++ object to Python function, I want 
to be able to use that object using its Proxy class in the python code. How can 
I achieve that?&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;Regards, Alok&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 6:25 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)(Somethign useful ? )&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I used SWIG_NewPointerObj method to 
create a PyObject. It removed all my exceptions and seems to be working fine. 
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;[code]&lt;BR&gt;PyObject *argobj = 
SWIG_NewPointerObj(SWIG_as_voidptr(&amp;amp;msg2), SWIGTYPE_p_RFAMessageWrapper, 
SWIG_POINTER_NEW |&amp;nbsp; 0 );&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,argobj);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument 
list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 
Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;[\code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Callback is called&lt;SPAN class=797582109-08122009&gt; properly&lt;/SPAN&gt;. &lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But now, in Python code&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Access 
to the passed object raises exception. I am expecting RFAMessageWrapper object 
in python code. But using SWIG_NewPointerObj passes SwigPyObject to python 
instead.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Python call back&amp;nbsp;&lt;SPAN class=797582109-08122009&gt;function &lt;/SPAN&gt;is &lt;BR&gt;[code]&lt;BR&gt;def 
callback_fun(msg):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
try:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 
Exception:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Exception 
handled&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 
type(msg)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
traceback.print_exc(file=sys.stdout)&lt;BR&gt;[/code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Result&lt;SPAN class=797582109-08122009&gt;:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=797582109-08122009&gt;&lt;/SPAN&gt;&lt;BR&gt;[code]&lt;BR&gt;Exception handled&lt;BR&gt;&amp;lt;type 
'SwigPyObject'&amp;gt;&lt;BR&gt;Traceback (most recent call last):&lt;BR&gt;&amp;nbsp; File 
&quot;&amp;lt;stdin&amp;gt;&quot;, line 3, in callback_fun&lt;BR&gt;AttributeError: 'SwigPyObject' 
object has no attribute 'service'&lt;BR&gt;[/code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I am expecting the object type as 
RFAMessageWrapper here.&amp;nbsp; Even when the PyObject created in C code uses 
SWIGTYPE_p_RFAMessageWrapper as the typeinfo, still the object created is not 
RFAMessageWrapper.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
should I pass to 
callback&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; so 
that I can access RFAMessageWrapper object in Python code. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper class is wrapped using SWIG 
properly.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Any 
help is appreciated.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 9:42 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, Alok; 'Brian Cole'&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
'&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;'&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; RE: [Swig-user] Python C++ 
extension (multi threaded environment) (Somethign useful ? 
)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;Someone from Python-C++ mailing list told me that 
the&amp;nbsp;&lt;SPAN class=178313600-08122009&gt;way I create argument list is incorrect. 
They did not have knowledge of SWIG so they couldn't help 
more.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;In the function 
below&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;SPAN class=178313600-08122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;The 
code&amp;nbsp;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here I 
create msg2 object as &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper msg2(msg); &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;which 
is on stack. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Other 
person told me that this is incorrect. I should create this object as PyObject 
and then call Py_BuildValue function. It should be created using PyObject_New. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Since 
RFAMessageWrapper is already wrapped using SWIG, I believe there should already 
be a function which would help me in creating a new PyObject for 
RFAMessageWrapper. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Is 
this correct?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Can 
someone tell me which function I should use to create a new PyObject type object 
for RFAMessageWrapper?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 8:21 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, Alok; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; RE: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I still don't have any progress. Funny thing is that, I am 
not even able to catch this exception !!!!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put a try catch block in C code like below 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;While 
debugging, PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;is executed 
and it raises exception but it is not cought in this code. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put 
a try catch block in my python callback function as well ... 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;def 
callback_fun(msg):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
try:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 
Exception:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Exception 
handled&quot;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here 
again exception is not handled. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;msg.service accesss raises Access violation error. The memory at some 
address could not be read.&amp;nbsp; Any access to msg object (of type 
RFAMessageWrapper) which is passed from C++ code raises this exception. It 
doesn't occurs for basic data types. I wonder what I am missing 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Monday, 
December 07, 2009 11:02 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;In the example below, the example of&amp;nbsp;int is working 
fine. The callback is called properly in Python&amp;nbsp; and the int value is 
displayed. All good.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But when I pass the object of type 
&lt;EM&gt;RFAMessageWrapper&lt;/EM&gt;, even type(msg) raises an exception. I am not able to 
send user defined c++ object to Python. Not sure what is wrong 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Also the&amp;nbsp;usage of &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK; 
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;doesn't raise any exception. But I wonder if it succeeds in acquiring the 
GIL.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Please advice.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, 
December 05, 2009 12:32 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I will try to use that but before using the SWIG macros I 
should be able to build the arguments list from the C objects. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;A&lt;SPAN class=078192803-05122009&gt;bove line raises an 
Access violation exception.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;m&lt;SPAN class=078192803-05122009&gt;sg2 is non nul C class 
object.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;where as &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;int blah =1;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;arglist = Py_BuildValue(&quot;&lt;SPAN class=078192803-05122009&gt;i&lt;/SPAN&gt;&quot;,&lt;SPAN class=078192803-05122009&gt;blah&lt;/SPAN&gt;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;this 
line doesn't raise any exception. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;So it 
means it has to do with creating a PyObject from C object. (Works fine for basic 
datatypes.)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
is the issue in this case?&amp;nbsp; How can this be solved?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Brian Cole [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;coleb@...&lt;/a&gt;] 
&lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, December 05, 2009 3:52 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, 
Alok&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: 
[Swig-user] Python C++ extension (multi threaded 
environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;This is a shot in the dark, but have you tried using SWIG's macros 
for acquiring and releasing the GIL? 
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=monospace&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;FONT class=Apple-style-span face=Helvetica&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: normal&quot;&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;-Brian&lt;/DIV&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;
&lt;DIV&gt;
&lt;DIV&gt;On Dec 3, 2009, at 11:57 PM, Jadhav, Alok wrote:&lt;/DIV&gt;&lt;BR class=Apple-interchange-newline&gt;
&lt;BLOCKQUOTE type=&quot;cite&quot;&gt;
  &lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;Guys,&lt;BR&gt;&lt;BR&gt;I created a 
  new wrapper class RFAMesageWrapper which is defined in SWIG&lt;BR&gt;interface file. 
  &amp;nbsp;&lt;BR&gt;&lt;BR&gt;Now the new code looks like&lt;BR&gt;&lt;BR&gt;&amp;nbsp;RFAMessageWrapper 
  msg2(msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&lt;BR&gt;Where as msg2 is identified by Python. 
  &amp;nbsp;Still this function raises&lt;BR&gt;access violation exception. So my thinking 
  that it was because&lt;BR&gt;RFAMessage is not identified as RFAMessage was 
  incorrect.&lt;BR&gt;&lt;BR&gt;Now back to square one. . What is wrong here? Why does this 
  line of code&lt;BR&gt;raises exception?&lt;BR&gt;&lt;BR&gt;Still couldn't identify why state = 
  PyGILState_Ensure(); blocks 
  the&lt;BR&gt;thread.&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;&lt;BR&gt;-----Original 
  Message-----&lt;BR&gt;From: Jadhav, Alok &lt;BR&gt;Sent: Friday, December 04, 2009 3:05 
  PM&lt;BR&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;Subject: 
  [Swig-user] Python C++ extension (multi threaded 
  environment)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Hello,&lt;BR&gt;&lt;BR&gt;I have made some progress in using C 
  library to call from Python. In&lt;BR&gt;next step I have to register a callback 
  function so that C can call&lt;BR&gt;ProcessMessage() function from which is written 
  in python. My code is&lt;BR&gt;not working properly and I have couple of questions 
  regarding this. &lt;BR&gt;&lt;BR&gt;Backgroun&lt;BR&gt;----------&lt;BR&gt;&lt;BR&gt;Python creates 
  RFAClient object. This happens in Python main thread. Now&lt;BR&gt;Python calls a 
  function to start postoffice. Postoffice spawns a new C++&lt;BR&gt;thread and it 
  runs in a while loop listening to some data. Now when a&lt;BR&gt;message arrives on 
  this thread it should call Python function to process&lt;BR&gt;this data. Looks 
  simple .. But multi threaded environment, C++ and&lt;BR&gt;python all together makes 
  it a bit messy :)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Issues&lt;BR&gt;------&lt;BR&gt;&lt;BR&gt;My callback registed in C 
  looks like this&lt;BR&gt;&lt;BR&gt;static void PythonCallBack(RFAMessage msg, void 
  *clientdata) { PyObject&lt;BR&gt;*func, *arglist;&lt;BR&gt;&lt;BR&gt;PyGILState_STATE 
  state;&lt;BR&gt;state = PyGILState_Ensure();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;func = (PyObject *) 
  clientdata; 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Get Python function&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Call Python&lt;BR&gt;&amp;nbsp;&amp;nbsp;Py_DECREF(arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Trash arglist&lt;BR&gt;&lt;BR&gt;PyGILState_Release(state);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;Here 2 lines are 
  giving me exceptions.. (Remember this is called from&lt;BR&gt;postoffice thread.. 
  which is not the main Python thread. .. I 
  have&lt;BR&gt;called&lt;BR&gt;PyEval_InitThreads() function; at the start of main 
  thread)&lt;BR&gt;&lt;BR&gt;-&amp;gt; arglist = 
  Py_BuildValue(&quot;(O)&quot;,msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Raises Access Violation 
  error. I have no idea why this is&lt;BR&gt;occuring. &lt;BR&gt;My reasoning : msg is of 
  type RFAMessage. &amp;nbsp;RFAMessage is not part of my&lt;BR&gt;swig interface file, 
  but it is part of the library used by my C++&lt;BR&gt;wrapper project. Can 
  RAFMessage object be converted to PyObject if it is&lt;BR&gt;not part of SWIG 
  interface file? &lt;BR&gt;&amp;nbsp;What are your suggestions on this?&lt;BR&gt;&lt;BR&gt;-&amp;gt; 
  state = PyGILState_Ensure();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The thread just gets 
  blocked on this call. It doesn't do anything&lt;BR&gt;after this. After searching on 
  internet I couldn't find anything which&lt;BR&gt;can describe why postOffice thread 
  may get blocked here. Any reasons?&lt;BR&gt;solutions?&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Please advice. I 
  have spent more than 2 days trying to tackle this&lt;BR&gt;single 
  issue.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;--&lt;BR&gt;View this message in 
  context:&lt;BR&gt;&lt;A href=&quot;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&lt;/A&gt;&lt;BR&gt;ment%29-tp26635775p26635775.html&lt;BR&gt;Sent 
  from the swig-user mailing list archive at 
  Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------&lt;BR&gt;------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;BR&gt;=============================================================================== 
  &lt;BR&gt;Please access the attached hyperlink for an important electronic 
  communications disclaimer: 
  &lt;BR&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html 
  &lt;BR&gt;=============================================================================== 
  &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;BR /&gt;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;&lt;html&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:8.0pt;font-family:Courier'&gt;==============================================================================&lt;br&gt;Please access the attached hyperlink for an important electronic communications disclaimer:&lt;br&gt;&lt;a href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/a&gt;&lt;br&gt;==============================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/html&gt;&lt;br&gt;
&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Return on Information:
&lt;br&gt;Google Enterprise Search pays you back
&lt;br&gt;Get the facts.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/google-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/google-dev2dev&lt;/a&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26720998&amp;i=12&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26720998.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26705894</id>
	<title>Re: Python C++ extension (multi threadedenvironment)(Somethign useful ? )</title>
	<published>2009-12-08T22:41:59Z</published>
	<updated>2009-12-08T22:41:59Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.3603&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY style=&quot;WORD-WRAP: break-word; webkit-nbsp-mode: space; webkit-line-break: after-white-space&quot;&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;So basically, I have a C++ pointer object 
available.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;From this I want to get (or create) a new object which 
is&amp;nbsp;proxy to my RFAMessageWrapper class.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;Example: &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;def callback_fun(msg):&lt;BR&gt;&lt;SPAN class=708213606-09122009&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=708213606-09122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;In 
python function above &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;msg is &amp;lt;Swig Object of type 'RFAMessageWrapper *' at 
0x00DC93C0&amp;gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;where as when I create a normal proxy object for some 
other class&amp;nbsp;eg&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;client is &amp;lt;RFAClient.RFAClient; &lt;U&gt;&lt;STRONG&gt;proxy 
of&lt;/STRONG&gt; &lt;/U&gt;&amp;lt;Swig Object of type 'RFAClient *' at 
0x00DC98C0&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;So 
from Swig Object of type 'RFAMessageWrapper' I want to get a new object which is 
something like&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;msg2 
is &amp;lt;RFAClient.RFAMessageWrapper; &lt;U&gt;&lt;STRONG&gt;proxy of &lt;/STRONG&gt;&lt;/U&gt;&amp;lt;Swig 
Object of type 'RFAMessageWrapper *' at 0x00DC93C0&amp;gt;&amp;gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;Can 
someone please tell me how to create a new proxy object using the given C++ 
pointer object.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;I 
believe this should solve my issue.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;Regards, Alok&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=708213606-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Wednesday, 
December 09, 2009 1:56 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threadedenvironment)(Somethign useful ? )&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=732415504-09122009&gt;Everything boils down to one question 
now:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=732415504-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=732415504-09122009&gt;
&lt;DIV dir=ltr align=left&gt;&lt;BR&gt;When I pass a C++ object to Python function, I want 
to be able to use that object using its Proxy class in the python code. How can 
I achieve that?&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;Regards, Alok&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 6:25 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)(Somethign useful ? )&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I used SWIG_NewPointerObj method to 
create a PyObject. It removed all my exceptions and seems to be working fine. 
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;[code]&lt;BR&gt;PyObject *argobj = 
SWIG_NewPointerObj(SWIG_as_voidptr(&amp;amp;msg2), SWIGTYPE_p_RFAMessageWrapper, 
SWIG_POINTER_NEW |&amp;nbsp; 0 );&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,argobj);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument 
list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 
Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;[\code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Callback is called&lt;SPAN class=797582109-08122009&gt; properly&lt;/SPAN&gt;. &lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But now, in Python code&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Access 
to the passed object raises exception. I am expecting RFAMessageWrapper object 
in python code. But using SWIG_NewPointerObj passes SwigPyObject to python 
instead.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Python call back&amp;nbsp;&lt;SPAN class=797582109-08122009&gt;function &lt;/SPAN&gt;is &lt;BR&gt;[code]&lt;BR&gt;def 
callback_fun(msg):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
try:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 
Exception:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Exception 
handled&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 
type(msg)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
traceback.print_exc(file=sys.stdout)&lt;BR&gt;[/code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Result&lt;SPAN class=797582109-08122009&gt;:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=797582109-08122009&gt;&lt;/SPAN&gt;&lt;BR&gt;[code]&lt;BR&gt;Exception handled&lt;BR&gt;&amp;lt;type 
'SwigPyObject'&amp;gt;&lt;BR&gt;Traceback (most recent call last):&lt;BR&gt;&amp;nbsp; File 
&quot;&amp;lt;stdin&amp;gt;&quot;, line 3, in callback_fun&lt;BR&gt;AttributeError: 'SwigPyObject' 
object has no attribute 'service'&lt;BR&gt;[/code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I am expecting the object type as 
RFAMessageWrapper here.&amp;nbsp; Even when the PyObject created in C code uses 
SWIGTYPE_p_RFAMessageWrapper as the typeinfo, still the object created is not 
RFAMessageWrapper.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
should I pass to 
callback&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; so 
that I can access RFAMessageWrapper object in Python code. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper class is wrapped using SWIG 
properly.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Any 
help is appreciated.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 9:42 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, Alok; 'Brian Cole'&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
'&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;'&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; RE: [Swig-user] Python C++ 
extension (multi threaded environment) (Somethign useful ? 
)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;Someone from Python-C++ mailing list told me that 
the&amp;nbsp;&lt;SPAN class=178313600-08122009&gt;way I create argument list is incorrect. 
They did not have knowledge of SWIG so they couldn't help 
more.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;In the function 
below&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;SPAN class=178313600-08122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;The 
code&amp;nbsp;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here I 
create msg2 object as &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper msg2(msg); &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;which 
is on stack. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Other 
person told me that this is incorrect. I should create this object as PyObject 
and then call Py_BuildValue function. It should be created using PyObject_New. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Since 
RFAMessageWrapper is already wrapped using SWIG, I believe there should already 
be a function which would help me in creating a new PyObject for 
RFAMessageWrapper. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Is 
this correct?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Can 
someone tell me which function I should use to create a new PyObject type object 
for RFAMessageWrapper?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 8:21 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, Alok; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; RE: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I still don't have any progress. Funny thing is that, I am 
not even able to catch this exception !!!!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put a try catch block in C code like below 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;While 
debugging, PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;is executed 
and it raises exception but it is not cought in this code. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put 
a try catch block in my python callback function as well ... 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;def 
callback_fun(msg):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
try:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 
Exception:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Exception 
handled&quot;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here 
again exception is not handled. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;msg.service accesss raises Access violation error. The memory at some 
address could not be read.&amp;nbsp; Any access to msg object (of type 
RFAMessageWrapper) which is passed from C++ code raises this exception. It 
doesn't occurs for basic data types. I wonder what I am missing 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Monday, 
December 07, 2009 11:02 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;In the example below, the example of&amp;nbsp;int is working 
fine. The callback is called properly in Python&amp;nbsp; and the int value is 
displayed. All good.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But when I pass the object of type 
&lt;EM&gt;RFAMessageWrapper&lt;/EM&gt;, even type(msg) raises an exception. I am not able to 
send user defined c++ object to Python. Not sure what is wrong 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Also the&amp;nbsp;usage of &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK; 
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;doesn't raise any exception. But I wonder if it succeeds in acquiring the 
GIL.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Please advice.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, 
December 05, 2009 12:32 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I will try to use that but before using the SWIG macros I 
should be able to build the arguments list from the C objects. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;A&lt;SPAN class=078192803-05122009&gt;bove line raises an 
Access violation exception.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;m&lt;SPAN class=078192803-05122009&gt;sg2 is non nul C class 
object.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;where as &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;int blah =1;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;arglist = Py_BuildValue(&quot;&lt;SPAN class=078192803-05122009&gt;i&lt;/SPAN&gt;&quot;,&lt;SPAN class=078192803-05122009&gt;blah&lt;/SPAN&gt;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;this 
line doesn't raise any exception. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;So it 
means it has to do with creating a PyObject from C object. (Works fine for basic 
datatypes.)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
is the issue in this case?&amp;nbsp; How can this be solved?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Brian Cole [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;coleb@...&lt;/a&gt;] 
&lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, December 05, 2009 3:52 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, 
Alok&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: 
[Swig-user] Python C++ extension (multi threaded 
environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;This is a shot in the dark, but have you tried using SWIG's macros 
for acquiring and releasing the GIL? 
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=monospace&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;FONT class=Apple-style-span face=Helvetica&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: normal&quot;&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;-Brian&lt;/DIV&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;
&lt;DIV&gt;
&lt;DIV&gt;On Dec 3, 2009, at 11:57 PM, Jadhav, Alok wrote:&lt;/DIV&gt;&lt;BR class=Apple-interchange-newline&gt;
&lt;BLOCKQUOTE type=&quot;cite&quot;&gt;
  &lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;Guys,&lt;BR&gt;&lt;BR&gt;I created a 
  new wrapper class RFAMesageWrapper which is defined in SWIG&lt;BR&gt;interface file. 
  &amp;nbsp;&lt;BR&gt;&lt;BR&gt;Now the new code looks like&lt;BR&gt;&lt;BR&gt;&amp;nbsp;RFAMessageWrapper 
  msg2(msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&lt;BR&gt;Where as msg2 is identified by Python. 
  &amp;nbsp;Still this function raises&lt;BR&gt;access violation exception. So my thinking 
  that it was because&lt;BR&gt;RFAMessage is not identified as RFAMessage was 
  incorrect.&lt;BR&gt;&lt;BR&gt;Now back to square one. . What is wrong here? Why does this 
  line of code&lt;BR&gt;raises exception?&lt;BR&gt;&lt;BR&gt;Still couldn't identify why state = 
  PyGILState_Ensure(); blocks 
  the&lt;BR&gt;thread.&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;&lt;BR&gt;-----Original 
  Message-----&lt;BR&gt;From: Jadhav, Alok &lt;BR&gt;Sent: Friday, December 04, 2009 3:05 
  PM&lt;BR&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;Subject: 
  [Swig-user] Python C++ extension (multi threaded 
  environment)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Hello,&lt;BR&gt;&lt;BR&gt;I have made some progress in using C 
  library to call from Python. In&lt;BR&gt;next step I have to register a callback 
  function so that C can call&lt;BR&gt;ProcessMessage() function from which is written 
  in python. My code is&lt;BR&gt;not working properly and I have couple of questions 
  regarding this. &lt;BR&gt;&lt;BR&gt;Backgroun&lt;BR&gt;----------&lt;BR&gt;&lt;BR&gt;Python creates 
  RFAClient object. This happens in Python main thread. Now&lt;BR&gt;Python calls a 
  function to start postoffice. Postoffice spawns a new C++&lt;BR&gt;thread and it 
  runs in a while loop listening to some data. Now when a&lt;BR&gt;message arrives on 
  this thread it should call Python function to process&lt;BR&gt;this data. Looks 
  simple .. But multi threaded environment, C++ and&lt;BR&gt;python all together makes 
  it a bit messy :)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Issues&lt;BR&gt;------&lt;BR&gt;&lt;BR&gt;My callback registed in C 
  looks like this&lt;BR&gt;&lt;BR&gt;static void PythonCallBack(RFAMessage msg, void 
  *clientdata) { PyObject&lt;BR&gt;*func, *arglist;&lt;BR&gt;&lt;BR&gt;PyGILState_STATE 
  state;&lt;BR&gt;state = PyGILState_Ensure();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;func = (PyObject *) 
  clientdata; 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Get Python function&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Call Python&lt;BR&gt;&amp;nbsp;&amp;nbsp;Py_DECREF(arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Trash arglist&lt;BR&gt;&lt;BR&gt;PyGILState_Release(state);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;Here 2 lines are 
  giving me exceptions.. (Remember this is called from&lt;BR&gt;postoffice thread.. 
  which is not the main Python thread. .. I 
  have&lt;BR&gt;called&lt;BR&gt;PyEval_InitThreads() function; at the start of main 
  thread)&lt;BR&gt;&lt;BR&gt;-&amp;gt; arglist = 
  Py_BuildValue(&quot;(O)&quot;,msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Raises Access Violation 
  error. I have no idea why this is&lt;BR&gt;occuring. &lt;BR&gt;My reasoning : msg is of 
  type RFAMessage. &amp;nbsp;RFAMessage is not part of my&lt;BR&gt;swig interface file, 
  but it is part of the library used by my C++&lt;BR&gt;wrapper project. Can 
  RAFMessage object be converted to PyObject if it is&lt;BR&gt;not part of SWIG 
  interface file? &lt;BR&gt;&amp;nbsp;What are your suggestions on this?&lt;BR&gt;&lt;BR&gt;-&amp;gt; 
  state = PyGILState_Ensure();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The thread just gets 
  blocked on this call. It doesn't do anything&lt;BR&gt;after this. After searching on 
  internet I couldn't find anything which&lt;BR&gt;can describe why postOffice thread 
  may get blocked here. Any reasons?&lt;BR&gt;solutions?&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Please advice. I 
  have spent more than 2 days trying to tackle this&lt;BR&gt;single 
  issue.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;--&lt;BR&gt;View this message in 
  context:&lt;BR&gt;&lt;A href=&quot;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&lt;/A&gt;&lt;BR&gt;ment%29-tp26635775p26635775.html&lt;BR&gt;Sent 
  from the swig-user mailing list archive at 
  Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------&lt;BR&gt;------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;BR&gt;=============================================================================== 
  &lt;BR&gt;Please access the attached hyperlink for an important electronic 
  communications disclaimer: 
  &lt;BR&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html 
  &lt;BR&gt;=============================================================================== 
  &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;BR /&gt;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;&lt;html&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:8.0pt;font-family:Courier'&gt;==============================================================================&lt;br&gt;Please access the attached hyperlink for an important electronic communications disclaimer:&lt;br&gt;&lt;a href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/a&gt;&lt;br&gt;==============================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/html&gt;&lt;br&gt;
&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Return on Information:
&lt;br&gt;Google Enterprise Search pays you back
&lt;br&gt;Get the facts.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/google-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/google-dev2dev&lt;/a&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705894&amp;i=11&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26705894.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26705219</id>
	<title>Re: Python C++ extension (multi threaded environment)(Somethign useful ? )</title>
	<published>2009-12-08T20:55:58Z</published>
	<updated>2009-12-08T20:55:58Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.3603&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY style=&quot;WORD-WRAP: break-word; webkit-nbsp-mode: space; webkit-line-break: after-white-space&quot;&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=732415504-09122009&gt;Everything boils down to one question 
now:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=732415504-09122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=732415504-09122009&gt;
&lt;DIV dir=ltr align=left&gt;&lt;BR&gt;When I pass a C++ object to Python function, I want 
to be able to use that object using its Proxy class in the python code. How can 
I achieve that?&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;Regards, Alok&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 6:25 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)(Somethign useful ? )&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I used SWIG_NewPointerObj method to 
create a PyObject. It removed all my exceptions and seems to be working fine. 
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;[code]&lt;BR&gt;PyObject *argobj = 
SWIG_NewPointerObj(SWIG_as_voidptr(&amp;amp;msg2), SWIGTYPE_p_RFAMessageWrapper, 
SWIG_POINTER_NEW |&amp;nbsp; 0 );&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,argobj);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument 
list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 
Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;[\code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Callback is called&lt;SPAN class=797582109-08122009&gt; properly&lt;/SPAN&gt;. &lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But now, in Python code&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Access 
to the passed object raises exception. I am expecting RFAMessageWrapper object 
in python code. But using SWIG_NewPointerObj passes SwigPyObject to python 
instead.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Python call back&amp;nbsp;&lt;SPAN class=797582109-08122009&gt;function &lt;/SPAN&gt;is &lt;BR&gt;[code]&lt;BR&gt;def 
callback_fun(msg):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
try:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 
Exception:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Exception 
handled&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 
type(msg)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
traceback.print_exc(file=sys.stdout)&lt;BR&gt;[/code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Result&lt;SPAN class=797582109-08122009&gt;:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=797582109-08122009&gt;&lt;/SPAN&gt;&lt;BR&gt;[code]&lt;BR&gt;Exception handled&lt;BR&gt;&amp;lt;type 
'SwigPyObject'&amp;gt;&lt;BR&gt;Traceback (most recent call last):&lt;BR&gt;&amp;nbsp; File 
&quot;&amp;lt;stdin&amp;gt;&quot;, line 3, in callback_fun&lt;BR&gt;AttributeError: 'SwigPyObject' 
object has no attribute 'service'&lt;BR&gt;[/code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I am expecting the object type as 
RFAMessageWrapper here.&amp;nbsp; Even when the PyObject created in C code uses 
SWIGTYPE_p_RFAMessageWrapper as the typeinfo, still the object created is not 
RFAMessageWrapper.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
should I pass to 
callback&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; so 
that I can access RFAMessageWrapper object in Python code. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper class is wrapped using SWIG 
properly.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Any 
help is appreciated.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 9:42 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, Alok; 'Brian Cole'&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
'&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;'&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; RE: [Swig-user] Python C++ 
extension (multi threaded environment) (Somethign useful ? 
)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;Someone from Python-C++ mailing list told me that 
the&amp;nbsp;&lt;SPAN class=178313600-08122009&gt;way I create argument list is incorrect. 
They did not have knowledge of SWIG so they couldn't help 
more.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;In the function 
below&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;SPAN class=178313600-08122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;The 
code&amp;nbsp;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here I 
create msg2 object as &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper msg2(msg); &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;which 
is on stack. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Other 
person told me that this is incorrect. I should create this object as PyObject 
and then call Py_BuildValue function. It should be created using PyObject_New. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Since 
RFAMessageWrapper is already wrapped using SWIG, I believe there should already 
be a function which would help me in creating a new PyObject for 
RFAMessageWrapper. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Is 
this correct?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Can 
someone tell me which function I should use to create a new PyObject type object 
for RFAMessageWrapper?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 8:21 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, Alok; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; RE: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I still don't have any progress. Funny thing is that, I am 
not even able to catch this exception !!!!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put a try catch block in C code like below 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;While 
debugging, PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;is executed 
and it raises exception but it is not cought in this code. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put 
a try catch block in my python callback function as well ... 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;def 
callback_fun(msg):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
try:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 
Exception:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Exception 
handled&quot;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here 
again exception is not handled. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;msg.service accesss raises Access violation error. The memory at some 
address could not be read.&amp;nbsp; Any access to msg object (of type 
RFAMessageWrapper) which is passed from C++ code raises this exception. It 
doesn't occurs for basic data types. I wonder what I am missing 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Monday, 
December 07, 2009 11:02 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;In the example below, the example of&amp;nbsp;int is working 
fine. The callback is called properly in Python&amp;nbsp; and the int value is 
displayed. All good.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But when I pass the object of type 
&lt;EM&gt;RFAMessageWrapper&lt;/EM&gt;, even type(msg) raises an exception. I am not able to 
send user defined c++ object to Python. Not sure what is wrong 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Also the&amp;nbsp;usage of &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK; 
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;doesn't raise any exception. But I wonder if it succeeds in acquiring the 
GIL.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Please advice.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, 
December 05, 2009 12:32 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I will try to use that but before using the SWIG macros I 
should be able to build the arguments list from the C objects. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;A&lt;SPAN class=078192803-05122009&gt;bove line raises an 
Access violation exception.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;m&lt;SPAN class=078192803-05122009&gt;sg2 is non nul C class 
object.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;where as &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;int blah =1;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;arglist = Py_BuildValue(&quot;&lt;SPAN class=078192803-05122009&gt;i&lt;/SPAN&gt;&quot;,&lt;SPAN class=078192803-05122009&gt;blah&lt;/SPAN&gt;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;this 
line doesn't raise any exception. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;So it 
means it has to do with creating a PyObject from C object. (Works fine for basic 
datatypes.)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
is the issue in this case?&amp;nbsp; How can this be solved?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Brian Cole [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;coleb@...&lt;/a&gt;] 
&lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, December 05, 2009 3:52 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, 
Alok&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: 
[Swig-user] Python C++ extension (multi threaded 
environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;This is a shot in the dark, but have you tried using SWIG's macros 
for acquiring and releasing the GIL? 
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=monospace&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;FONT class=Apple-style-span face=Helvetica&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: normal&quot;&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;-Brian&lt;/DIV&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;
&lt;DIV&gt;
&lt;DIV&gt;On Dec 3, 2009, at 11:57 PM, Jadhav, Alok wrote:&lt;/DIV&gt;&lt;BR class=Apple-interchange-newline&gt;
&lt;BLOCKQUOTE type=&quot;cite&quot;&gt;
  &lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;Guys,&lt;BR&gt;&lt;BR&gt;I created a 
  new wrapper class RFAMesageWrapper which is defined in SWIG&lt;BR&gt;interface file. 
  &amp;nbsp;&lt;BR&gt;&lt;BR&gt;Now the new code looks like&lt;BR&gt;&lt;BR&gt;&amp;nbsp;RFAMessageWrapper 
  msg2(msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&lt;BR&gt;Where as msg2 is identified by Python. 
  &amp;nbsp;Still this function raises&lt;BR&gt;access violation exception. So my thinking 
  that it was because&lt;BR&gt;RFAMessage is not identified as RFAMessage was 
  incorrect.&lt;BR&gt;&lt;BR&gt;Now back to square one. . What is wrong here? Why does this 
  line of code&lt;BR&gt;raises exception?&lt;BR&gt;&lt;BR&gt;Still couldn't identify why state = 
  PyGILState_Ensure(); blocks 
  the&lt;BR&gt;thread.&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;&lt;BR&gt;-----Original 
  Message-----&lt;BR&gt;From: Jadhav, Alok &lt;BR&gt;Sent: Friday, December 04, 2009 3:05 
  PM&lt;BR&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;Subject: 
  [Swig-user] Python C++ extension (multi threaded 
  environment)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Hello,&lt;BR&gt;&lt;BR&gt;I have made some progress in using C 
  library to call from Python. In&lt;BR&gt;next step I have to register a callback 
  function so that C can call&lt;BR&gt;ProcessMessage() function from which is written 
  in python. My code is&lt;BR&gt;not working properly and I have couple of questions 
  regarding this. &lt;BR&gt;&lt;BR&gt;Backgroun&lt;BR&gt;----------&lt;BR&gt;&lt;BR&gt;Python creates 
  RFAClient object. This happens in Python main thread. Now&lt;BR&gt;Python calls a 
  function to start postoffice. Postoffice spawns a new C++&lt;BR&gt;thread and it 
  runs in a while loop listening to some data. Now when a&lt;BR&gt;message arrives on 
  this thread it should call Python function to process&lt;BR&gt;this data. Looks 
  simple .. But multi threaded environment, C++ and&lt;BR&gt;python all together makes 
  it a bit messy :)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Issues&lt;BR&gt;------&lt;BR&gt;&lt;BR&gt;My callback registed in C 
  looks like this&lt;BR&gt;&lt;BR&gt;static void PythonCallBack(RFAMessage msg, void 
  *clientdata) { PyObject&lt;BR&gt;*func, *arglist;&lt;BR&gt;&lt;BR&gt;PyGILState_STATE 
  state;&lt;BR&gt;state = PyGILState_Ensure();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;func = (PyObject *) 
  clientdata; 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Get Python function&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Call Python&lt;BR&gt;&amp;nbsp;&amp;nbsp;Py_DECREF(arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Trash arglist&lt;BR&gt;&lt;BR&gt;PyGILState_Release(state);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;Here 2 lines are 
  giving me exceptions.. (Remember this is called from&lt;BR&gt;postoffice thread.. 
  which is not the main Python thread. .. I 
  have&lt;BR&gt;called&lt;BR&gt;PyEval_InitThreads() function; at the start of main 
  thread)&lt;BR&gt;&lt;BR&gt;-&amp;gt; arglist = 
  Py_BuildValue(&quot;(O)&quot;,msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Raises Access Violation 
  error. I have no idea why this is&lt;BR&gt;occuring. &lt;BR&gt;My reasoning : msg is of 
  type RFAMessage. &amp;nbsp;RFAMessage is not part of my&lt;BR&gt;swig interface file, 
  but it is part of the library used by my C++&lt;BR&gt;wrapper project. Can 
  RAFMessage object be converted to PyObject if it is&lt;BR&gt;not part of SWIG 
  interface file? &lt;BR&gt;&amp;nbsp;What are your suggestions on this?&lt;BR&gt;&lt;BR&gt;-&amp;gt; 
  state = PyGILState_Ensure();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The thread just gets 
  blocked on this call. It doesn't do anything&lt;BR&gt;after this. After searching on 
  internet I couldn't find anything which&lt;BR&gt;can describe why postOffice thread 
  may get blocked here. Any reasons?&lt;BR&gt;solutions?&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Please advice. I 
  have spent more than 2 days trying to tackle this&lt;BR&gt;single 
  issue.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;--&lt;BR&gt;View this message in 
  context:&lt;BR&gt;&lt;A href=&quot;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&lt;/A&gt;&lt;BR&gt;ment%29-tp26635775p26635775.html&lt;BR&gt;Sent 
  from the swig-user mailing list archive at 
  Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------&lt;BR&gt;------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;BR&gt;=============================================================================== 
  &lt;BR&gt;Please access the attached hyperlink for an important electronic 
  communications disclaimer: 
  &lt;BR&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html 
  &lt;BR&gt;=============================================================================== 
  &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;BR /&gt;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;&lt;html&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:8.0pt;font-family:Courier'&gt;==============================================================================&lt;br&gt;Please access the attached hyperlink for an important electronic communications disclaimer:&lt;br&gt;&lt;a href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/a&gt;&lt;br&gt;==============================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/html&gt;&lt;br&gt;
&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Return on Information:
&lt;br&gt;Google Enterprise Search pays you back
&lt;br&gt;Get the facts.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/google-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/google-dev2dev&lt;/a&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26705219&amp;i=10&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26705219.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26703634</id>
	<title>Converting c++ object to Python object</title>
	<published>2009-12-08T17:07:21Z</published>
	<updated>2009-12-08T17:07:21Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 3.2//EN&quot;&gt;
&lt;HTML&gt;
&lt;HEAD&gt;
&lt;META HTTP-EQUIV=&quot;Content-Type&quot; CONTENT=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META NAME=&quot;Generator&quot; CONTENT=&quot;MS Exchange Server version 6.5.7654.12&quot;&gt;
&lt;TITLE&gt;Converting c++ object to Python object&lt;/TITLE&gt;
&lt;/HEAD&gt;
&lt;BODY&gt;
&lt;!-- Converted from text/rtf format --&gt;
&lt;BR&gt;

&lt;P&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;In my C++ callback function below&lt;/FONT&gt;
&lt;/P&gt;

&lt;P&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;[code]&lt;/FONT&gt;
&lt;/P&gt;

&lt;P&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT COLOR=&quot;#0000FF&quot; SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;static&lt;/FONT&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt; &lt;/FONT&gt;&lt;FONT COLOR=&quot;#0000FF&quot; SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;void&lt;/FONT&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt; PythonCallBack(RFAMessage *msg, &lt;/FONT&gt;&lt;FONT COLOR=&quot;#0000FF&quot; SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;void&lt;/FONT&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt; *clientdata)&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;{&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&amp;nbsp;&amp;nbsp; PyObject *func, *arglist;&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&amp;nbsp;&amp;nbsp; PyGILState_STATE state; &lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&amp;nbsp;&amp;nbsp; state = PyGILState_Ensure();&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&amp;nbsp;&amp;nbsp; func = (PyObject *) clientdata;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT COLOR=&quot;#008000&quot; SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;// Get Python function&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&amp;nbsp;&amp;nbsp; RFAMessageWrapper msg2(msg);&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&lt;B&gt;&amp;nbsp;&amp;nbsp; PyObject *argobj = SWIG_NewPointerObj(SWIG_as_voidptr(&amp;amp;msg2), SWIGTYPE_p_RFAMessageWrapper , SWIG_POINTER_NEW |&amp;nbsp; 0 );&lt;/B&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT COLOR=&quot;#0000FF&quot; SIZE=2 FACE=&quot;Arial&quot;&gt;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT COLOR=&quot;#0000FF&quot; SIZE=2 FACE=&quot;Arial&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN LANG=&quot;ja&quot;&gt; &lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;arglist = Py_BuildValue(&lt;/FONT&gt;&lt;FONT COLOR=&quot;#A31515&quot; SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&amp;quot;(O)&amp;quot;&lt;/FONT&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;,argobj);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT COLOR=&quot;#008000&quot; SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;// Build argument list&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN LANG=&quot;ja&quot;&gt; &lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT COLOR=&quot;#008000&quot; SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;// Call Python&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&amp;nbsp; Py_XDECREF(arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT COLOR=&quot;#008000&quot; SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;// Trash arglist&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT COLOR=&quot;#008000&quot; SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;//SWIG_PYTHON_THREAD_END_BLOCK;&lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;&amp;nbsp;&amp;nbsp; PyGILState_Release(state); &lt;/FONT&gt;&lt;/SPAN&gt;

&lt;BR&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;/SPAN&gt;
&lt;/P&gt;

&lt;P&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;[\code]&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;/P&gt;

&lt;P&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;Can you tell me if the usage of&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;B&gt;&lt;/B&gt;&lt;B&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN LANG=&quot;ja&quot;&gt; &lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;SWIG_NewPointerObj&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt; &lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;is correct? I want to convert a C++ class object into python equivalent object. In the python code, the objetc is identified as&lt;/FONT&gt;&lt;B&gt; &lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;SwigPyObject&lt;/FONT&gt;&lt;/B&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt; and not&lt;/FONT&gt;&lt;B&gt;&lt;/B&gt;&lt;B&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN LANG=&quot;ja&quot;&gt; &lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;RFAMessageWrapper&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt; &lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;which I am expecting.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;How can I convert&lt;/FONT&gt;&lt;B&gt;&lt;/B&gt;&lt;B&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN LANG=&quot;ja&quot;&gt; &lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;RFAMessageWrapper&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt; &lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;object into its Python equivalent to that in my Python function I can use the passed object as&lt;/FONT&gt;&lt;B&gt;&lt;/B&gt;&lt;B&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;B&gt;&lt;SPAN LANG=&quot;ja&quot;&gt; &lt;FONT SIZE=2 FACE=&quot;&amp;#65325;&amp;#65331; &amp;#12468;&amp;#12471;&amp;#12483;&amp;#12463;&quot;&gt;RFAMessageWrappe&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;r.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;

&lt;P&gt;&lt;B&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;Regards, &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;

&lt;BR&gt;&lt;B&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;FONT SIZE=2 FACE=&quot;Arial&quot;&gt;Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN LANG=&quot;en-us&quot;&gt;&lt;/SPAN&gt;&lt;SPAN LANG=&quot;ja&quot;&gt;&lt;/SPAN&gt;
&lt;/P&gt;

&lt;/BODY&gt;
&lt;/HTML&gt;&lt;BR /&gt;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;&lt;html&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:8.0pt;font-family:Courier'&gt;==============================================================================&lt;br&gt;Please access the attached hyperlink for an important electronic communications disclaimer:&lt;br&gt;&lt;a href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/a&gt;&lt;br&gt;==============================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/html&gt;&lt;br&gt;
&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Return on Information:
&lt;br&gt;Google Enterprise Search pays you back
&lt;br&gt;Get the facts.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/google-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/google-dev2dev&lt;/a&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26703634&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Converting-c%2B%2B-object-to-Python-object-tp26703634p26703634.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26691016</id>
	<title>Re: Python C++ extension (multi threaded environment) (Somethign useful ? )</title>
	<published>2009-12-08T01:25:19Z</published>
	<updated>2009-12-08T01:25:19Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.3603&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY style=&quot;WORD-WRAP: break-word; webkit-nbsp-mode: space; webkit-line-break: after-white-space&quot;&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I used SWIG_NewPointerObj method to 
create a PyObject. It removed all my exceptions and seems to be working fine. 
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;[code]&lt;BR&gt;PyObject *argobj = 
SWIG_NewPointerObj(SWIG_as_voidptr(&amp;amp;msg2), SWIGTYPE_p_RFAMessageWrapper, 
SWIG_POINTER_NEW |&amp;nbsp; 0 );&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,argobj);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument 
list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 
Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;[\code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Callback is called&lt;SPAN class=797582109-08122009&gt; properly&lt;/SPAN&gt;. &lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But now, in Python code&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Access 
to the passed object raises exception. I am expecting RFAMessageWrapper object 
in python code. But using SWIG_NewPointerObj passes SwigPyObject to python 
instead.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Python call back&amp;nbsp;&lt;SPAN class=797582109-08122009&gt;function &lt;/SPAN&gt;is &lt;BR&gt;[code]&lt;BR&gt;def 
callback_fun(msg):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
try:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 
Exception:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Exception 
handled&quot;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 
type(msg)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
traceback.print_exc(file=sys.stdout)&lt;BR&gt;[/code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Result&lt;SPAN class=797582109-08122009&gt;:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;SPAN class=797582109-08122009&gt;&lt;/SPAN&gt;&lt;BR&gt;[code]&lt;BR&gt;Exception handled&lt;BR&gt;&amp;lt;type 
'SwigPyObject'&amp;gt;&lt;BR&gt;Traceback (most recent call last):&lt;BR&gt;&amp;nbsp; File 
&quot;&amp;lt;stdin&amp;gt;&quot;, line 3, in callback_fun&lt;BR&gt;AttributeError: 'SwigPyObject' 
object has no attribute 'service'&lt;BR&gt;[/code]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I am expecting the object type as 
RFAMessageWrapper here.&amp;nbsp; Even when the PyObject created in C code uses 
SWIGTYPE_p_RFAMessageWrapper as the typeinfo, still the object created is not 
RFAMessageWrapper.&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
should I pass to 
callback&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; so 
that I can access RFAMessageWrapper object in Python code. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper class is wrapped using SWIG 
properly.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Any 
help is appreciated.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=797582109-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 9:42 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, Alok; 'Brian Cole'&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
'&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26691016&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;'&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; RE: [Swig-user] Python C++ 
extension (multi threaded environment) (Somethign useful ? 
)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;Someone from Python-C++ mailing list told me that 
the&amp;nbsp;&lt;SPAN class=178313600-08122009&gt;way I create argument list is incorrect. 
They did not have knowledge of SWIG so they couldn't help 
more.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;In the function 
below&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;SPAN class=178313600-08122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;The 
code&amp;nbsp;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here I 
create msg2 object as &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper msg2(msg); &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;which 
is on stack. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Other 
person told me that this is incorrect. I should create this object as PyObject 
and then call Py_BuildValue function. It should be created using PyObject_New. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Since 
RFAMessageWrapper is already wrapped using SWIG, I believe there should already 
be a function which would help me in creating a new PyObject for 
RFAMessageWrapper. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Is 
this correct?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Can 
someone tell me which function I should use to create a new PyObject type object 
for RFAMessageWrapper?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 8:21 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, Alok; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26691016&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; RE: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I still don't have any progress. Funny thing is that, I am 
not even able to catch this exception !!!!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put a try catch block in C code like below 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;While 
debugging, PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;is executed 
and it raises exception but it is not cought in this code. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put 
a try catch block in my python callback function as well ... 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;def 
callback_fun(msg):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
try:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 
Exception:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Exception 
handled&quot;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here 
again exception is not handled. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;msg.service accesss raises Access violation error. The memory at some 
address could not be read.&amp;nbsp; Any access to msg object (of type 
RFAMessageWrapper) which is passed from C++ code raises this exception. It 
doesn't occurs for basic data types. I wonder what I am missing 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Monday, 
December 07, 2009 11:02 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26691016&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;In the example below, the example of&amp;nbsp;int is working 
fine. The callback is called properly in Python&amp;nbsp; and the int value is 
displayed. All good.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But when I pass the object of type 
&lt;EM&gt;RFAMessageWrapper&lt;/EM&gt;, even type(msg) raises an exception. I am not able to 
send user defined c++ object to Python. Not sure what is wrong 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Also the&amp;nbsp;usage of &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK; 
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;doesn't raise any exception. But I wonder if it succeeds in acquiring the 
GIL.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Please advice.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, 
December 05, 2009 12:32 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26691016&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I will try to use that but before using the SWIG macros I 
should be able to build the arguments list from the C objects. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;A&lt;SPAN class=078192803-05122009&gt;bove line raises an 
Access violation exception.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;m&lt;SPAN class=078192803-05122009&gt;sg2 is non nul C class 
object.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;where as &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;int blah =1;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;arglist = Py_BuildValue(&quot;&lt;SPAN class=078192803-05122009&gt;i&lt;/SPAN&gt;&quot;,&lt;SPAN class=078192803-05122009&gt;blah&lt;/SPAN&gt;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;this 
line doesn't raise any exception. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;So it 
means it has to do with creating a PyObject from C object. (Works fine for basic 
datatypes.)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
is the issue in this case?&amp;nbsp; How can this be solved?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Brian Cole [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26691016&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;coleb@...&lt;/a&gt;] 
&lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, December 05, 2009 3:52 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, 
Alok&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26691016&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: 
[Swig-user] Python C++ extension (multi threaded 
environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;This is a shot in the dark, but have you tried using SWIG's macros 
for acquiring and releasing the GIL? 
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=monospace&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;FONT class=Apple-style-span face=Helvetica&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: normal&quot;&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;-Brian&lt;/DIV&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;
&lt;DIV&gt;
&lt;DIV&gt;On Dec 3, 2009, at 11:57 PM, Jadhav, Alok wrote:&lt;/DIV&gt;&lt;BR class=Apple-interchange-newline&gt;
&lt;BLOCKQUOTE type=&quot;cite&quot;&gt;
  &lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;Guys,&lt;BR&gt;&lt;BR&gt;I created a 
  new wrapper class RFAMesageWrapper which is defined in SWIG&lt;BR&gt;interface file. 
  &amp;nbsp;&lt;BR&gt;&lt;BR&gt;Now the new code looks like&lt;BR&gt;&lt;BR&gt;&amp;nbsp;RFAMessageWrapper 
  msg2(msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&lt;BR&gt;Where as msg2 is identified by Python. 
  &amp;nbsp;Still this function raises&lt;BR&gt;access violation exception. So my thinking 
  that it was because&lt;BR&gt;RFAMessage is not identified as RFAMessage was 
  incorrect.&lt;BR&gt;&lt;BR&gt;Now back to square one. . What is wrong here? Why does this 
  line of code&lt;BR&gt;raises exception?&lt;BR&gt;&lt;BR&gt;Still couldn't identify why state = 
  PyGILState_Ensure(); blocks 
  the&lt;BR&gt;thread.&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;&lt;BR&gt;-----Original 
  Message-----&lt;BR&gt;From: Jadhav, Alok &lt;BR&gt;Sent: Friday, December 04, 2009 3:05 
  PM&lt;BR&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26691016&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;Subject: 
  [Swig-user] Python C++ extension (multi threaded 
  environment)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Hello,&lt;BR&gt;&lt;BR&gt;I have made some progress in using C 
  library to call from Python. In&lt;BR&gt;next step I have to register a callback 
  function so that C can call&lt;BR&gt;ProcessMessage() function from which is written 
  in python. My code is&lt;BR&gt;not working properly and I have couple of questions 
  regarding this. &lt;BR&gt;&lt;BR&gt;Backgroun&lt;BR&gt;----------&lt;BR&gt;&lt;BR&gt;Python creates 
  RFAClient object. This happens in Python main thread. Now&lt;BR&gt;Python calls a 
  function to start postoffice. Postoffice spawns a new C++&lt;BR&gt;thread and it 
  runs in a while loop listening to some data. Now when a&lt;BR&gt;message arrives on 
  this thread it should call Python function to process&lt;BR&gt;this data. Looks 
  simple .. But multi threaded environment, C++ and&lt;BR&gt;python all together makes 
  it a bit messy :)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Issues&lt;BR&gt;------&lt;BR&gt;&lt;BR&gt;My callback registed in C 
  looks like this&lt;BR&gt;&lt;BR&gt;static void PythonCallBack(RFAMessage msg, void 
  *clientdata) { PyObject&lt;BR&gt;*func, *arglist;&lt;BR&gt;&lt;BR&gt;PyGILState_STATE 
  state;&lt;BR&gt;state = PyGILState_Ensure();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;func = (PyObject *) 
  clientdata; 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Get Python function&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Call Python&lt;BR&gt;&amp;nbsp;&amp;nbsp;Py_DECREF(arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Trash arglist&lt;BR&gt;&lt;BR&gt;PyGILState_Release(state);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;Here 2 lines are 
  giving me exceptions.. (Remember this is called from&lt;BR&gt;postoffice thread.. 
  which is not the main Python thread. .. I 
  have&lt;BR&gt;called&lt;BR&gt;PyEval_InitThreads() function; at the start of main 
  thread)&lt;BR&gt;&lt;BR&gt;-&amp;gt; arglist = 
  Py_BuildValue(&quot;(O)&quot;,msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Raises Access Violation 
  error. I have no idea why this is&lt;BR&gt;occuring. &lt;BR&gt;My reasoning : msg is of 
  type RFAMessage. &amp;nbsp;RFAMessage is not part of my&lt;BR&gt;swig interface file, 
  but it is part of the library used by my C++&lt;BR&gt;wrapper project. Can 
  RAFMessage object be converted to PyObject if it is&lt;BR&gt;not part of SWIG 
  interface file? &lt;BR&gt;&amp;nbsp;What are your suggestions on this?&lt;BR&gt;&lt;BR&gt;-&amp;gt; 
  state = PyGILState_Ensure();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The thread just gets 
  blocked on this call. It doesn't do anything&lt;BR&gt;after this. After searching on 
  internet I couldn't find anything which&lt;BR&gt;can describe why postOffice thread 
  may get blocked here. Any reasons?&lt;BR&gt;solutions?&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Please advice. I 
  have spent more than 2 days trying to tackle this&lt;BR&gt;single 
  issue.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;--&lt;BR&gt;View this message in 
  context:&lt;BR&gt;&lt;A href=&quot;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&lt;/A&gt;&lt;BR&gt;ment%29-tp26635775p26635775.html&lt;BR&gt;Sent 
  from the swig-user mailing list archive at 
  Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------&lt;BR&gt;------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26691016&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;BR&gt;=============================================================================== 
  &lt;BR&gt;Please access the attached hyperlink for an important electronic 
  communications disclaimer: 
  &lt;BR&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html 
  &lt;BR&gt;=============================================================================== 
  &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26691016&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;BR /&gt;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;&lt;html&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:8.0pt;font-family:Courier'&gt;==============================================================================&lt;br&gt;Please access the attached hyperlink for an important electronic communications disclaimer:&lt;br&gt;&lt;a href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/a&gt;&lt;br&gt;==============================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/html&gt;&lt;br&gt;
&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Return on Information:
&lt;br&gt;Google Enterprise Search pays you back
&lt;br&gt;Get the facts.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/google-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/google-dev2dev&lt;/a&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26691016&amp;i=9&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26691016.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26687001</id>
	<title>Re: Python C++ extension (multi threaded environment) (Somethign useful ? )</title>
	<published>2009-12-07T16:41:53Z</published>
	<updated>2009-12-07T16:41:53Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.3603&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY style=&quot;WORD-WRAP: break-word; webkit-nbsp-mode: space; webkit-line-break: after-white-space&quot;&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;Someone from Python-C++ mailing list told me that 
the&amp;nbsp;&lt;SPAN class=178313600-08122009&gt;way I create argument list is incorrect. 
They did not have knowledge of SWIG so they couldn't help 
more.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;In the function 
below&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;SPAN class=178313600-08122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;The 
code&amp;nbsp;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here I 
create msg2 object as &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper msg2(msg); &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;which 
is on stack. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Other 
person told me that this is incorrect. I should create this object as PyObject 
and then call Py_BuildValue function. It should be created using PyObject_New. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Since 
RFAMessageWrapper is already wrapped using SWIG, I believe there should already 
be a function which would help me in creating a new PyObject for 
RFAMessageWrapper. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Is 
this correct?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Can 
someone tell me which function I should use to create a new PyObject type object 
for RFAMessageWrapper?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards,&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=178313600-08122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=079473500-08122009&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=178313600-08122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Tuesday, 
December 08, 2009 8:21 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, Alok; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26687001&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; RE: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I still don't have any progress. Funny thing is that, I am 
not even able to catch this exception !!!!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put a try catch block in C code like below 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;While 
debugging, PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;is executed 
and it raises exception but it is not cought in this code. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put 
a try catch block in my python callback function as well ... 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;def 
callback_fun(msg):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
try:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 
Exception:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Exception 
handled&quot;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here 
again exception is not handled. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;msg.service accesss raises Access violation error. The memory at some 
address could not be read.&amp;nbsp; Any access to msg object (of type 
RFAMessageWrapper) which is passed from C++ code raises this exception. It 
doesn't occurs for basic data types. I wonder what I am missing 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Monday, 
December 07, 2009 11:02 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26687001&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;In the example below, the example of&amp;nbsp;int is working 
fine. The callback is called properly in Python&amp;nbsp; and the int value is 
displayed. All good.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But when I pass the object of type 
&lt;EM&gt;RFAMessageWrapper&lt;/EM&gt;, even type(msg) raises an exception. I am not able to 
send user defined c++ object to Python. Not sure what is wrong 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Also the&amp;nbsp;usage of &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK; 
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;doesn't raise any exception. But I wonder if it succeeds in acquiring the 
GIL.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Please advice.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, 
December 05, 2009 12:32 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26687001&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I will try to use that but before using the SWIG macros I 
should be able to build the arguments list from the C objects. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;A&lt;SPAN class=078192803-05122009&gt;bove line raises an 
Access violation exception.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;m&lt;SPAN class=078192803-05122009&gt;sg2 is non nul C class 
object.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;where as &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;int blah =1;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;arglist = Py_BuildValue(&quot;&lt;SPAN class=078192803-05122009&gt;i&lt;/SPAN&gt;&quot;,&lt;SPAN class=078192803-05122009&gt;blah&lt;/SPAN&gt;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;this 
line doesn't raise any exception. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;So it 
means it has to do with creating a PyObject from C object. (Works fine for basic 
datatypes.)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
is the issue in this case?&amp;nbsp; How can this be solved?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Brian Cole [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26687001&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;coleb@...&lt;/a&gt;] 
&lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, December 05, 2009 3:52 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, 
Alok&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26687001&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: 
[Swig-user] Python C++ extension (multi threaded 
environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;This is a shot in the dark, but have you tried using SWIG's macros 
for acquiring and releasing the GIL? 
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=monospace&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;FONT class=Apple-style-span face=Helvetica&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: normal&quot;&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;-Brian&lt;/DIV&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;
&lt;DIV&gt;
&lt;DIV&gt;On Dec 3, 2009, at 11:57 PM, Jadhav, Alok wrote:&lt;/DIV&gt;&lt;BR class=Apple-interchange-newline&gt;
&lt;BLOCKQUOTE type=&quot;cite&quot;&gt;
  &lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;Guys,&lt;BR&gt;&lt;BR&gt;I created a 
  new wrapper class RFAMesageWrapper which is defined in SWIG&lt;BR&gt;interface file. 
  &amp;nbsp;&lt;BR&gt;&lt;BR&gt;Now the new code looks like&lt;BR&gt;&lt;BR&gt;&amp;nbsp;RFAMessageWrapper 
  msg2(msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&lt;BR&gt;Where as msg2 is identified by Python. 
  &amp;nbsp;Still this function raises&lt;BR&gt;access violation exception. So my thinking 
  that it was because&lt;BR&gt;RFAMessage is not identified as RFAMessage was 
  incorrect.&lt;BR&gt;&lt;BR&gt;Now back to square one. . What is wrong here? Why does this 
  line of code&lt;BR&gt;raises exception?&lt;BR&gt;&lt;BR&gt;Still couldn't identify why state = 
  PyGILState_Ensure(); blocks 
  the&lt;BR&gt;thread.&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;&lt;BR&gt;-----Original 
  Message-----&lt;BR&gt;From: Jadhav, Alok &lt;BR&gt;Sent: Friday, December 04, 2009 3:05 
  PM&lt;BR&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26687001&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;Subject: 
  [Swig-user] Python C++ extension (multi threaded 
  environment)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Hello,&lt;BR&gt;&lt;BR&gt;I have made some progress in using C 
  library to call from Python. In&lt;BR&gt;next step I have to register a callback 
  function so that C can call&lt;BR&gt;ProcessMessage() function from which is written 
  in python. My code is&lt;BR&gt;not working properly and I have couple of questions 
  regarding this. &lt;BR&gt;&lt;BR&gt;Backgroun&lt;BR&gt;----------&lt;BR&gt;&lt;BR&gt;Python creates 
  RFAClient object. This happens in Python main thread. Now&lt;BR&gt;Python calls a 
  function to start postoffice. Postoffice spawns a new C++&lt;BR&gt;thread and it 
  runs in a while loop listening to some data. Now when a&lt;BR&gt;message arrives on 
  this thread it should call Python function to process&lt;BR&gt;this data. Looks 
  simple .. But multi threaded environment, C++ and&lt;BR&gt;python all together makes 
  it a bit messy :)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Issues&lt;BR&gt;------&lt;BR&gt;&lt;BR&gt;My callback registed in C 
  looks like this&lt;BR&gt;&lt;BR&gt;static void PythonCallBack(RFAMessage msg, void 
  *clientdata) { PyObject&lt;BR&gt;*func, *arglist;&lt;BR&gt;&lt;BR&gt;PyGILState_STATE 
  state;&lt;BR&gt;state = PyGILState_Ensure();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;func = (PyObject *) 
  clientdata; 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Get Python function&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Call Python&lt;BR&gt;&amp;nbsp;&amp;nbsp;Py_DECREF(arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Trash arglist&lt;BR&gt;&lt;BR&gt;PyGILState_Release(state);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;Here 2 lines are 
  giving me exceptions.. (Remember this is called from&lt;BR&gt;postoffice thread.. 
  which is not the main Python thread. .. I 
  have&lt;BR&gt;called&lt;BR&gt;PyEval_InitThreads() function; at the start of main 
  thread)&lt;BR&gt;&lt;BR&gt;-&amp;gt; arglist = 
  Py_BuildValue(&quot;(O)&quot;,msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Raises Access Violation 
  error. I have no idea why this is&lt;BR&gt;occuring. &lt;BR&gt;My reasoning : msg is of 
  type RFAMessage. &amp;nbsp;RFAMessage is not part of my&lt;BR&gt;swig interface file, 
  but it is part of the library used by my C++&lt;BR&gt;wrapper project. Can 
  RAFMessage object be converted to PyObject if it is&lt;BR&gt;not part of SWIG 
  interface file? &lt;BR&gt;&amp;nbsp;What are your suggestions on this?&lt;BR&gt;&lt;BR&gt;-&amp;gt; 
  state = PyGILState_Ensure();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The thread just gets 
  blocked on this call. It doesn't do anything&lt;BR&gt;after this. After searching on 
  internet I couldn't find anything which&lt;BR&gt;can describe why postOffice thread 
  may get blocked here. Any reasons?&lt;BR&gt;solutions?&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Please advice. I 
  have spent more than 2 days trying to tackle this&lt;BR&gt;single 
  issue.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;--&lt;BR&gt;View this message in 
  context:&lt;BR&gt;&lt;A href=&quot;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&lt;/A&gt;&lt;BR&gt;ment%29-tp26635775p26635775.html&lt;BR&gt;Sent 
  from the swig-user mailing list archive at 
  Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------&lt;BR&gt;------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26687001&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;BR&gt;=============================================================================== 
  &lt;BR&gt;Please access the attached hyperlink for an important electronic 
  communications disclaimer: 
  &lt;BR&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html 
  &lt;BR&gt;=============================================================================== 
  &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26687001&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;BR /&gt;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;&lt;html&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:8.0pt;font-family:Courier'&gt;==============================================================================&lt;br&gt;Please access the attached hyperlink for an important electronic communications disclaimer:&lt;br&gt;&lt;a href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/a&gt;&lt;br&gt;==============================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/html&gt;&lt;br&gt;
&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Return on Information:
&lt;br&gt;Google Enterprise Search pays you back
&lt;br&gt;Get the facts.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/google-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/google-dev2dev&lt;/a&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26687001&amp;i=8&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26687001.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26686157</id>
	<title>Re: Python C++ extension (multi threaded environment)</title>
	<published>2009-12-07T15:20:36Z</published>
	<updated>2009-12-07T15:20:36Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.3603&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY style=&quot;WORD-WRAP: break-word; webkit-nbsp-mode: space; webkit-line-break: after-white-space&quot;&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I still don't have any progress. Funny thing is that, I am 
not even able to catch this exception !!!!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put a try catch block in C code like below 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt; RFAMessageWrapper 
msg2(msg);&lt;BR&gt;&amp;nbsp;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = 
Py_BuildValue(&quot;(O)&quot;,msg2);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Build argument list&lt;BR&gt;&amp;nbsp;&amp;nbsp;//arglist = Py_BuildValue(&quot;(i)&quot;, 
blah);&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
// Call Python&lt;BR&gt;&amp;nbsp;} catch (...) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;cout&amp;lt;&amp;lt;&quot;Unknown 
exception...&quot;&amp;lt;&amp;lt;endl;&lt;BR&gt;&amp;nbsp;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;While 
debugging, PyEval_CallObject(func,arglist);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;is executed 
and it raises exception but it is not cought in this code. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I put 
a try catch block in my python callback function as well ... 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;def 
callback_fun(msg):&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
try:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;RFAMessage received 
for service:&quot;+msg.service&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; except 
Exception:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &quot;Exception 
handled&quot;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Here 
again exception is not handled. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;msg.service accesss raises Access violation error. The memory at some 
address could not be read.&amp;nbsp; Any access to msg object (of type 
RFAMessageWrapper) which is passed from C++ code raises this exception. It 
doesn't occurs for basic data types. I wonder what I am missing 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=240571323-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Monday, 
December 07, 2009 11:02 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26686157&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;In the example below, the example of&amp;nbsp;int is working 
fine. The callback is called properly in Python&amp;nbsp; and the int value is 
displayed. All good.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But when I pass the object of type 
&lt;EM&gt;RFAMessageWrapper&lt;/EM&gt;, even type(msg) raises an exception. I am not able to 
send user defined c++ object to Python. Not sure what is wrong 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Also the&amp;nbsp;usage of &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK; 
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;doesn't raise any exception. But I wonder if it succeeds in acquiring the 
GIL.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Please advice.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, 
December 05, 2009 12:32 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26686157&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I will try to use that but before using the SWIG macros I 
should be able to build the arguments list from the C objects. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;A&lt;SPAN class=078192803-05122009&gt;bove line raises an 
Access violation exception.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;m&lt;SPAN class=078192803-05122009&gt;sg2 is non nul C class 
object.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;where as &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;int blah =1;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;arglist = Py_BuildValue(&quot;&lt;SPAN class=078192803-05122009&gt;i&lt;/SPAN&gt;&quot;,&lt;SPAN class=078192803-05122009&gt;blah&lt;/SPAN&gt;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;this 
line doesn't raise any exception. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;So it 
means it has to do with creating a PyObject from C object. (Works fine for basic 
datatypes.)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
is the issue in this case?&amp;nbsp; How can this be solved?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Brian Cole [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26686157&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;coleb@...&lt;/a&gt;] 
&lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, December 05, 2009 3:52 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, 
Alok&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26686157&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: 
[Swig-user] Python C++ extension (multi threaded 
environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;This is a shot in the dark, but have you tried using SWIG's macros 
for acquiring and releasing the GIL? 
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=monospace&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;FONT class=Apple-style-span face=Helvetica&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: normal&quot;&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;-Brian&lt;/DIV&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;
&lt;DIV&gt;
&lt;DIV&gt;On Dec 3, 2009, at 11:57 PM, Jadhav, Alok wrote:&lt;/DIV&gt;&lt;BR class=Apple-interchange-newline&gt;
&lt;BLOCKQUOTE type=&quot;cite&quot;&gt;
  &lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;Guys,&lt;BR&gt;&lt;BR&gt;I created a 
  new wrapper class RFAMesageWrapper which is defined in SWIG&lt;BR&gt;interface file. 
  &amp;nbsp;&lt;BR&gt;&lt;BR&gt;Now the new code looks like&lt;BR&gt;&lt;BR&gt;&amp;nbsp;RFAMessageWrapper 
  msg2(msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&lt;BR&gt;Where as msg2 is identified by Python. 
  &amp;nbsp;Still this function raises&lt;BR&gt;access violation exception. So my thinking 
  that it was because&lt;BR&gt;RFAMessage is not identified as RFAMessage was 
  incorrect.&lt;BR&gt;&lt;BR&gt;Now back to square one. . What is wrong here? Why does this 
  line of code&lt;BR&gt;raises exception?&lt;BR&gt;&lt;BR&gt;Still couldn't identify why state = 
  PyGILState_Ensure(); blocks 
  the&lt;BR&gt;thread.&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;&lt;BR&gt;-----Original 
  Message-----&lt;BR&gt;From: Jadhav, Alok &lt;BR&gt;Sent: Friday, December 04, 2009 3:05 
  PM&lt;BR&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26686157&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;Subject: 
  [Swig-user] Python C++ extension (multi threaded 
  environment)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Hello,&lt;BR&gt;&lt;BR&gt;I have made some progress in using C 
  library to call from Python. In&lt;BR&gt;next step I have to register a callback 
  function so that C can call&lt;BR&gt;ProcessMessage() function from which is written 
  in python. My code is&lt;BR&gt;not working properly and I have couple of questions 
  regarding this. &lt;BR&gt;&lt;BR&gt;Backgroun&lt;BR&gt;----------&lt;BR&gt;&lt;BR&gt;Python creates 
  RFAClient object. This happens in Python main thread. Now&lt;BR&gt;Python calls a 
  function to start postoffice. Postoffice spawns a new C++&lt;BR&gt;thread and it 
  runs in a while loop listening to some data. Now when a&lt;BR&gt;message arrives on 
  this thread it should call Python function to process&lt;BR&gt;this data. Looks 
  simple .. But multi threaded environment, C++ and&lt;BR&gt;python all together makes 
  it a bit messy :)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Issues&lt;BR&gt;------&lt;BR&gt;&lt;BR&gt;My callback registed in C 
  looks like this&lt;BR&gt;&lt;BR&gt;static void PythonCallBack(RFAMessage msg, void 
  *clientdata) { PyObject&lt;BR&gt;*func, *arglist;&lt;BR&gt;&lt;BR&gt;PyGILState_STATE 
  state;&lt;BR&gt;state = PyGILState_Ensure();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;func = (PyObject *) 
  clientdata; 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Get Python function&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Call Python&lt;BR&gt;&amp;nbsp;&amp;nbsp;Py_DECREF(arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Trash arglist&lt;BR&gt;&lt;BR&gt;PyGILState_Release(state);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;Here 2 lines are 
  giving me exceptions.. (Remember this is called from&lt;BR&gt;postoffice thread.. 
  which is not the main Python thread. .. I 
  have&lt;BR&gt;called&lt;BR&gt;PyEval_InitThreads() function; at the start of main 
  thread)&lt;BR&gt;&lt;BR&gt;-&amp;gt; arglist = 
  Py_BuildValue(&quot;(O)&quot;,msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Raises Access Violation 
  error. I have no idea why this is&lt;BR&gt;occuring. &lt;BR&gt;My reasoning : msg is of 
  type RFAMessage. &amp;nbsp;RFAMessage is not part of my&lt;BR&gt;swig interface file, 
  but it is part of the library used by my C++&lt;BR&gt;wrapper project. Can 
  RAFMessage object be converted to PyObject if it is&lt;BR&gt;not part of SWIG 
  interface file? &lt;BR&gt;&amp;nbsp;What are your suggestions on this?&lt;BR&gt;&lt;BR&gt;-&amp;gt; 
  state = PyGILState_Ensure();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The thread just gets 
  blocked on this call. It doesn't do anything&lt;BR&gt;after this. After searching on 
  internet I couldn't find anything which&lt;BR&gt;can describe why postOffice thread 
  may get blocked here. Any reasons?&lt;BR&gt;solutions?&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Please advice. I 
  have spent more than 2 days trying to tackle this&lt;BR&gt;single 
  issue.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;--&lt;BR&gt;View this message in 
  context:&lt;BR&gt;&lt;A href=&quot;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&lt;/A&gt;&lt;BR&gt;ment%29-tp26635775p26635775.html&lt;BR&gt;Sent 
  from the swig-user mailing list archive at 
  Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------&lt;BR&gt;------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26686157&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;BR&gt;=============================================================================== 
  &lt;BR&gt;Please access the attached hyperlink for an important electronic 
  communications disclaimer: 
  &lt;BR&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html 
  &lt;BR&gt;=============================================================================== 
  &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26686157&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;BR /&gt;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;&lt;html&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:8.0pt;font-family:Courier'&gt;==============================================================================&lt;br&gt;Please access the attached hyperlink for an important electronic communications disclaimer:&lt;br&gt;&lt;a href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/a&gt;&lt;br&gt;==============================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/html&gt;&lt;br&gt;
&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Return on Information:
&lt;br&gt;Google Enterprise Search pays you back
&lt;br&gt;Get the facts.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/google-dev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/google-dev2dev&lt;/a&gt;&lt;br&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26686157&amp;i=7&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26686157.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26675210</id>
	<title>Re: C-&gt;Perl : converting C array into perl string.</title>
	<published>2009-12-07T02:14:44Z</published>
	<updated>2009-12-07T02:14:44Z</updated>
	<author>
		<name>Sri-26</name>
	</author>
	<content type="html">Ok. Found that my typemap(out) had a fairly small but critical error: I was missing &amp;quot;argvi++;&amp;quot;
&lt;br&gt;&lt;br&gt;In retrospec, this was clearly demonstrated in &amp;quot;28.7.2 Perl5 typemaps&amp;quot;, but somehow I missed it &amp; had to discover it the hardway.
&lt;br&gt;&lt;br&gt;My revised typemap works, in case it helps anyone in future.
&lt;br&gt;&lt;br&gt;%typemap(out) (NAME) {
&lt;br&gt;&amp;nbsp; &amp;nbsp;/* printf(&amp;quot;Name is %s\n&amp;quot;, $1); */
&lt;br&gt;&amp;nbsp; &amp;nbsp;$result = newSVpvn($1, strlen($1));
&lt;br&gt;&amp;nbsp; &amp;nbsp;/*
&lt;br&gt;&amp;nbsp; &amp;nbsp;if (SvOK($result) &amp;&amp; SvPOKp($result))
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; printf(&amp;quot;Name is non-null. %s\n&amp;quot;, SvPVX($result));
&lt;br&gt;&amp;nbsp; &amp;nbsp;*/
&lt;br&gt;&amp;nbsp; &amp;nbsp;argvi++;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;--- On Fri, 12/4/09, Sri &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26675210&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;w2learn@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; From: Sri &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26675210&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;w2learn@...&lt;/a&gt;&amp;gt;
&lt;br&gt;&amp;gt; Subject: C-&amp;gt;Perl : converting C array into perl string.
&lt;br&gt;&amp;gt; To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26675210&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;
&lt;br&gt;&amp;gt; Date: Friday, December 4, 2009, 5:18 AM
&lt;br&gt;&amp;gt; Hello,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am trying to map C array into perl a string and pass it
&lt;br&gt;&amp;gt; as an *argument* to a perl subroutine (not as a &amp;quot;return
&lt;br&gt;&amp;gt; value&amp;quot;).  I tried a few things with typemaps (see
&lt;br&gt;&amp;gt; below), however, unable to figureout how to accomplish
&lt;br&gt;&amp;gt; this.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; My situation is like this.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; - One of the members in a C structure is a char array 
&lt;br&gt;&amp;gt; typedef char NAME[100];
&lt;br&gt;&amp;gt; typedef struct { .... NAME name; ...} MyStruct;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; - To pass the structure to Perl, I convert the entire C
&lt;br&gt;&amp;gt; structure &amp; push into the perl stack (right before
&lt;br&gt;&amp;gt; invoking the perl subroutine).  Using the
&lt;br&gt;&amp;gt; SWIG_NewPointerObj is very conveient as I dont have to
&lt;br&gt;&amp;gt; bother with the individual data members in the structure.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; XPUSHs(SWIG_NewPointerObj(SWIG_as_voidptr(p_data),
&lt;br&gt;&amp;gt; SWIGTYPE_p_tMyStruct, SWIG_SHADOW));
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; - The perl-sub uses a swig accessor function to retrieve
&lt;br&gt;&amp;gt; the name field.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; ($arg) = @_;
&lt;br&gt;&amp;gt; $t_rname = myModule::tMyStruct::swig_name_get($arg);
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; When I print this, perl prints a
&lt;br&gt;&amp;gt; &amp;quot;p_unsigned_char=SCALAR(0x8428ad0)&amp;quot;.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm not sure how to now influence/change NewPointerObj so
&lt;br&gt;&amp;gt; it can &amp;quot;typemap&amp;quot; this field so, Perl will automatically
&lt;br&gt;&amp;gt; interpret it as a null terminated string?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I suspected it may not work, but tried adding an &amp;quot;out&amp;quot;
&lt;br&gt;&amp;gt; typemap like this, but that doesnt work : as I understand,
&lt;br&gt;&amp;gt; this typemap only modified the behavior of the accessor
&lt;br&gt;&amp;gt; methods returning this type (NAME), but not how the
&lt;br&gt;&amp;gt; structure is converted into the Perl object.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %typemap(out) (NAME) {
&lt;br&gt;&amp;gt;    $result = newSVpv($1, strlen($1));
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; result..
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; SV = NULL(0x0) at 0x837a210
&lt;br&gt;&amp;gt;   REFCNT = 1
&lt;br&gt;&amp;gt;   FLAGS = ()
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Is there a way to accomplish this with typemaps or some
&lt;br&gt;&amp;gt; other SWIG feature?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %typemap(out) (NAME) {
&lt;br&gt;&amp;gt;    $result = newSVpv($1, strlen($1));
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt;       
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26675210&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/C-%3EPerl-%3A-converting-C-array-into-perl-string.-tp26642428p26675210.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26672125</id>
	<title>Re: Python C++ extension (multi threaded environment)</title>
	<published>2009-12-06T18:02:25Z</published>
	<updated>2009-12-06T18:02:25Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.3603&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY style=&quot;WORD-WRAP: break-word; webkit-nbsp-mode: space; webkit-line-break: after-white-space&quot;&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;In the example below, the example of&amp;nbsp;int is working 
fine. The callback is called properly in Python&amp;nbsp; and the int value is 
displayed. All good.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;But when I pass the object of type 
&lt;EM&gt;RFAMessageWrapper&lt;/EM&gt;, even type(msg) raises an exception. I am not able to 
send user defined c++ object to Python. Not sure what is wrong 
here.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Also the&amp;nbsp;usage of &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;doesn't raise any exception. But I wonder if it succeeds in acquiring the 
GIL.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=867035401-07122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Please advice.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=867035401-07122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Jadhav, Alok &lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, 
December 05, 2009 12:32 PM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Brian Cole&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; 
&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26672125&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: [Swig-user] Python C++ 
extension (multi threaded environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I will try to use that but before using the SWIG macros I 
should be able to build the arguments list from the C objects. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;A&lt;SPAN class=078192803-05122009&gt;bove line raises an 
Access violation exception.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;m&lt;SPAN class=078192803-05122009&gt;sg2 is non nul C class 
object.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;where as &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;int blah =1;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;arglist = Py_BuildValue(&quot;&lt;SPAN class=078192803-05122009&gt;i&lt;/SPAN&gt;&quot;,&lt;SPAN class=078192803-05122009&gt;blah&lt;/SPAN&gt;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;this 
line doesn't raise any exception. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;So it 
means it has to do with creating a PyObject from C object. (Works fine for basic 
datatypes.)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
is the issue in this case?&amp;nbsp; How can this be solved?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Brian Cole [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26672125&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;coleb@...&lt;/a&gt;] 
&lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, December 05, 2009 3:52 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, 
Alok&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26672125&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: 
[Swig-user] Python C++ extension (multi threaded 
environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;This is a shot in the dark, but have you tried using SWIG's macros 
for acquiring and releasing the GIL? 
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=monospace&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;FONT class=Apple-style-span face=Helvetica&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: normal&quot;&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;-Brian&lt;/DIV&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;
&lt;DIV&gt;
&lt;DIV&gt;On Dec 3, 2009, at 11:57 PM, Jadhav, Alok wrote:&lt;/DIV&gt;&lt;BR class=Apple-interchange-newline&gt;
&lt;BLOCKQUOTE type=&quot;cite&quot;&gt;
  &lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;Guys,&lt;BR&gt;&lt;BR&gt;I created a 
  new wrapper class RFAMesageWrapper which is defined in SWIG&lt;BR&gt;interface file. 
  &amp;nbsp;&lt;BR&gt;&lt;BR&gt;Now the new code looks like&lt;BR&gt;&lt;BR&gt;&amp;nbsp;RFAMessageWrapper 
  msg2(msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&lt;BR&gt;Where as msg2 is identified by Python. 
  &amp;nbsp;Still this function raises&lt;BR&gt;access violation exception. So my thinking 
  that it was because&lt;BR&gt;RFAMessage is not identified as RFAMessage was 
  incorrect.&lt;BR&gt;&lt;BR&gt;Now back to square one. . What is wrong here? Why does this 
  line of code&lt;BR&gt;raises exception?&lt;BR&gt;&lt;BR&gt;Still couldn't identify why state = 
  PyGILState_Ensure(); blocks 
  the&lt;BR&gt;thread.&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;&lt;BR&gt;-----Original 
  Message-----&lt;BR&gt;From: Jadhav, Alok &lt;BR&gt;Sent: Friday, December 04, 2009 3:05 
  PM&lt;BR&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26672125&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;Subject: 
  [Swig-user] Python C++ extension (multi threaded 
  environment)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Hello,&lt;BR&gt;&lt;BR&gt;I have made some progress in using C 
  library to call from Python. In&lt;BR&gt;next step I have to register a callback 
  function so that C can call&lt;BR&gt;ProcessMessage() function from which is written 
  in python. My code is&lt;BR&gt;not working properly and I have couple of questions 
  regarding this. &lt;BR&gt;&lt;BR&gt;Backgroun&lt;BR&gt;----------&lt;BR&gt;&lt;BR&gt;Python creates 
  RFAClient object. This happens in Python main thread. Now&lt;BR&gt;Python calls a 
  function to start postoffice. Postoffice spawns a new C++&lt;BR&gt;thread and it 
  runs in a while loop listening to some data. Now when a&lt;BR&gt;message arrives on 
  this thread it should call Python function to process&lt;BR&gt;this data. Looks 
  simple .. But multi threaded environment, C++ and&lt;BR&gt;python all together makes 
  it a bit messy :)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Issues&lt;BR&gt;------&lt;BR&gt;&lt;BR&gt;My callback registed in C 
  looks like this&lt;BR&gt;&lt;BR&gt;static void PythonCallBack(RFAMessage msg, void 
  *clientdata) { PyObject&lt;BR&gt;*func, *arglist;&lt;BR&gt;&lt;BR&gt;PyGILState_STATE 
  state;&lt;BR&gt;state = PyGILState_Ensure();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;func = (PyObject *) 
  clientdata; 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Get Python function&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Call Python&lt;BR&gt;&amp;nbsp;&amp;nbsp;Py_DECREF(arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Trash arglist&lt;BR&gt;&lt;BR&gt;PyGILState_Release(state);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;Here 2 lines are 
  giving me exceptions.. (Remember this is called from&lt;BR&gt;postoffice thread.. 
  which is not the main Python thread. .. I 
  have&lt;BR&gt;called&lt;BR&gt;PyEval_InitThreads() function; at the start of main 
  thread)&lt;BR&gt;&lt;BR&gt;-&amp;gt; arglist = 
  Py_BuildValue(&quot;(O)&quot;,msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Raises Access Violation 
  error. I have no idea why this is&lt;BR&gt;occuring. &lt;BR&gt;My reasoning : msg is of 
  type RFAMessage. &amp;nbsp;RFAMessage is not part of my&lt;BR&gt;swig interface file, 
  but it is part of the library used by my C++&lt;BR&gt;wrapper project. Can 
  RAFMessage object be converted to PyObject if it is&lt;BR&gt;not part of SWIG 
  interface file? &lt;BR&gt;&amp;nbsp;What are your suggestions on this?&lt;BR&gt;&lt;BR&gt;-&amp;gt; 
  state = PyGILState_Ensure();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The thread just gets 
  blocked on this call. It doesn't do anything&lt;BR&gt;after this. After searching on 
  internet I couldn't find anything which&lt;BR&gt;can describe why postOffice thread 
  may get blocked here. Any reasons?&lt;BR&gt;solutions?&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Please advice. I 
  have spent more than 2 days trying to tackle this&lt;BR&gt;single 
  issue.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;--&lt;BR&gt;View this message in 
  context:&lt;BR&gt;&lt;A href=&quot;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&lt;/A&gt;&lt;BR&gt;ment%29-tp26635775p26635775.html&lt;BR&gt;Sent 
  from the swig-user mailing list archive at 
  Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------&lt;BR&gt;------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26672125&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;BR&gt;=============================================================================== 
  &lt;BR&gt;Please access the attached hyperlink for an important electronic 
  communications disclaimer: 
  &lt;BR&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html 
  &lt;BR&gt;=============================================================================== 
  &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26672125&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;BR&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style=&quot;FONT-SIZE: 8pt; FONT-FAMILY: Courier&quot;&gt;==============================================================================&lt;BR&gt;Please 
access the attached hyperlink for an important electronic communications 
disclaimer:&lt;BR&gt;&lt;A href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/A&gt;&lt;BR&gt;==============================================================================&lt;O:P&gt;&lt;/O:P&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;BR&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;BR /&gt;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;&lt;html&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:8.0pt;font-family:Courier'&gt;==============================================================================&lt;br&gt;Please access the attached hyperlink for an important electronic communications disclaimer:&lt;br&gt;&lt;a href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/a&gt;&lt;br&gt;==============================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/html&gt;&lt;br&gt;
&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26672125&amp;i=6&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26672125.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26652725</id>
	<title>Re: Python C++ extension (multi threaded environment)</title>
	<published>2009-12-04T19:31:55Z</published>
	<updated>2009-12-04T19:31:55Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;
&lt;HTML&gt;&lt;HEAD&gt;
&lt;META http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;META content=&quot;MSHTML 6.00.2900.3603&quot; name=GENERATOR&gt;&lt;/HEAD&gt;
&lt;BODY style=&quot;WORD-WRAP: break-word; webkit-nbsp-mode: space; webkit-line-break: after-white-space&quot;&gt;
&lt;DIV dir=ltr align=left&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;I will try to use that but before using the SWIG macros I 
should be able to build the arguments list from the C objects. 
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;A&lt;SPAN class=078192803-05122009&gt;bove line raises an 
Access violation exception.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;m&lt;SPAN class=078192803-05122009&gt;sg2 is non nul C class 
object.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;where as &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&lt;SPAN class=078192803-05122009&gt;int blah =1;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;
&lt;DIV&gt;&lt;FONT face=Arial size=2&gt;arglist = Py_BuildValue(&quot;&lt;SPAN class=078192803-05122009&gt;i&lt;/SPAN&gt;&quot;,&lt;SPAN class=078192803-05122009&gt;blah&lt;/SPAN&gt;); 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build 
argument&lt;SPAN class=078192803-05122009&gt; &lt;/SPAN&gt;list&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;this 
line doesn't raise any exception. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;So it 
means it has to do with creating a PyObject from C object. (Works fine for basic 
datatypes.)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;What 
is the issue in this case?&amp;nbsp; How can this be solved?&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN class=078192803-05122009&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;Regards, Alok&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left&gt;
&lt;HR tabIndex=-1&gt;
&lt;FONT face=Tahoma size=2&gt;&lt;B&gt;From:&lt;/B&gt; Brian Cole [mailto:&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652725&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;coleb@...&lt;/a&gt;] 
&lt;BR&gt;&lt;B&gt;Sent:&lt;/B&gt; Saturday, December 05, 2009 3:52 AM&lt;BR&gt;&lt;B&gt;To:&lt;/B&gt; Jadhav, 
Alok&lt;BR&gt;&lt;B&gt;Cc:&lt;/B&gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652725&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;&lt;B&gt;Subject:&lt;/B&gt; Re: 
[Swig-user] Python C++ extension (multi threaded 
environment)&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/DIV&gt;This is a shot in the dark, but have you tried using SWIG's macros 
for acquiring and releasing the GIL?
&lt;DIV&gt;&lt;FONT class=Apple-style-span face=monospace&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: pre&quot;&gt;&lt;FONT class=Apple-style-span face=Helvetica&gt;&lt;SPAN class=Apple-style-span style=&quot;WHITE-SPACE: normal&quot;&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;-Brian&lt;/DIV&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;
&lt;DIV&gt;
&lt;DIV&gt;On Dec 3, 2009, at 11:57 PM, Jadhav, Alok wrote:&lt;/DIV&gt;&lt;BR class=Apple-interchange-newline&gt;
&lt;BLOCKQUOTE type=&quot;cite&quot;&gt;
  &lt;DIV&gt;&lt;FONT face=Arial color=#0000ff size=2&gt;&lt;/FONT&gt;&lt;BR&gt;Guys,&lt;BR&gt;&lt;BR&gt;I created a 
  new wrapper class RFAMesageWrapper which is defined in SWIG&lt;BR&gt;interface file. 
  &amp;nbsp;&lt;BR&gt;&lt;BR&gt;Now the new code looks like&lt;BR&gt;&lt;BR&gt;&amp;nbsp;RFAMessageWrapper 
  msg2(msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&lt;BR&gt;Where as msg2 is identified by Python. 
  &amp;nbsp;Still this function raises&lt;BR&gt;access violation exception. So my thinking 
  that it was because&lt;BR&gt;RFAMessage is not identified as RFAMessage was 
  incorrect.&lt;BR&gt;&lt;BR&gt;Now back to square one. . What is wrong here? Why does this 
  line of code&lt;BR&gt;raises exception?&lt;BR&gt;&lt;BR&gt;Still couldn't identify why state = 
  PyGILState_Ensure(); blocks 
  the&lt;BR&gt;thread.&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;&lt;BR&gt;-----Original 
  Message-----&lt;BR&gt;From: Jadhav, Alok &lt;BR&gt;Sent: Friday, December 04, 2009 3:05 
  PM&lt;BR&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652725&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;BR&gt;Subject: 
  [Swig-user] Python C++ extension (multi threaded 
  environment)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Hello,&lt;BR&gt;&lt;BR&gt;I have made some progress in using C 
  library to call from Python. In&lt;BR&gt;next step I have to register a callback 
  function so that C can call&lt;BR&gt;ProcessMessage() function from which is written 
  in python. My code is&lt;BR&gt;not working properly and I have couple of questions 
  regarding this. &lt;BR&gt;&lt;BR&gt;Backgroun&lt;BR&gt;----------&lt;BR&gt;&lt;BR&gt;Python creates 
  RFAClient object. This happens in Python main thread. Now&lt;BR&gt;Python calls a 
  function to start postoffice. Postoffice spawns a new C++&lt;BR&gt;thread and it 
  runs in a while loop listening to some data. Now when a&lt;BR&gt;message arrives on 
  this thread it should call Python function to process&lt;BR&gt;this data. Looks 
  simple .. But multi threaded environment, C++ and&lt;BR&gt;python all together makes 
  it a bit messy :)&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Issues&lt;BR&gt;------&lt;BR&gt;&lt;BR&gt;My callback registed in C 
  looks like this&lt;BR&gt;&lt;BR&gt;static void PythonCallBack(RFAMessage msg, void 
  *clientdata) { PyObject&lt;BR&gt;*func, *arglist;&lt;BR&gt;&lt;BR&gt;PyGILState_STATE 
  state;&lt;BR&gt;state = PyGILState_Ensure();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;func = (PyObject *) 
  clientdata; 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Get Python function&lt;BR&gt;&amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Build argument&lt;BR&gt;list&lt;BR&gt;&amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Call Python&lt;BR&gt;&amp;nbsp;&amp;nbsp;Py_DECREF(arglist); 
  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// 
  Trash arglist&lt;BR&gt;&lt;BR&gt;PyGILState_Release(state);&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;Here 2 lines are 
  giving me exceptions.. (Remember this is called from&lt;BR&gt;postoffice thread.. 
  which is not the main Python thread. .. I 
  have&lt;BR&gt;called&lt;BR&gt;PyEval_InitThreads() function; at the start of main 
  thread)&lt;BR&gt;&lt;BR&gt;-&amp;gt; arglist = 
  Py_BuildValue(&quot;(O)&quot;,msg);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;- Raises Access Violation 
  error. I have no idea why this is&lt;BR&gt;occuring. &lt;BR&gt;My reasoning : msg is of 
  type RFAMessage. &amp;nbsp;RFAMessage is not part of my&lt;BR&gt;swig interface file, 
  but it is part of the library used by my C++&lt;BR&gt;wrapper project. Can 
  RAFMessage object be converted to PyObject if it is&lt;BR&gt;not part of SWIG 
  interface file? &lt;BR&gt;&amp;nbsp;What are your suggestions on this?&lt;BR&gt;&lt;BR&gt;-&amp;gt; 
  state = PyGILState_Ensure();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The thread just gets 
  blocked on this call. It doesn't do anything&lt;BR&gt;after this. After searching on 
  internet I couldn't find anything which&lt;BR&gt;can describe why postOffice thread 
  may get blocked here. Any reasons?&lt;BR&gt;solutions?&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Please advice. I 
  have spent more than 2 days trying to tackle this&lt;BR&gt;single 
  issue.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;Regards,&lt;BR&gt;Alok&lt;BR&gt;--&lt;BR&gt;View this message in 
  context:&lt;BR&gt;&lt;A href=&quot;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&lt;/A&gt;&lt;BR&gt;ment%29-tp26635775p26635775.html&lt;BR&gt;Sent 
  from the swig-user mailing list archive at 
  Nabble.com.&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------&lt;BR&gt;------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652725&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;BR&gt;=============================================================================== 
  &lt;BR&gt;Please access the attached hyperlink for an important electronic 
  communications disclaimer: 
  &lt;BR&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html 
  &lt;BR&gt;=============================================================================== 
  &lt;BR&gt;&lt;BR&gt;&lt;BR&gt;------------------------------------------------------------------------------&lt;BR&gt;Join 
  us December 9, 2009 for the Red Hat Virtual Experience,&lt;BR&gt;a free event 
  focused on virtualization and cloud computing. &lt;BR&gt;Attend in-depth sessions 
  from your desk. Your couch. 
  Anywhere.&lt;BR&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;BR&gt;_______________________________________________&lt;BR&gt;Swig-user 
  mailing 
  list&lt;BR&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652725&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;BR&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;BR&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;
&lt;BR /&gt;&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt;&lt;html&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style='font-size:8.0pt;font-family:Courier'&gt;==============================================================================&lt;br&gt;Please access the attached hyperlink for an important electronic communications disclaimer:&lt;br&gt;&lt;a href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/a&gt;&lt;br&gt;==============================================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/html&gt;&lt;br&gt;
&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26652725&amp;i=5&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26652725.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26647732</id>
	<title>Re: Python C++ extension (multi threaded environment)</title>
	<published>2009-12-04T10:51:43Z</published>
	<updated>2009-12-04T10:51:43Z</updated>
	<author>
		<name>Brian Cole-3</name>
	</author>
	<content type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body style=&quot;word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; &quot;&gt;This is a shot in the dark, but have you tried using SWIG's macros for acquiring and releasing the GIL?&lt;div&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;monospace&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;font class=&quot;Apple-style-span&quot; face=&quot;Helvetica&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: normal;&quot;&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_BEGIN_BLOCK;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;SWIG_PYTHON_THREAD_END_BLOCK;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-Brian&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;div&gt;&lt;div&gt;On Dec 3, 2009, at 11:57 PM, Jadhav, Alok wrote:&lt;/div&gt;&lt;br class=&quot;Apple-interchange-newline&quot;&gt;&lt;blockquote type=&quot;cite&quot;&gt;&lt;div&gt;&lt;br&gt;Guys,&lt;br&gt;&lt;br&gt; I created a new wrapper class RFAMesageWrapper which is defined in SWIG&lt;br&gt;interface file. &amp;nbsp;&lt;br&gt;&lt;br&gt;Now the new code looks like&lt;br&gt;&lt;br&gt; &amp;nbsp;RFAMessageWrapper msg2(msg);&lt;br&gt; &amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg2); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build argument&lt;br&gt;list&lt;br&gt;&lt;br&gt;Where as msg2 is identified by Python. &amp;nbsp;Still this function raises&lt;br&gt;access violation exception. So my thinking that it was because&lt;br&gt;RFAMessage is not identified as RFAMessage was incorrect.&lt;br&gt;&lt;br&gt;Now back to square one. . What is wrong here? Why does this line of code&lt;br&gt;raises exception?&lt;br&gt;&lt;br&gt;Still couldn't identify why state = PyGILState_Ensure(); blocks the&lt;br&gt;thread.&lt;br&gt;&lt;br&gt;Regards,&lt;br&gt;Alok&lt;br&gt;&lt;br&gt;-----Original Message-----&lt;br&gt;From: Jadhav, Alok &lt;br&gt;Sent: Friday, December 04, 2009 3:05 PM&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26647732&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;&lt;br&gt;Subject: [Swig-user] Python C++ extension (multi threaded environment)&lt;br&gt;&lt;br&gt;&lt;br&gt;Hello,&lt;br&gt;&lt;br&gt; I have made some progress in using C library to call from Python. In&lt;br&gt;next step I have to register a callback function so that C can call&lt;br&gt;ProcessMessage() function from which is written in python. My code is&lt;br&gt;not working properly and I have couple of questions regarding this. &lt;br&gt;&lt;br&gt;Backgroun&lt;br&gt;----------&lt;br&gt;&lt;br&gt;Python creates RFAClient object. This happens in Python main thread. Now&lt;br&gt;Python calls a function to start postoffice. Postoffice spawns a new C++&lt;br&gt;thread and it runs in a while loop listening to some data. Now when a&lt;br&gt;message arrives on this thread it should call Python function to process&lt;br&gt;this data. Looks simple .. But multi threaded environment, C++ and&lt;br&gt;python all together makes it a bit messy :)&lt;br&gt;&lt;br&gt;&lt;br&gt;Issues&lt;br&gt;------&lt;br&gt;&lt;br&gt;My callback registed in C looks like this&lt;br&gt;&lt;br&gt;static void PythonCallBack(RFAMessage msg, void *clientdata) { PyObject&lt;br&gt;*func, *arglist;&lt;br&gt;&lt;br&gt;PyGILState_STATE state;&lt;br&gt;state = PyGILState_Ensure();&lt;br&gt;&lt;br&gt; &amp;nbsp;&amp;nbsp;func = (PyObject *) clientdata; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Get Python function&lt;br&gt; &amp;nbsp;&amp;nbsp;arglist = Py_BuildValue(&quot;(O)&quot;,msg); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Build argument&lt;br&gt;list&lt;br&gt; &amp;nbsp;&amp;nbsp;PyEval_CallObject(func,arglist); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Call Python&lt;br&gt; &amp;nbsp;&amp;nbsp;Py_DECREF(arglist); &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Trash arglist&lt;br&gt;&lt;br&gt;PyGILState_Release(state);&lt;br&gt;}&lt;br&gt;&lt;br&gt;Here 2 lines are giving me exceptions.. (Remember this is called from&lt;br&gt;postoffice thread.. which is not the main Python thread. .. I have&lt;br&gt;called&lt;br&gt;PyEval_InitThreads() function; at the start of main thread)&lt;br&gt;&lt;br&gt;-&amp;gt; arglist = Py_BuildValue(&quot;(O)&quot;,msg);&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;- Raises Access Violation error. I have no idea why this is&lt;br&gt;occuring. &lt;br&gt;My reasoning : msg is of type RFAMessage. &amp;nbsp;RFAMessage is not part of my&lt;br&gt;swig interface file, but it is part of the library used by my C++&lt;br&gt;wrapper project. Can RAFMessage object be converted to PyObject if it is&lt;br&gt;not part of SWIG interface file? &lt;br&gt; &amp;nbsp;What are your suggestions on this?&lt;br&gt;&lt;br&gt;-&amp;gt; state = PyGILState_Ensure();&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The thread just gets blocked on this call. It doesn't do anything&lt;br&gt;after this. After searching on internet I couldn't find anything which&lt;br&gt;can describe why postOffice thread may get blocked here. Any reasons?&lt;br&gt;solutions?&lt;br&gt;&lt;br&gt;&lt;br&gt;Please advice. I have spent more than 2 days trying to tackle this&lt;br&gt;single issue.&lt;br&gt;&lt;br&gt;&lt;br&gt;Regards,&lt;br&gt;Alok&lt;br&gt;--&lt;br&gt;View this message in context:&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&lt;/a&gt;&lt;br&gt;ment%29-tp26635775p26635775.html&lt;br&gt;Sent from the swig-user mailing list archive at Nabble.com.&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------&lt;br&gt;------&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,&lt;br&gt;a free event focused on virtualization and cloud computing. &lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.&lt;br&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;br&gt;_______________________________________________&lt;br&gt;Swig-user mailing list&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26647732&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;br&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;br&gt;&lt;br&gt;=============================================================================== &lt;br&gt; Please access the attached hyperlink for an important electronic communications disclaimer: &lt;br&gt; http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html &lt;br&gt; =============================================================================== &lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,&lt;br&gt;a free event focused on virtualization and cloud computing. &lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.&lt;br&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;br&gt;_______________________________________________&lt;br&gt;Swig-user mailing list&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26647732&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;&lt;br&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;br&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26647732&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26647732.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26642428</id>
	<title>C-&gt;Perl : converting C array into perl string.</title>
	<published>2009-12-04T05:18:14Z</published>
	<updated>2009-12-04T05:18:14Z</updated>
	<author>
		<name>Sri-26</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;I am trying to map C array into perl a string and pass it as an *argument* to a perl subroutine (not as a &amp;quot;return value&amp;quot;). &amp;nbsp;I tried a few things with typemaps (see below), however, unable to figureout how to accomplish this.
&lt;br&gt;&lt;br&gt;My situation is like this.
&lt;br&gt;&lt;br&gt;- One of the members in a C structure is a char array 
&lt;br&gt;typedef char NAME[100];
&lt;br&gt;typedef struct { .... NAME name; ...} MyStruct;
&lt;br&gt;&lt;br&gt;- To pass the structure to Perl, I convert the entire C structure &amp; push into the perl stack (right before invoking the perl subroutine). &amp;nbsp;Using the SWIG_NewPointerObj is very conveient as I dont have to bother with the individual data members in the structure.
&lt;br&gt;&lt;br&gt;XPUSHs(SWIG_NewPointerObj(SWIG_as_voidptr(p_data), SWIGTYPE_p_tMyStruct, SWIG_SHADOW));
&lt;br&gt;&lt;br&gt;- The perl-sub uses a swig accessor function to retrieve the name field.
&lt;br&gt;&lt;br&gt;($arg) = @_;
&lt;br&gt;$t_rname = myModule::tMyStruct::swig_name_get($arg);
&lt;br&gt;&lt;br&gt;When I print this, perl prints a &amp;quot;p_unsigned_char=SCALAR(0x8428ad0)&amp;quot;.
&lt;br&gt;&lt;br&gt;I'm not sure how to now influence/change NewPointerObj so it can &amp;quot;typemap&amp;quot; this field so, Perl will automatically interpret it as a null terminated string?
&lt;br&gt;&lt;br&gt;I suspected it may not work, but tried adding an &amp;quot;out&amp;quot; typemap like this, but that doesnt work : as I understand, this typemap only modified the behavior of the accessor methods returning this type (NAME), but not how the structure is converted into the Perl object.
&lt;br&gt;&lt;br&gt;%typemap(out) (NAME) {
&lt;br&gt;&amp;nbsp; &amp;nbsp;$result = newSVpv($1, strlen($1));
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;result..
&lt;br&gt;&lt;br&gt;SV = NULL(0x0) at 0x837a210
&lt;br&gt;&amp;nbsp; REFCNT = 1
&lt;br&gt;&amp;nbsp; FLAGS = ()
&lt;br&gt;&lt;br&gt;&lt;br&gt;Is there a way to accomplish this with typemaps or some other SWIG feature?
&lt;br&gt;&lt;br&gt;Thanks
&lt;br&gt;&lt;br&gt;%typemap(out) (NAME) {
&lt;br&gt;&amp;nbsp; &amp;nbsp;$result = newSVpv($1, strlen($1));
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26642428&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/C-%3EPerl-%3A-converting-C-array-into-perl-string.-tp26642428p26642428.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26640971</id>
	<title>Re: Problems with Java typemaps to replace an input object parameter with a different type</title>
	<published>2009-12-04T02:56:14Z</published>
	<updated>2009-12-04T02:56:14Z</updated>
	<author>
		<name>Juan Hernando-2</name>
	</author>
	<content type="html">Hi all,
&lt;br&gt;In case anyone is interested and followed this thread.
&lt;br&gt;&lt;br&gt;William suggested renaming the imported classes like this:
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; and the following:
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; %rename(BFoo) B::Foo;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; %typemap(jstype) B::Foo &amp; &amp;quot;B.Foo&amp;quot;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; %typemap(javain) B::Foo &amp; &amp;quot;B.Foo.getCPtr($javainput)&amp;quot;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; generates:
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; &amp;nbsp; public void f(B.Foo x) {
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; exampleJNI.Problematic_f__SWIG_1(swigCPtr, this, 
&lt;br&gt;B.Foo.getCPtr(x), x);
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; &amp;nbsp; }
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt;
&lt;br&gt;&amp;nbsp;&amp;gt;&amp;gt; which is what I think you want.
&lt;br&gt;&lt;br&gt;This doesn't completely work because BFoo is not the Java fully
&lt;br&gt;qualified name and then AJNI.java doesn't compile (A was the module
&lt;br&gt;applying the typemap). The solution is simply doing:
&lt;br&gt;%rename(&amp;quot;B.Foo&amp;quot;) B::Foo;
&lt;br&gt;only in the modules that use the module/namespace B and no typemap is
&lt;br&gt;required at all, everything just works.
&lt;br&gt;SWIG will complain B.Foo is not a valid identifier and B::Foo can't be
&lt;br&gt;wrapped. But indeed that's what we want because B::Foo is to be wrapped
&lt;br&gt;in a different module.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Juan
&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26640971&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Problems-with-Java-typemaps-to-replace-an-input-object-parameter-with-a-different-type-tp26544986p26640971.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26640384</id>
	<title>Re: Problems with shared_ptr and Python</title>
	<published>2009-12-04T02:08:22Z</published>
	<updated>2009-12-04T02:08:22Z</updated>
	<author>
		<name>andreas.held</name>
	</author>
	<content type="html">Hi William
&lt;br&gt;&lt;br&gt;Yes, this is indeed working now. Thank you very much for debugging my script.
&lt;br&gt;&lt;br&gt;Best regards
&lt;br&gt;&lt;br&gt;Andreas
&lt;br&gt;&lt;br&gt;---- William S Fulton &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26640384&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wsf@...&lt;/a&gt;&amp;gt; schrieb:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; You have three problems with your interface file. Here is the corrected 
&lt;br&gt;&amp;gt; version which works:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %include &amp;quot;boost_shared_ptr.i&amp;quot;
&lt;br&gt;&amp;gt; SWIG_SHARED_PTR(Foo, Foo)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %inline %{
&lt;br&gt;&amp;gt; #include &amp;lt;boost/shared_ptr.hpp&amp;gt;
&lt;br&gt;&amp;gt; struct Foo {};
&lt;br&gt;&amp;gt; void test1(boost::shared_ptr&amp;lt;Foo&amp;gt; f) {}
&lt;br&gt;&amp;gt; void test2(boost::shared_ptr&amp;lt;Foo&amp;gt; f) {}
&lt;br&gt;&amp;gt; %}
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; William
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26640384&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;andreas.held@...&lt;/a&gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt; Hi William
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; This is my interface file boost_example.i:
&lt;br&gt;&amp;gt; &amp;gt; %module example
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; // For plain classes, do not use for derived classes
&lt;br&gt;&amp;gt; &amp;gt; %include &amp;quot;boost_shared_ptr.i&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt; MY_SWIG_SHARED_PTR(Foo, Foo)
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; struct Foo {};
&lt;br&gt;&amp;gt; &amp;gt; void test1(shared_ptr&amp;lt;Foo&amp;gt; f) {}
&lt;br&gt;&amp;gt; &amp;gt; void test2(boost::shared_ptr&amp;lt;Foo&amp;gt; f) {}
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; -----------------------------------------------------------
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; My command line:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; $ swig -c++ -python boost_example.i 
&lt;br&gt;&amp;gt; &amp;gt; boost_example.i(6): Error: Syntax error in input(1).
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I do get the same results whether I run the command from a MSYS shell or from the Windows Power Shell, obviously, both on Windows (XP to be accurate).
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Finally, the version I am using:
&lt;br&gt;&amp;gt; &amp;gt; $ swig -version
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; SWIG Version 1.3.40
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Compiled with i586-mingw32msvc-g++ [i686-pc-linux-gnu]
&lt;br&gt;&amp;gt; &amp;gt; Please see &lt;a href=&quot;http://www.swig.org&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.swig.org&lt;/a&gt;&amp;nbsp;for reporting bugs and further information
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Best regards and thanks for your help.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Andreas
&lt;br&gt;&amp;gt; &amp;gt; ---- William S Fulton &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26640384&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wsf@...&lt;/a&gt;&amp;gt; schrieb:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26640384&amp;i=3&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;andreas.held@...&lt;/a&gt; wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Hi William
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Thank you for your quick reply. Sorry for my mistake in the command line. As you pointed out, the correct command line should be:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; swig -c++ -python example.i
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Still, even with that command line I do get the same error. I now stronly suspect that something is wrong with my boost installation. 
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; It is impossible for SWIG to be affected by your boost installation 
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; unless you tell it to via an include path (the -I option). However, 
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; there might be a problem when your c++ compiler compiles the generated 
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; code, as that will then use your boost installation.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; Anyway, I have now found a way around my problem by using
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt; %template
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I don't know what you are doing wrong, but the SWIG_SHARED_PTR macro 
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; invokes the %template directive for you. I think you need to post your 
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; non-working example again.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; William
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;/div&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26640384&amp;i=4&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Re%3A-Problems-with-shared_ptr-and-Python-tp26640384p26640384.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26638553</id>
	<title>Re: Python C++ extension (multi threaded environment)</title>
	<published>2009-12-03T22:57:50Z</published>
	<updated>2009-12-03T22:57:50Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">&lt;br&gt;Guys,
&lt;br&gt;&lt;br&gt;&amp;nbsp;I created a new wrapper class RFAMesageWrapper which is defined in SWIG
&lt;br&gt;interface file. &amp;nbsp;
&lt;br&gt;&lt;br&gt;Now the new code looks like
&lt;br&gt;&lt;br&gt;&amp;nbsp; RFAMessageWrapper msg2(msg);
&lt;br&gt;&amp;nbsp; &amp;nbsp;arglist = Py_BuildValue(&amp;quot;(O)&amp;quot;,msg2); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Build argument
&lt;br&gt;list
&lt;br&gt;&lt;br&gt;Where as msg2 is identified by Python. &amp;nbsp;Still this function raises
&lt;br&gt;access violation exception. So my thinking that it was because
&lt;br&gt;RFAMessage is not identified as RFAMessage was incorrect.
&lt;br&gt;&lt;br&gt;Now back to square one. . What is wrong here? Why does this line of code
&lt;br&gt;raises exception?
&lt;br&gt;&lt;br&gt;Still couldn't identify why state = PyGILState_Ensure(); blocks the
&lt;br&gt;thread.
&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Alok
&lt;br&gt;&lt;br&gt;-----Original Message-----
&lt;br&gt;From: Jadhav, Alok 
&lt;br&gt;Sent: Friday, December 04, 2009 3:05 PM
&lt;br&gt;To: &lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26638553&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;swig-user@...&lt;/a&gt;
&lt;br&gt;Subject: [Swig-user] Python C++ extension (multi threaded environment)
&lt;br&gt;&lt;br&gt;&lt;br&gt;Hello,
&lt;br&gt;&lt;br&gt;&amp;nbsp;I have made some progress in using C library to call from Python. In
&lt;br&gt;next step I have to register a callback function so that C can call
&lt;br&gt;ProcessMessage() function from which is written in python. My code is
&lt;br&gt;not working properly and I have couple of questions regarding this. 
&lt;br&gt;&lt;br&gt;Backgroun
&lt;br&gt;----------
&lt;br&gt;&lt;br&gt;Python creates RFAClient object. This happens in Python main thread. Now
&lt;br&gt;Python calls a function to start postoffice. Postoffice spawns a new C++
&lt;br&gt;thread and it runs in a while loop listening to some data. Now when a
&lt;br&gt;message arrives on this thread it should call Python function to process
&lt;br&gt;this data. Looks simple .. But multi threaded environment, C++ and
&lt;br&gt;python all together makes it a bit messy :)
&lt;br&gt;&lt;br&gt;&lt;br&gt;Issues
&lt;br&gt;------
&lt;br&gt;&lt;br&gt;My callback registed in C looks like this
&lt;br&gt;&lt;br&gt;static void PythonCallBack(RFAMessage msg, void *clientdata) { PyObject
&lt;br&gt;*func, *arglist;
&lt;br&gt;&lt;br&gt;PyGILState_STATE state;
&lt;br&gt;state = PyGILState_Ensure();
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp;func = (PyObject *) clientdata; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Get Python function
&lt;br&gt;&amp;nbsp; &amp;nbsp;arglist = Py_BuildValue(&amp;quot;(O)&amp;quot;,msg); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Build argument
&lt;br&gt;list
&lt;br&gt;&amp;nbsp; &amp;nbsp;PyEval_CallObject(func,arglist); &amp;nbsp; &amp;nbsp; // Call Python
&lt;br&gt;&amp;nbsp; &amp;nbsp;Py_DECREF(arglist); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Trash arglist
&lt;br&gt;&amp;nbsp; &amp;nbsp;
&lt;br&gt;PyGILState_Release(state);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;Here 2 lines are giving me exceptions.. (Remember this is called from
&lt;br&gt;postoffice thread.. which is not the main Python thread. .. I have
&lt;br&gt;called
&lt;br&gt;PyEval_InitThreads() function; at the start of main thread)
&lt;br&gt;&lt;br&gt;-&amp;gt; arglist = Py_BuildValue(&amp;quot;(O)&amp;quot;,msg);
&lt;br&gt;&amp;nbsp; &amp;nbsp; - Raises Access Violation error. I have no idea why this is
&lt;br&gt;occuring. 
&lt;br&gt;My reasoning : msg is of type RFAMessage. &amp;nbsp;RFAMessage is not part of my
&lt;br&gt;swig interface file, but it is part of the library used by my C++
&lt;br&gt;wrapper project. Can RAFMessage object be converted to PyObject if it is
&lt;br&gt;not part of SWIG interface file? 
&lt;br&gt;&amp;nbsp; What are your suggestions on this?
&lt;br&gt;&lt;br&gt;-&amp;gt; state = PyGILState_Ensure();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;The thread just gets blocked on this call. It doesn't do anything
&lt;br&gt;after this. After searching on internet I couldn't find anything which
&lt;br&gt;can describe why postOffice thread may get blocked here. Any reasons?
&lt;br&gt;solutions?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Please advice. I have spent more than 2 days trying to tackle this
&lt;br&gt;single issue.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Alok
&lt;br&gt;--
&lt;br&gt;View this message in context:
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environ&lt;/a&gt;&lt;br&gt;ment%29-tp26635775p26635775.html
&lt;br&gt;Sent from the swig-user mailing list archive at Nabble.com.
&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------
&lt;br&gt;------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26638553&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;&lt;br&gt;=============================================================================== 
&lt;br&gt;&amp;nbsp;Please access the attached hyperlink for an important electronic communications disclaimer: 
&lt;br&gt;&amp;nbsp;&lt;a href=&quot;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html&lt;/a&gt;&amp;nbsp;
&lt;br&gt;&amp;nbsp;=============================================================================== 
&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26638553&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26638553.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26635775</id>
	<title>Python C++ extension (multi threaded environment)</title>
	<published>2009-12-03T22:05:04Z</published>
	<updated>2009-12-03T22:05:04Z</updated>
	<author>
		<name>alok.jadhav</name>
	</author>
	<content type="html">Hello,
&lt;br&gt;&lt;br&gt;&amp;nbsp;I have made some progress in using C library to call from Python. In next step I have to register a callback function so that C can call ProcessMessage() function from which is written in python. My code is not working properly and I have couple of questions regarding this. 
&lt;br&gt;&lt;br&gt;Backgroun
&lt;br&gt;----------
&lt;br&gt;&lt;br&gt;Python creates RFAClient object. This happens in Python main thread. Now Python calls a function to start postoffice. Postoffice spawns a new C++ thread and it runs in a while loop listening to some data. Now when a message arrives on this thread it should call Python function to process this data. Looks simple .. But multi threaded environment, C++ and python all together makes it a bit messy :)
&lt;br&gt;&lt;br&gt;&lt;br&gt;Issues
&lt;br&gt;------
&lt;br&gt;&lt;br&gt;My callback registed in C looks like this
&lt;br&gt;&lt;br&gt;static void PythonCallBack(RFAMessage msg, void *clientdata)
&lt;br&gt;{
&lt;br&gt;PyObject *func, *arglist;
&lt;br&gt;&lt;br&gt;PyGILState_STATE state; 
&lt;br&gt;state = PyGILState_Ensure();
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp;func = (PyObject *) clientdata; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Get Python function
&lt;br&gt;&amp;nbsp; &amp;nbsp;arglist = Py_BuildValue(&amp;quot;(O)&amp;quot;,msg); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Build argument list
&lt;br&gt;&amp;nbsp; &amp;nbsp;PyEval_CallObject(func,arglist); &amp;nbsp; &amp;nbsp; // Call Python
&lt;br&gt;&amp;nbsp; &amp;nbsp;Py_DECREF(arglist); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Trash arglist
&lt;br&gt;&amp;nbsp; &amp;nbsp;
&lt;br&gt;PyGILState_Release(state); 
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;Here 2 lines are giving me exceptions.. (Remember this is called from postoffice thread.. which is not the main Python thread. .. I have called PyEval_InitThreads() function; at the start of main thread)
&lt;br&gt;&lt;br&gt;-&amp;gt; arglist = Py_BuildValue(&amp;quot;(O)&amp;quot;,msg);
&lt;br&gt;&amp;nbsp; &amp;nbsp; - Raises Access Violation error. I have no idea why this is occuring. 
&lt;br&gt;My reasoning : msg is of type RFAMessage. &amp;nbsp;RFAMessage is not part of my swig interface file, but it is part of the library used by my C++ wrapper project. Can RAFMessage object be converted to PyObject if it is not part of SWIG interface file? 
&lt;br&gt;&amp;nbsp; What are your suggestions on this?
&lt;br&gt;&lt;br&gt;-&amp;gt; state = PyGILState_Ensure();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;The thread just gets blocked on this call. It doesn't do anything after this. After searching on internet I couldn't find anything which can describe why postOffice thread may get blocked here. Any reasons? solutions?
&lt;br&gt;&lt;br&gt;&lt;br&gt;Please advice. I have spent more than 2 days trying to tackle this single issue.
&lt;br&gt;&lt;br&gt;&lt;br&gt;Regards,
&lt;br&gt;Alok</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Python-C%2B%2B-extension-%28multi-threaded-environment%29-tp26635775p26635775.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26631056</id>
	<title>%newobject and perl5?</title>
	<published>2009-12-03T10:40:44Z</published>
	<updated>2009-12-03T10:40:44Z</updated>
	<author>
		<name>Steve Chan-2</name>
	</author>
	<content type="html">-----BEGIN PGP SIGNED MESSAGE-----
&lt;br&gt;Hash: SHA1
&lt;br&gt;&lt;br&gt;Hi,
&lt;br&gt;&amp;nbsp; &amp;nbsp; After reading the swig documentation on the %newobject directive (
&lt;br&gt;&lt;a href=&quot;http://www.swig.org/Doc1.3/Library.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://www.swig.org/Doc1.3/Library.html&lt;/a&gt;&amp;nbsp;), I tried using it. However
&lt;br&gt;when I run valgrind on the perl interpreter using this new module, it
&lt;br&gt;tells me that there is a definite memory leak with the return values
&lt;br&gt;from the functions that I have declared as %newobject.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; I'm wondering if there is some detail about usage that I've missed?
&lt;br&gt;&lt;br&gt;In my .i file I have the following declarations:
&lt;br&gt;&lt;br&gt;%newobject bro_util_port;
&lt;br&gt;void *bro_util_port(const char *);
&lt;br&gt;&lt;br&gt;%newobject bro_util_subnet;
&lt;br&gt;void *bro_util_subnet( const char *);
&lt;br&gt;&lt;br&gt;&lt;br&gt;And here's the code being wrapped in the .c file:
&lt;br&gt;&lt;br&gt;void *bro_util_port(const char *port){
&lt;br&gt;&lt;br&gt;&amp;nbsp; BroPort *portout;
&lt;br&gt;&amp;nbsp; char proto[80];
&lt;br&gt;&lt;br&gt;&amp;nbsp; portout = (BroPort *)malloc(sizeof(BroPort));
&lt;br&gt;&amp;nbsp; if (sscanf(port,&amp;quot;%u/%s&amp;quot;, &amp;(portout-&amp;gt;port_num), proto)) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if (strcmp(proto, &amp;quot;ip&amp;quot;) == 0) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; portout-&amp;gt;port_proto = IPPROTO_IP;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (strcmp(proto, &amp;quot;icmp&amp;quot;) == 0) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; portout-&amp;gt;port_proto = IPPROTO_ICMP;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (strcmp(proto, &amp;quot;tcp&amp;quot;) == 0) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; portout-&amp;gt;port_proto = IPPROTO_TCP;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (strcmp(proto, &amp;quot;udp&amp;quot;) == 0) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; portout-&amp;gt;port_proto = IPPROTO_UDP;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; free(portout);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fprintf(stderr, &amp;quot;Unknown port protocol: %s\n&amp;quot;, proto);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return(NULL);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return( (void *)portout);
&lt;br&gt;&amp;nbsp; &amp;nbsp; } else {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; fprintf(stderr, &amp;quot;Could not parse port string %s into
&lt;br&gt;####/proto\n&amp;quot;, port);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return( NULL);
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;void *bro_util_subnet(char *subnet ){
&lt;br&gt;&lt;br&gt;&amp;nbsp; BroSubnet *subnetout;
&lt;br&gt;&amp;nbsp; char *mask;
&lt;br&gt;&lt;br&gt;&amp;nbsp; if (mask = strchr( subnet, '/')) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; subnetout = (BroSubnet *)malloc(sizeof( BroSubnet));
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; sscanf( ++mask, &amp;quot;%u&amp;quot;, &amp;subnetout-&amp;gt;sn_width);
&lt;br&gt;&amp;nbsp; &amp;nbsp; *--mask = (char)0;
&lt;br&gt;&amp;nbsp; &amp;nbsp; subnetout-&amp;gt;sn_net = bro_util_inaddr(subnet);
&lt;br&gt;&amp;nbsp; &amp;nbsp; return((void *)subnetout);
&lt;br&gt;&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&amp;nbsp; fprintf(stderr, &amp;quot;Could not parse subnet %s into address/width\n&amp;quot;,
&lt;br&gt;subnet);
&lt;br&gt;&amp;nbsp; return( NULL);
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; I realize there are some input validation that the code needs in
&lt;br&gt;order to be genuinely tight and correct, but for right now, I'd just
&lt;br&gt;like to figure out if SWIG can handle the automatic free()'ing of the
&lt;br&gt;memory that I've malloc'd.
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; Thanks for any help!
&lt;br&gt;&amp;nbsp; &amp;nbsp; Steve
&lt;br&gt;-----BEGIN PGP SIGNATURE-----
&lt;br&gt;Version: GnuPG/MacGPG2 v2.0.12 (Darwin)
&lt;br&gt;Comment: Using GnuPG with Mozilla - &lt;a href=&quot;http://enigmail.mozdev.org/&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://enigmail.mozdev.org/&lt;/a&gt;&lt;br&gt;&lt;br&gt;iEYEARECAAYFAksYBiwACgkQcVd2YI1BWAikCACfR95WoZY5HtADRgBEbCbb+lpH
&lt;br&gt;YkwAnjKZOXb/5Pt6FvnKkZJOUy9OKdyt
&lt;br&gt;=YGGB
&lt;br&gt;-----END PGP SIGNATURE-----
&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26631056&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/-newobject-and-perl5--tp26631056p26631056.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26628921</id>
	<title>Re: Problems with Java typemaps to replace an input object parameter with a different type</title>
	<published>2009-12-03T08:24:22Z</published>
	<updated>2009-12-03T08:24:22Z</updated>
	<author>
		<name>Juan Hernando-2</name>
	</author>
	<content type="html">Hello William,
&lt;br&gt;&lt;br&gt;Thanks for your answer
&lt;br&gt;&lt;br&gt;&amp;gt; I think might be missing something, but the type of the premature 
&lt;br&gt;&amp;gt; garbage collection prevention parameter is always long 
&lt;br&gt;Using the default typemaps, isn't the pgcp the same type as the input
&lt;br&gt;parameter (Foo and B::Foo in this cases) and 'long' the actual parameter
&lt;br&gt;passed to the underlying JNI function? Or am I misundertanding the
&lt;br&gt;reference manual?
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; and the following:
&lt;br&gt;&amp;gt; %rename(BFoo) B::Foo;
&lt;br&gt;&amp;gt; %typemap(jstype) B::Foo &amp; &amp;quot;B.Foo&amp;quot;
&lt;br&gt;&amp;gt; %typemap(javain) B::Foo &amp; &amp;quot;B.Foo.getCPtr($javainput)&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; generates:
&lt;br&gt;&amp;gt; &amp;nbsp; public void f(B.Foo x) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; exampleJNI.Problematic_f__SWIG_1(swigCPtr, this, B.Foo.getCPtr(x), x);
&lt;br&gt;&amp;gt; &amp;nbsp; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; which is what I think you want.
&lt;/div&gt;I'm still having a small compilation problem but the %rename was the
&lt;br&gt;piece I was missing, it has to be guarded by %ifdef clauses depending on 
&lt;br&gt;the module swig is processing but it basically works. Thanks for 
&lt;br&gt;pointing it out! I think I'll be able to work out the rest on my own.
&lt;br&gt;&lt;br&gt;&amp;gt; PS don't forget you can used named typemaps by changing the typemap 
&lt;br&gt;&amp;gt; types from B::Foo &amp; to B::Foo &amp;x to target just the x variable.
&lt;br&gt;Sure, I've read it in the docs. However in this case I'm looking for a
&lt;br&gt;global typemap if possible.
&lt;br&gt;&lt;br&gt;Best regards,
&lt;br&gt;Juan
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26628921&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Problems-with-Java-typemaps-to-replace-an-input-object-parameter-with-a-different-type-tp26544986p26628921.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26628400</id>
	<title>How do I generate throws clauses on Java SwigDirector_*_* functions</title>
	<published>2009-12-03T08:00:28Z</published>
	<updated>2009-12-03T08:00:28Z</updated>
	<author>
		<name>Peter Greenwood</name>
	</author>
	<content type="html">Hi,
&lt;br&gt;I have been happily using Swig to generate C# and Java on a clollection of classes and need to make callbacks on one of them. How do get Swig to generate a throws clause on SwigDirector_&amp;lt;Module&amp;gt;_&amp;lt;functionName&amp;gt; signatures in the JNI file?
&lt;br&gt;For example if I have the following interface:
&lt;br&gt;&lt;br&gt;%module (directors=&amp;quot;1&amp;quot;) example
&lt;br&gt;%{
&lt;br&gt;#include &amp;quot;example.h&amp;quot;
&lt;br&gt;%}
&lt;br&gt;%javaexception(&amp;quot;Exception&amp;quot;) f3 &amp;quot;$action&amp;quot; 
&lt;br&gt;%feature(&amp;quot;director&amp;quot;) A;
&lt;br&gt;%include &amp;quot;example.h&amp;quot;
&lt;br&gt;&lt;br&gt;And h file:
&lt;br&gt;&lt;br&gt;namespace X
&lt;br&gt;{
&lt;br&gt;class A {
&lt;br&gt;public:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; virtual void f3()=0;
&lt;br&gt;};
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;I can see in the exampleJNI.java file:
&lt;br&gt;&lt;br&gt;public final static native void A_f3(long jarg1, A jarg1_) throws Exception;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp;public static void SwigDirector_A_f3(A self) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; self.f3();
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;How do &amp;nbsp;I get Swig to generate &amp;quot;throws Exception&amp;quot; clause as per:
&lt;br&gt;public static void SwigDirector_A_f3(A self) throws Exception {
&lt;br&gt;&amp;nbsp; &amp;nbsp; self.f3();
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&amp;nbsp; 
&lt;br&gt;Thanks</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/How-do-I-generate-throws-clauses-on-Java-SwigDirector_*_*-functions-tp26628400p26628400.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26614073</id>
	<title>Re: newbie boost shared_ptr</title>
	<published>2009-12-02T10:33:54Z</published>
	<updated>2009-12-02T10:33:54Z</updated>
	<author>
		<name>wsfulton</name>
	</author>
	<content type="html">Marcel Breuers wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Marcel Breuers wrote:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Dear readers,
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I recently started using SWIG to make C++ code available under 
&lt;br&gt;&amp;gt; Matlab by
&lt;br&gt;&amp;gt; &amp;gt; generating a Java wrapper that can be called in Matlab.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; For basic functionality this works as expected, but boost shared
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; pointers are giving me some trouble.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; For me it is not clear how to dereference the smart pointer to obtain
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; access to the underlying pointer or object.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Also the smart pointer seems to loose it ability to free memory that is
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; no longer referenced.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I was under the impression that boost_shared_ptr.i was going to solve
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; all the memory management issues related the smart pointers and that
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; this would also create methods to dereference a smart pointer.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Any help and links to examples are appreciated.
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; -----------------------------------
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Below are samples from my code:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; I created a dummy C++ class Angle that contains a method to create 
&lt;br&gt;&amp;gt; a new
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Angle object:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Angle::PointerAngle Angle::createAngleSmrt()
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; PointerAngle smartPtr( new Angle );
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; return smartPtr;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; }
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Angle must be a nested class. SWIG doesn't support nested classes, but
&lt;br&gt;&amp;gt; &amp;gt; the next version has improved support.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; In the header file I define:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; typedef boost::shared_ptr&amp;lt;Angle&amp;gt; PointerAngle;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; In the interface file I include:
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; %{
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; #include &amp;quot;Angle.h&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; %}
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; %include &amp;quot;boost_shared_ptr.i&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; %template(SmartPtrAngle) boost::shared_ptr&amp;lt; Angle &amp;gt;;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; SWIG_SHARED_PTR(SmartPtrAngle,SmartPtrAngle);
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; SmartPointerAngle isn't a C type, so you have that completely wrong.
&lt;br&gt;&amp;gt; &amp;gt; Probably you should have
&lt;br&gt;&amp;gt; &amp;gt; SWIG_SHARED_PTR(SmartPtrAngle, Angle);
&lt;br&gt;&amp;gt; &amp;gt; and skip the %template statement.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt; Angle::PointerAngle createAngleSmrt();
&lt;br&gt;&amp;gt; &amp;gt;&amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; You don't show all the code, so I've not idea what PointerAngle is nor
&lt;br&gt;&amp;gt; &amp;gt; Angle nor inheritance hierarchies. Please see the CHANGES file for an
&lt;br&gt;&amp;gt; &amp;gt; example of SWIG_SHARED_PTR.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; William
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; =============================
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks for your response.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; I have now included the full code (except for some trivial methods).
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Could you please explain to me when to use:
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; %template(SmartPtrAngle) boost::shared_ptr&amp;lt; Angle &amp;gt;;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; and/or
&lt;br&gt;&amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; SWIG_SHARED_PTR(SmartPtrAngle,SmartPtrAngle);
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; You wrote
&lt;br&gt;&amp;gt; &amp;gt; SWIG doesn't support nested classes, but the next version has 
&lt;br&gt;&amp;gt; improved support
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Does this mean I have to introduce a C++ helper class that will only be
&lt;br&gt;&amp;gt; used to create my working horse class?
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt; Thanks in advance.
&lt;br&gt;&amp;gt;
&lt;br&gt;&amp;gt;
&lt;/div&gt;The following are the essential elements for your interface file:
&lt;br&gt;&lt;br&gt;%{
&lt;br&gt;&amp;nbsp; #include &amp;quot;Angle.h&amp;quot;
&lt;br&gt;%}
&lt;br&gt;&lt;br&gt;&lt;br&gt;%include &amp;quot;boost_shared_ptr.i&amp;quot;
&lt;br&gt;//%template(SmartPtrInt) &amp;nbsp; boost::shared_ptr&amp;lt; int &amp;gt;;
&lt;br&gt;//%template(SmartPtrAngle) boost::shared_ptr&amp;lt; Angle &amp;gt;;
&lt;br&gt;SWIG_SHARED_PTR( Angle , Angle);
&lt;br&gt;&lt;br&gt;// make it easy to load native code in Matlab
&lt;br&gt;%pragma(java) modulecode=%{
&lt;br&gt;&amp;nbsp; static {
&lt;br&gt;&amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.loadLibrary(&amp;quot;Angle&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; } catch (UnsatisfiedLinkError e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; System.err.println(&amp;quot;Native code library failed to load. \n&amp;quot; + e);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; System.exit(1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;%}
&lt;br&gt;&lt;br&gt;%include &amp;quot;Angle.h&amp;quot;
&lt;br&gt;&lt;br&gt;&lt;br&gt;Note that you don't use %template when using SWIG_SHARED_PTR... actually 
&lt;br&gt;this macro has a %template in it. Your createArray() method will never 
&lt;br&gt;work as you are putting an array into shared_ptr... a big no no, read 
&lt;br&gt;the shared_ptr docs. I've ignored shared_ptr&amp;lt;int&amp;gt; because of this and 
&lt;br&gt;also I don't know how one would want to handle a shared_ptr of a single 
&lt;br&gt;primitive type from Java. SWIG_SHARED_PTR is for non-primitive types as 
&lt;br&gt;it requires a proxy class.
&lt;br&gt;&lt;br&gt;William
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26614073&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/newbie-boost-shared_ptr-tp26599995p26614073.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26600721</id>
	<title>Callbacks to .NET (tcl proc ivoke .NET delegate)</title>
	<published>2009-12-01T15:02:27Z</published>
	<updated>2009-12-01T15:02:27Z</updated>
	<author>
		<name>Ronen&amp;Galit</name>
	</author>
	<content type="html">&lt;html xmlns:o=&quot;urn:schemas-microsoft-com:office:office&quot; xmlns:w=&quot;urn:schemas-microsoft-com:office:word&quot; xmlns=&quot;http://www.w3.org/TR/REC-html40&quot;&gt;

&lt;head&gt;
&lt;meta http-equiv=Content-Type content=&quot;text/html; charset=us-ascii&quot;&gt;
&lt;meta name=Generator content=&quot;Microsoft Word 11 (filtered medium)&quot;&gt;


&lt;/head&gt;

&lt;body lang=EN-US link=blue vlink=purple&gt;

&lt;div class=Section1 dir=RTL&gt;

&lt;p class=MsoNormal align=right dir=RTL style='text-align:left'&gt;&lt;font size=2 face=Arial&gt;&lt;span dir=LTR style='font-size:10.0pt;font-family:Arial'&gt;Hi,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal align=right dir=RTL style='text-align:left'&gt;&lt;font size=2 face=Arial&gt;&lt;span dir=LTR style='font-size:10.0pt;font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal align=right dir=RTL style='text-align:left'&gt;&lt;font size=2 face=Arial&gt;&lt;span dir=LTR style='font-size:10.0pt;font-family:Arial'&gt;I would
like to get the TCL stdout redirected to .NET GUI application.&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face=Arial&gt;&lt;span lang=HE style='font-size:10.0pt;font-family:Arial'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal align=right dir=RTL style='text-align:left'&gt;&lt;font size=2 face=Arial&gt;&lt;span dir=LTR style='font-size:10.0pt;font-family:Arial'&gt;Would it be
sufficient to register a .NET callback to &lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 face=&quot;Courier New&quot;&gt;&lt;span dir=LTR style='font-size:10.0pt;font-family:&quot;Courier New&quot;;
font-weight:bold'&gt;tcl_CreateChannelHandler API?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal align=right dir=RTL style='text-align:left'&gt;&lt;b&gt;&lt;font size=2 face=&quot;Courier New&quot;&gt;&lt;span dir=LTR style='font-size:10.0pt;font-family:&quot;Courier New&quot;;
font-weight:bold'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class=MsoNormal dir=LTR style='text-align:left;direction:ltr;unicode-bidi:
embed'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Any
comments on this topic are welcome.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal dir=LTR style='text-align:left;direction:ltr;unicode-bidi:
embed'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal dir=LTR style='text-align:left;direction:ltr;unicode-bidi:
embed'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Thanks,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p class=MsoNormal dir=LTR style='text-align:left;direction:ltr;unicode-bidi:
embed'&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt;font-family:Arial'&gt;Ronen&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;
&lt;br /&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br /&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26600721&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Callbacks-to-.NET-%28tcl-proc-ivoke-.NET-delegate%29-tp26600721p26600721.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26599995</id>
	<title>newbie boost shared_ptr</title>
	<published>2009-12-01T14:10:21Z</published>
	<updated>2009-12-01T14:10:21Z</updated>
	<author>
		<name>Marcel Breuers</name>
	</author>
	<content type="html">Marcel Breuers wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; Dear readers,
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I recently started using SWIG to make C++ code available under Matlab by
&lt;br&gt;&amp;gt; generating a Java wrapper that can be called in Matlab.
&lt;br&gt;&amp;gt; &amp;gt; For basic functionality this works as expected, but boost shared
&lt;br&gt;&amp;gt; &amp;gt; pointers are giving me some trouble.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; For me it is not clear how to dereference the smart pointer to obtain
&lt;br&gt;&amp;gt; &amp;gt; access to the underlying pointer or object.
&lt;br&gt;&amp;gt; &amp;gt; Also the smart pointer seems to loose it ability to free memory that is
&lt;br&gt;&amp;gt; &amp;gt; no longer referenced.
&lt;br&gt;&amp;gt; &amp;gt; &amp;nbsp;
&lt;br&gt;&amp;gt; &amp;gt; I was under the impression that boost_shared_ptr.i was going to solve
&lt;br&gt;&amp;gt; &amp;gt; all the memory management issues related the smart pointers and that
&lt;br&gt;&amp;gt; &amp;gt; this would also create methods to dereference a smart pointer.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Any help and links to examples are appreciated.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Thanks!
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; -----------------------------------
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Below are samples from my code:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; I created a dummy C++ class Angle that contains a method to create a new
&lt;br&gt;&amp;gt; &amp;gt; Angle object:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Angle::PointerAngle Angle::createAngleSmrt()
&lt;br&gt;&amp;gt; &amp;gt; {
&lt;br&gt;&amp;gt; &amp;gt; PointerAngle smartPtr( new Angle );
&lt;br&gt;&amp;gt; &amp;gt; return smartPtr;
&lt;br&gt;&amp;gt; &amp;gt; }
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; Angle must be a nested class. SWIG doesn't support nested classes, but 
&lt;br&gt;&amp;gt; the next version has improved support.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; In the header file I define:
&lt;br&gt;&amp;gt; &amp;gt; typedef boost::shared_ptr&amp;lt;Angle&amp;gt; PointerAngle;
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; In the interface file I include:
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; %{
&lt;br&gt;&amp;gt; &amp;gt; #include &amp;quot;Angle.h&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt; %}
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; %include &amp;quot;boost_shared_ptr.i&amp;quot;
&lt;br&gt;&amp;gt; &amp;gt; %template(SmartPtrAngle) boost::shared_ptr&amp;lt; Angle &amp;gt;;
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; SWIG_SHARED_PTR(SmartPtrAngle,SmartPtrAngle);
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; SmartPointerAngle isn't a C type, so you have that completely wrong. 
&lt;br&gt;&amp;gt; Probably you should have
&lt;br&gt;&amp;gt; SWIG_SHARED_PTR(SmartPtrAngle, Angle);
&lt;br&gt;&amp;gt; and skip the %template statement.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Angle::PointerAngle createAngleSmrt();
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; You don't show all the code, so I've not idea what PointerAngle is nor 
&lt;br&gt;&amp;gt; Angle nor inheritance hierarchies. Please see the CHANGES file for an 
&lt;br&gt;&amp;gt; example of SWIG_SHARED_PTR.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; William 
&lt;/div&gt;&lt;br&gt;=============================
&lt;br&gt;&lt;br&gt;Thanks for your response.
&lt;br&gt;&lt;br&gt;I have now included the full code (except for some trivial methods).
&lt;br&gt;&lt;br&gt;Could you please explain to me when to use:
&lt;br&gt;&lt;br&gt;%template(SmartPtrAngle) boost::shared_ptr&amp;lt; Angle &amp;gt;;
&lt;br&gt;&lt;br&gt;and/or
&lt;br&gt;&amp;nbsp;
&lt;br&gt;SWIG_SHARED_PTR(SmartPtrAngle,SmartPtrAngle);
&lt;br&gt;&lt;br&gt;&lt;br&gt;You wrote
&lt;br&gt;&amp;gt; SWIG doesn't support nested classes, but the next version has improved support
&lt;br&gt;&lt;br&gt;Does this mean I have to introduce a C++ helper class that will only be
&lt;br&gt;used to create my working horse class?
&lt;br&gt;&lt;br&gt;Thanks in advance.
&lt;br&gt;&lt;br&gt;&lt;br&gt;My code (I have removed some trivial functions):
&lt;br&gt;------------------------------------------------
&lt;br&gt;%module AngleSwig
&lt;br&gt;&lt;br&gt;%{
&lt;br&gt;&amp;nbsp; #include &amp;quot;Angle.h&amp;quot;
&lt;br&gt;%}
&lt;br&gt;&lt;br&gt;&lt;br&gt;%include &amp;quot;boost_shared_ptr.i&amp;quot;
&lt;br&gt;%template(SmartPtrInt) &amp;nbsp; boost::shared_ptr&amp;lt; int &amp;gt;;
&lt;br&gt;%template(SmartPtrAngle) boost::shared_ptr&amp;lt; Angle &amp;gt;;
&lt;br&gt;&lt;br&gt;SWIG_SHARED_PTR( SmartPtrAngle , SmartPtrAngle);
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;// make it easy to load native code in Matlab
&lt;br&gt;%pragma(java) modulecode=%{
&lt;br&gt;&amp;nbsp; static {
&lt;br&gt;&amp;nbsp; &amp;nbsp; try {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; System.loadLibrary(&amp;quot;Angle&amp;quot;);
&lt;br&gt;&amp;nbsp; &amp;nbsp; } catch (UnsatisfiedLinkError e) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; System.err.println(&amp;quot;Native code library failed to load. \n&amp;quot; + e);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; System.exit(1);
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;%}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;&amp;nbsp; class Angle
&lt;br&gt;&amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; public:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; enum Type { Radians, Degrees };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Angle();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; explicit Angle(double i_angle, const Type&amp; i_type = Degrees);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Angle(const Angle&amp; i_otherAngle);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; virtual ~Angle(); &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double radians() const;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double degrees() const;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double sin() const;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double cos() const;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; static double degreesToRadians(double i_degrees);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; static double radiansToDegrees(double i_radians);
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; void reset();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; static const double PI;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Angle::PointerInt &amp;nbsp; createArray();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Angle::PointerAngle createAngleSmrt();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Angle* &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;createAngle();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; private:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double m_radians;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double m_degrees;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double m_sin;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double m_cos;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; void normalize();
&lt;br&gt;&amp;nbsp; };
&lt;br&gt;&lt;br&gt;&lt;br&gt;-------------
&lt;br&gt;HEADER_FILE:
&lt;br&gt;-------------
&lt;br&gt;&lt;br&gt;#ifndef DDHK_ANGLE_H
&lt;br&gt;#define DDHK_ANGLE_H
&lt;br&gt;&lt;br&gt;// STL Includes
&lt;br&gt;#include &amp;lt;iostream&amp;gt;
&lt;br&gt;#include &amp;lt;vector&amp;gt;
&lt;br&gt;&lt;br&gt;#include &amp;lt;boost/shared_ptr.hpp&amp;gt; //mb!!
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; class Angle
&lt;br&gt;&amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; public:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // Type definitions
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; typedef std::vector&amp;lt;Angle&amp;gt; VectorType;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; typedef boost::shared_ptr&amp;lt;int&amp;gt; &amp;nbsp; PointerInt; &amp;nbsp;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; typedef boost::shared_ptr&amp;lt;Angle&amp;gt; PointerAngle; &amp;nbsp;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; enum Type { Radians, Degrees };
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; int *arrayTest;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // == I want to test how SWIG handles the next three methods == 
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; PointerInt &amp;nbsp; createArray();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; PointerAngle createAngleSmrt();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Angle* &amp;nbsp; &amp;nbsp; &amp;nbsp; createAngle();
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Angle();
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; explicit Angle(double i_angle, const Type&amp; i_type = Degrees);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Angle(const Angle&amp; i_otherAngle);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; virtual ~Angle();
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; 
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double radians() const;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double degrees() const;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; static double degreesToRadians(double i_degrees);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; static double radiansToDegrees(double i_radians);
&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; static const double PI;
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; private:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double m_radians;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double m_degrees;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double m_sin;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; double m_cos;
&lt;br&gt;&lt;br&gt;&amp;nbsp; };
&lt;br&gt;&lt;br&gt;&amp;nbsp; 
&lt;br&gt;#endif // !DDHK_ANGLE_H
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;-----
&lt;br&gt;CPP
&lt;br&gt;-----
&lt;br&gt;&lt;br&gt;// Class declaration.
&lt;br&gt;#include &amp;quot;Angle.h&amp;quot;
&lt;br&gt;&lt;br&gt;&lt;br&gt;// STL Includes
&lt;br&gt;#define _USE_MATH_DEFINES
&lt;br&gt;#include &amp;lt;math.h&amp;gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;// Pi constant
&lt;br&gt;const double Angle::PI = M_PI;
&lt;br&gt;&lt;br&gt;Angle::Angle()
&lt;br&gt;&amp;nbsp; : m_radians(0.)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; normalize();
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Angle::PointerInt Angle::createArray()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; arrayTest = new int[50000];
&lt;br&gt;&amp;nbsp; PointerInt smartPtr( arrayTest );
&lt;br&gt;&amp;nbsp; return smartPtr;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Angle::PointerAngle Angle::createAngleSmrt()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; PointerAngle smartPtr( new Angle );
&lt;br&gt;&amp;nbsp; return smartPtr;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;Angle* Angle::createAngle()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; return new Angle;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Angle::Angle(double i_angle, const Type&amp; i_type)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; switch (i_type)
&lt;br&gt;&amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; default:
&lt;br&gt;&amp;nbsp; &amp;nbsp; case Degrees:
&lt;br&gt;&amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; m_radians = degreesToRadians(i_angle);
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; &amp;nbsp; case Radians:
&lt;br&gt;&amp;nbsp; &amp;nbsp; {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; m_radians = i_angle;
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; break;
&lt;br&gt;&amp;nbsp; &amp;nbsp; }
&lt;br&gt;&amp;nbsp; }
&lt;br&gt;&lt;br&gt;&amp;nbsp; normalize();
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;Angle::Angle(const Angle&amp; i_otherAngle)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; m_radians = i_otherAngle.m_radians;
&lt;br&gt;&amp;nbsp; normalize();
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;Angle::~Angle()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; // empty
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;double Angle::radians() const
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; return m_radians;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;double Angle::degrees() const
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; return m_degrees;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;double Angle::sin() const
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; return m_sin;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;double Angle::degreesToRadians(double i_degrees)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; return (i_degrees / 180.) * PI;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;double Angle::radiansToDegrees(double i_radians)
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; return (i_radians / PI) * 180.;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26599995&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/newbie-boost-shared_ptr-tp26599995p26599995.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26597501</id>
	<title>Re: Getting started</title>
	<published>2009-12-01T11:16:25Z</published>
	<updated>2009-12-01T11:16:25Z</updated>
	<author>
		<name>wsfulton</name>
	</author>
	<content type="html">David Piepgrass wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 1. if the system header #includes other headers, you have to %import
&lt;br&gt;&amp;gt;&amp;gt; those manually, and
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; 2. SWIG gets the mistaken impression that structures defined in the
&lt;br&gt;&amp;gt;&amp;gt; system headers, such as RECT, are wrapped in another SWIG module. This
&lt;br&gt;&amp;gt;&amp;gt; only causes trouble if you actually need SWIG to wrap one of those
&lt;br&gt;&amp;gt;&amp;gt; structures.
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Hey William, if you're reading this, don't you figure there should be
&lt;br&gt;&amp;gt;&amp;gt; a %systeminclude command that would avoid these problems?
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; How will it know which types to not import given a mix of struct,
&lt;br&gt;&amp;gt;&amp;gt; primitive types and typedefs using structs, typedefs and struct
&lt;br&gt;&amp;gt;&amp;gt; declared
&lt;br&gt;&amp;gt;&amp;gt; in one line statment etc? There is an easy solution though, just ignore
&lt;br&gt;&amp;gt;&amp;gt; any types which you won't be wrapping before it is imported using
&lt;br&gt;&amp;gt;&amp;gt; %ignore, that is %ignore types that you want to treat as an opaque type
&lt;br&gt;&amp;gt;&amp;gt; without a proxy class.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Ahh yes, but what if you actually want SWIG to produce a wrapper for a system structure like RECT? Then you would have to use %include, and %ignore all structures that happen to be in the same system header file, other than the one you want. Or can you somehow use %ignore and still get SWIG to produce a wrapper?
&lt;br&gt;&amp;gt; 
&lt;/div&gt;Well yes, either you need to %import or %include a header file and 
&lt;br&gt;%ignore types selectively. Otherwise selectively copy types from the 
&lt;br&gt;header into an interface file.
&lt;br&gt;&lt;br&gt;&amp;gt; I was thinking a recursive &amp;quot;%systemimport&amp;quot; would be really handy for system header files, but then again, in the real world SWIG might get tripped up by compiler extensions like __declspec. &amp;nbsp;Oh well.
&lt;br&gt;&amp;gt; 
&lt;br&gt;The -importall option does this and extensions like __declspec are easy 
&lt;br&gt;to deal with. Usually system headers contain all sorts of junk which is 
&lt;br&gt;not usually needed for wrappers though.
&lt;br&gt;&lt;br&gt;William
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26597501&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Getting-started-tp26539765p26597501.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26581954</id>
	<title>Re: Getting started</title>
	<published>2009-11-30T13:05:19Z</published>
	<updated>2009-11-30T13:05:19Z</updated>
	<author>
		<name>David Piepgrass</name>
	</author>
	<content type="html">&lt;div class='shrinkable-quote'&gt;&amp;gt; &amp;gt; 1. if the system header #includes other headers, you have to %import
&lt;br&gt;&amp;gt; those manually, and
&lt;br&gt;&amp;gt; &amp;gt; 2. SWIG gets the mistaken impression that structures defined in the
&lt;br&gt;&amp;gt; system headers, such as RECT, are wrapped in another SWIG module. This
&lt;br&gt;&amp;gt; only causes trouble if you actually need SWIG to wrap one of those
&lt;br&gt;&amp;gt; structures.
&lt;br&gt;&amp;gt; &amp;gt;
&lt;br&gt;&amp;gt; &amp;gt; Hey William, if you're reading this, don't you figure there should be
&lt;br&gt;&amp;gt; a %systeminclude command that would avoid these problems?
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; How will it know which types to not import given a mix of struct,
&lt;br&gt;&amp;gt; primitive types and typedefs using structs, typedefs and struct
&lt;br&gt;&amp;gt; declared
&lt;br&gt;&amp;gt; in one line statment etc? There is an easy solution though, just ignore
&lt;br&gt;&amp;gt; any types which you won't be wrapping before it is imported using
&lt;br&gt;&amp;gt; %ignore, that is %ignore types that you want to treat as an opaque type
&lt;br&gt;&amp;gt; without a proxy class.
&lt;/div&gt;&lt;br&gt;Ahh yes, but what if you actually want SWIG to produce a wrapper for a system structure like RECT? Then you would have to use %include, and %ignore all structures that happen to be in the same system header file, other than the one you want. Or can you somehow use %ignore and still get SWIG to produce a wrapper?
&lt;br&gt;&lt;br&gt;I was thinking a recursive &amp;quot;%systemimport&amp;quot; would be really handy for system header files, but then again, in the real world SWIG might get tripped up by compiler extensions like __declspec. &amp;nbsp;Oh well.
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581954&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Getting-started-tp26539765p26581954.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26582153</id>
	<title>Re: C structural &quot;inheritance&quot;?</title>
	<published>2009-11-30T12:57:12Z</published>
	<updated>2009-11-30T12:57:12Z</updated>
	<author>
		<name>wsfulton</name>
	</author>
	<content type="html">Sean wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; William S Fulton wrote:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; Add the following to your interface file:
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; %types(Derived = Base);
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt;&amp;gt; This will modify the runtime type system to accept a Base * where a Derived * 
&lt;br&gt;&amp;gt;&amp;gt; is expected with a simple cast from Derived * to Base *. Hopefully that is all 
&lt;br&gt;&amp;gt;&amp;gt; you need.
&lt;br&gt;&amp;gt;&amp;gt;
&lt;br&gt;&amp;gt;&amp;gt; Er, correction... accept a Derived * where a Base * is expected. Sorry for 
&lt;br&gt;&amp;gt;&amp;gt; confusion.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks! &amp;nbsp;&amp;quot;%types()&amp;quot; seems like what I am looking for, but it only does half the
&lt;br&gt;&amp;gt; job. &amp;nbsp;It does the C-level conversions, but doesn't set up the language-level
&lt;br&gt;&amp;gt; inheritance relationships. &amp;nbsp;For example in the generated Python wrapper file, you
&lt;br&gt;&amp;gt; still get this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; class Derived(_object):
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; where you should have this:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; class Derived(Base):
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ...
&lt;br&gt;&amp;gt; 
&lt;/div&gt;This isn't possible at the moment. Well, nearly. If you use -py3, and 
&lt;br&gt;the abc feature:
&lt;br&gt;&lt;br&gt;%feature(&amp;quot;python:abc&amp;quot;) Derived &amp;quot;Base&amp;quot;;
&lt;br&gt;&lt;br&gt;it will do as you want. Quite why it is only a py3 feature, I don't know.
&lt;br&gt;&lt;br&gt;We ought to have a general way to modify base classes for the scripting 
&lt;br&gt;languages as there is a way to achieve this with the statically typed 
&lt;br&gt;target languages.
&lt;br&gt;&lt;br&gt;&amp;gt; I'm not sure how the current (1.3.35, anyways) behavior is useful -- is it a bug?
&lt;br&gt;&amp;gt; Should this use of %types be documented somewhere?
&lt;br&gt;There is a bit in Typemaps.html and the CHANGES file.
&lt;br&gt;William
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26582153&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/C-structural-%22inheritance%22--tp26401906p26582153.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26581766</id>
	<title>Re: Problems with Java typemaps to replace an input object parameter with a different type</title>
	<published>2009-11-30T12:56:42Z</published>
	<updated>2009-11-30T12:56:42Z</updated>
	<author>
		<name>wsfulton</name>
	</author>
	<content type="html">Juan Hernando wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Dear all,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I'm trying to wrap different C++ namespaces into different Java packages 
&lt;br&gt;&amp;gt; with SWIG 1.3.36 and so far I've been able to work out all the details 
&lt;br&gt;&amp;gt; except one.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Suppose I have two namespaces A and B that map to Java packages A and B. 
&lt;br&gt;&amp;gt; In both namespaces there is an homonym class Foo which we don't want to 
&lt;br&gt;&amp;gt; rename (actually renaming would solve much of the problems but that's 
&lt;br&gt;&amp;gt; inconvenient from the user perspective).
&lt;br&gt;&amp;gt; In A there is a class like this:
&lt;br&gt;&amp;gt; class Problematic
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;void f(Foo &amp;x);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;void f(B::Foo &amp;x);
&lt;br&gt;&amp;gt; };
&lt;br&gt;&amp;gt; As the documentation says this type of code causes name clashes in the 
&lt;br&gt;&amp;gt; target language because namespaces are flattened. I could rename one of 
&lt;br&gt;&amp;gt; the overloads but then the C++ code and Java code wouldn't be the same 
&lt;br&gt;&amp;gt; and I want to avoid that.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; So, the solution seems to be providing a typemap for B::Foo &amp;, but I'm 
&lt;br&gt;&amp;gt; not able to get it right.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; First I define a typemap for jstype
&lt;br&gt;&amp;gt; %typemap(jstype) B::Foo &amp; &amp;quot;B.Foo&amp;quot;
&lt;br&gt;&amp;gt; so the Java code looks like this:
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void f(B.Foo x) {
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;ModuleAJNI.f__SWIG_1(swigCPtr, this, B.getCPtr(x), x);
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;&amp;gt; ...
&lt;br&gt;&amp;gt; The Java interface is exactly what I want but it doesn't work for 2 
&lt;br&gt;&amp;gt; reasons. First getCPtr is called on the wrong class, so I have to 
&lt;br&gt;&amp;gt; provide a typemap for javain. And then, premature garbage collection 
&lt;br&gt;&amp;gt; parameter doesn't match the type in ModuleAJNI.f__SWIG_1 because I 
&lt;br&gt;&amp;gt; haven't changed jstype. I've tried many possible combinations but 
&lt;br&gt;&amp;gt; without success. The key points are that there is no way to override the 
&lt;br&gt;&amp;gt; type of the permature garbage collection parameter (and I don't want to 
&lt;br&gt;&amp;gt; get rid of it) and that the JNI type is unique so I can't do tricks with 
&lt;br&gt;&amp;gt; the argument list without affecting other points of the C++ code. The 
&lt;br&gt;&amp;gt; closer I got was working fine but since I changed the jni type it 
&lt;br&gt;&amp;gt; affected wrapping of Foo &amp; as a return type.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Passing the object directly instead of the pointer seems to be a 
&lt;br&gt;&amp;gt; possible solution but that involves direct access to fields in the C++ 
&lt;br&gt;&amp;gt; side, which is cumbersome and not less efficient that getCPtr.
&lt;br&gt;&amp;gt; I'd appreciate very much any idea about how to solve this problem neatly?
&lt;br&gt;&amp;gt; 
&lt;/div&gt;I think might be missing something, but the type of the premature 
&lt;br&gt;garbage collection prevention parameter is always long and the following:
&lt;br&gt;&lt;br&gt;%rename(BFoo) B::Foo;
&lt;br&gt;%typemap(jstype) B::Foo &amp; &amp;quot;B.Foo&amp;quot;
&lt;br&gt;%typemap(javain) B::Foo &amp; &amp;quot;B.Foo.getCPtr($javainput)&amp;quot;
&lt;br&gt;&lt;br&gt;&lt;br&gt;generates:
&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp;public void f(B.Foo x) {
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;exampleJNI.Problematic_f__SWIG_1(swigCPtr, this, B.Foo.getCPtr(x), x);
&lt;br&gt;&amp;nbsp; &amp;nbsp;}
&lt;br&gt;&lt;br&gt;which is what I think you want.
&lt;br&gt;&lt;br&gt;William
&lt;br&gt;&lt;br&gt;PS don't forget you can used named typemaps by changing the typemap 
&lt;br&gt;types from B::Foo &amp; to B::Foo &amp;x to target just the x variable.
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581766&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Problems-with-Java-typemaps-to-replace-an-input-object-parameter-with-a-different-type-tp26544986p26581766.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26581884</id>
	<title>Re: SWIGTYPE_p_p_char : how to use it ?</title>
	<published>2009-11-30T12:56:22Z</published>
	<updated>2009-11-30T12:56:22Z</updated>
	<author>
		<name>wsfulton</name>
	</author>
	<content type="html">Otmane Lahlou wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hi List,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The C type char ** is wrapped in SWIGTYPE_p_p_char &amp;nbsp;when i wrapped my 
&lt;br&gt;&amp;gt; c++ class to Java.
&lt;br&gt;&amp;gt; This class has a method with a c++ argument.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; How can I deal with the SWIGTYPE_p_p_char ?? How can I initialize it, 
&lt;br&gt;&amp;gt; access to its data??
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thank you for help
&lt;/div&gt;Read about &amp;quot;Type Wrapper&amp;quot; classes and pointer to pointers in the Java 
&lt;br&gt;chapter. Depending on what the char ** does, write some typemaps or a 
&lt;br&gt;helper function to deal with this. The typemaps in Lib/java/various.i 
&lt;br&gt;might be useful.
&lt;br&gt;&lt;br&gt;William
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581884&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/SWIGTYPE_p_p_char-%3A-how-to-use-it---tp26531127p26581884.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26581837</id>
	<title>Re: Swig + C# + multiple modules in different C# namespaces</title>
	<published>2009-11-30T12:56:16Z</published>
	<updated>2009-11-30T12:56:16Z</updated>
	<author>
		<name>wsfulton</name>
	</author>
	<content type="html">Herve Blanc wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; I have tried to use advice 
&lt;br&gt;&amp;gt; @ &lt;a href=&quot;http://old.nabble.com/Swig-%2B-C--%2B-multiple-modules-in-different-C--namespaces-td25286199.html&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://old.nabble.com/Swig-%2B-C--%2B-multiple-modules-in-different-C--namespaces-td25286199.html&lt;/a&gt;, 
&lt;br&gt;&amp;gt; without success.
&lt;br&gt;&amp;gt; I am cutting/pasting below a simple test case below to be precise. From 
&lt;br&gt;&amp;gt; the information provided earlier I would have expected the 
&lt;br&gt;&amp;gt; derivedclass.cs created by swig to include the 
&lt;br&gt;&amp;gt; &amp;quot;using CsharpNamespace.Base;&amp;quot; but it seems my typemap statement in 
&lt;br&gt;&amp;gt; derivedmodule.i is not taken into account.
&lt;br&gt;&amp;gt; There must be something obvious another pair of eyes familiar with SWIG 
&lt;br&gt;&amp;gt; should catch easily I hope?
&lt;br&gt;&amp;gt; Thanks in advance for any help,
&lt;br&gt;&amp;gt; Herve. 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; === baseclass.h ===
&lt;br&gt;&amp;gt; namespace BaseNamespace {
&lt;br&gt;&amp;gt; class baseclass {
&lt;br&gt;&amp;gt; public:
&lt;br&gt;&amp;gt; &amp;nbsp; int foo();
&lt;br&gt;&amp;gt; };
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; === derivedclass.h ===
&lt;br&gt;&amp;gt; #include &amp;quot;base.h&amp;quot;
&lt;br&gt;&amp;gt; namespace DerivedNamespace {
&lt;br&gt;&amp;gt; class derivedclass : public BaseNamespace::baseclass {
&lt;br&gt;&amp;gt; public:
&lt;br&gt;&amp;gt; &amp;nbsp; int bar();
&lt;br&gt;&amp;gt; };
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; === basemodule.i ===
&lt;br&gt;&amp;gt; %module BaseModule
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %{
&lt;br&gt;&amp;gt; #include &amp;quot;baseclass.h&amp;quot;
&lt;br&gt;&amp;gt; %}
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %include &amp;quot;baseclass.h&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; === derivedmodule.i ===
&lt;br&gt;&amp;gt; %module DerivedModule
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %{
&lt;br&gt;&amp;gt; #include &amp;quot;derivedclass.h&amp;quot;
&lt;br&gt;&amp;gt; %}
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %typemap(csimports) DerivedModule
&lt;br&gt;&amp;gt; %{ 
&lt;br&gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; using CsharpNamespace.Base; 
&lt;br&gt;&amp;gt; %} 
&lt;/div&gt;DerivedModule does not name a type. Change to:
&lt;br&gt;&lt;br&gt;%typemap(csimports) DerivedNamespace::derivedclass
&lt;br&gt;%{
&lt;br&gt;using CsharpNamespace.Base;
&lt;br&gt;using System;
&lt;br&gt;using System.Runtime.InteropServices;
&lt;br&gt;%}
&lt;br&gt;&lt;br&gt;William
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581837&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Swig-%2B-C--%2B-multiple-modules-in-different-C--namespaces-tp26539280p26581837.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26581872</id>
	<title>Re: Getting started</title>
	<published>2009-11-30T12:56:04Z</published>
	<updated>2009-11-30T12:56:04Z</updated>
	<author>
		<name>wsfulton</name>
	</author>
	<content type="html">David Piepgrass wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Including header files is often not recommended because they tend to contain things SWIG doesn't understand: everything from special compiler-specific keywords like __declspec to mundane aliases like DWORD and PVOID that are defined in system headers (note that SWIG doesn't follow #include, because you don't want it to follow, say, &amp;lt;stdio.h&amp;gt; and create wrappers for fopen() and printf().)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; When I use SWIG, I do %include my header files directly. That's because I have control over my header files, and any time SWIG doesn't understand something I can always 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; - wrap it in a &amp;quot;#ifndef SWIG&amp;quot; block so that the C++ compiler sees it but not SWIG. 
&lt;br&gt;&amp;gt; - add a typedef or #define that helps SWIG understand something, or an %ignore to make SWIG ignore it
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; One other tip about including: you can include system headers with %import instead of %include when you want to pull in standard #defines and typedefs but ignore functions. For example I use (on Windows)
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %import &amp;quot;WinDef.h&amp;quot;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; The only problems are that
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 1. if the system header #includes other headers, you have to %import those manually, and 
&lt;br&gt;&amp;gt; 2. SWIG gets the mistaken impression that structures defined in the system headers, such as RECT, are wrapped in another SWIG module. This only causes trouble if you actually need SWIG to wrap one of those structures.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Hey William, if you're reading this, don't you figure there should be a %systeminclude command that would avoid these problems?
&lt;/div&gt;&lt;br&gt;How will it know which types to not import given a mix of struct, 
&lt;br&gt;primitive types and typedefs using structs, typedefs and struct declared 
&lt;br&gt;in one line statment etc? There is an easy solution though, just ignore 
&lt;br&gt;any types which you won't be wrapping before it is imported using 
&lt;br&gt;%ignore, that is %ignore types that you want to treat as an opaque type 
&lt;br&gt;without a proxy class.
&lt;br&gt;&lt;br&gt;William
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581872&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Getting-started-tp26539765p26581872.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26581652</id>
	<title>Re: Temporarily disable std_vector.i?</title>
	<published>2009-11-30T12:48:35Z</published>
	<updated>2009-11-30T12:48:35Z</updated>
	<author>
		<name>Russell E. Owen-4</name>
	</author>
	<content type="html">In article &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581652&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;4B0C61AC.7080207@...&lt;/a&gt;&amp;gt;,
&lt;br&gt;&amp;nbsp;William S Fulton &amp;lt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581652&amp;i=1&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;wsf@...&lt;/a&gt;&amp;gt; wrote:
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Russell Owen wrote:
&lt;br&gt;&amp;gt; &amp;gt; Thank you very much for fixing this bug. It will be a huge help to our 
&lt;br&gt;&amp;gt; &amp;gt; project. (I can confirm that SWIG 1.3.40 fixes the problem for me; I was 
&lt;br&gt;&amp;gt; &amp;gt; at 1.3.36).
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; &amp;gt; Could you please expand a bit on your statement: &amp;quot;Yes, it is better to 
&lt;br&gt;&amp;gt; &amp;gt; use %template with a class type (Bar in this case) once SWIG has 
&lt;br&gt;&amp;gt; &amp;gt; parsed.&amp;quot;? I'm not sure what you are recommending.
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; I'm trying to say that the order of your statements is important. SWIG 
&lt;br&gt;&amp;gt; must parse Bar before you use Bar in %template. This way SWIG knows all 
&lt;br&gt;&amp;gt; the type information before you use the types.
&lt;/div&gt;&lt;br&gt;I see. Any idea what the risk is of violating this rule by defining the 
&lt;br&gt;objects after the %template statement?
&lt;br&gt;&lt;br&gt;Our real code is complex enough that it will be messy to split the 
&lt;br&gt;definitions into multiple headers and get the dependency order right.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; &amp;gt; I see that the warnings about an overlaoded method is still printed, but 
&lt;br&gt;&amp;gt; &amp;gt; I can't see anything to warn about anymore. Should I report it as a 
&lt;br&gt;&amp;gt; &amp;gt; minor bug?
&lt;br&gt;&amp;gt; &amp;gt; 
&lt;br&gt;&amp;gt; The warning is there because std::vector of any type is given the same 
&lt;br&gt;&amp;gt; precedence in the overloading ranking mechanism. Actually I don't know 
&lt;br&gt;&amp;gt; if it is a problem or not! Try it out and see if you can get both the 
&lt;br&gt;&amp;gt; overloaded constructors to work. Normally you get this warning when a 
&lt;br&gt;&amp;gt; multiple C++ types have just one equivalent in the target language, eg 
&lt;br&gt;&amp;gt; Foo*, Foo&amp;, const Foo*, const Foo&amp; etc.
&lt;/div&gt;&lt;br&gt;The original example (at start of this thread) demonstrates that all 
&lt;br&gt;versions of the C++ constructor are available. So I think the warning is 
&lt;br&gt;unnecessary and have filed a bug report accordingly.
&lt;br&gt;&lt;br&gt;-- Russell
&lt;br&gt;&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581652&amp;i=2&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Temporarily-disable-std_vector.i--tp26119470p26581652.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26581625</id>
	<title>Re: Warning(303): %extend defined for an undeclared class</title>
	<published>2009-11-30T12:47:24Z</published>
	<updated>2009-11-30T12:47:24Z</updated>
	<author>
		<name>wsfulton</name>
	</author>
	<content type="html">Bill Spotz wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Hello,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Can somebody explain to me what triggers a Warning(303)? &amp;nbsp;I have &amp;nbsp;
&lt;br&gt;&amp;gt; successfully used %extend many times before %include-ing the &amp;nbsp;
&lt;br&gt;&amp;gt; previously undeclared class header file. &amp;nbsp;So I am not even sure what &amp;nbsp;
&lt;br&gt;&amp;gt; the warning is trying to tell me.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I am getting this warning now within a fairly complicated module, and &amp;nbsp;
&lt;br&gt;&amp;gt; it is preventing the wrapping of a class.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I have played with directive ordering and namespace handling, all to &amp;nbsp;
&lt;br&gt;&amp;gt; no avail.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I have tried to construct a simple example, but I cannot yet recreate &amp;nbsp;
&lt;br&gt;&amp;gt; the problem in a simple setting.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; FWIW, I am trying to wrap a class with a single constructor. &amp;nbsp;I want &amp;nbsp;
&lt;br&gt;&amp;gt; to %ignore the constructor and substitute a new one with %extend. &amp;nbsp;The &amp;nbsp;
&lt;br&gt;&amp;gt; class is nested in two namespaces. &amp;nbsp;I have tried everything I can &amp;nbsp;
&lt;br&gt;&amp;gt; think of.
&lt;br&gt;&amp;gt; 
&lt;/div&gt;The following triggers it because Bah doesn't exist:
&lt;br&gt;&lt;br&gt;%extend Bah
&lt;br&gt;{
&lt;br&gt;&amp;nbsp; &amp;nbsp;void foo() {}
&lt;br&gt;};
&lt;br&gt;%inline %{
&lt;br&gt;namespace Space {
&lt;br&gt;&amp;nbsp; &amp;nbsp;struct Bah {};
&lt;br&gt;}
&lt;br&gt;%}
&lt;br&gt;&lt;br&gt;If you use instead:
&lt;br&gt;&lt;br&gt;%extend Space::Bah
&lt;br&gt;&lt;br&gt;all is well. You must have a simple namespace or typo problem somewhere. 
&lt;br&gt;Try using the &amp;quot;-debug-module 4&amp;quot; option to swig, which will then display 
&lt;br&gt;the parse tree for everything. You can check spellings, namespace that 
&lt;br&gt;SWIG is actually using. The svn version of SWIG also has the 
&lt;br&gt;-debug-csymbols option which displays all the C symbols and namespaces 
&lt;br&gt;they are in, which might be helpful.
&lt;br&gt;&lt;br&gt;William
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581625&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Warning%28303%29%3A--extend-defined-for-an-undeclared-class-tp26549622p26581625.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26581656</id>
	<title>Re: newbie boost shared_ptr</title>
	<published>2009-11-30T12:47:19Z</published>
	<updated>2009-11-30T12:47:19Z</updated>
	<author>
		<name>wsfulton</name>
	</author>
	<content type="html">Marcel Breuers wrote:
&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; Dear readers,
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I recently started using SWIG to make C++ code available under Matlab by
&lt;br&gt;&amp;gt; generating a Java wrapper that can be called in Matlab.
&lt;br&gt;&amp;gt; For basic functionality this works as expected, but boost shared
&lt;br&gt;&amp;gt; pointers are giving me some trouble.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; For me it is not clear how to dereference the smart pointer to obtain
&lt;br&gt;&amp;gt; access to the underlying pointer or object.
&lt;br&gt;&amp;gt; Also the smart pointer seems to loose it ability to free memory that is
&lt;br&gt;&amp;gt; no longer referenced.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I was under the impression that boost_shared_ptr.i was going to solve
&lt;br&gt;&amp;gt; all the memory management issues related the smart pointers and that
&lt;br&gt;&amp;gt; this would also create methods to dereference a smart pointer.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Any help and links to examples are appreciated.
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Thanks!
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; -----------------------------------
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Below are samples from my code:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; I created a dummy C++ class Angle that contains a method to create a new
&lt;br&gt;&amp;gt; Angle object:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; Angle::PointerAngle Angle::createAngleSmrt()
&lt;br&gt;&amp;gt; {
&lt;br&gt;&amp;gt; &amp;nbsp;PointerAngle smartPtr( new Angle );
&lt;br&gt;&amp;gt; &amp;nbsp;return smartPtr;
&lt;br&gt;&amp;gt; }
&lt;br&gt;&amp;gt; 
&lt;/div&gt;Angle must be a nested class. SWIG doesn't support nested classes, but 
&lt;br&gt;the next version has improved support.
&lt;br&gt;&lt;div class='shrinkable-quote'&gt;&lt;br&gt;&amp;gt; In the header file I define:
&lt;br&gt;&amp;gt; typedef boost::shared_ptr&amp;lt;Angle&amp;gt; PointerAngle;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; In the interface file I include:
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %{
&lt;br&gt;&amp;gt; &amp;nbsp;#include &amp;quot;Angle.h&amp;quot;
&lt;br&gt;&amp;gt; %}
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; %include &amp;quot;boost_shared_ptr.i&amp;quot;
&lt;br&gt;&amp;gt; %template(SmartPtrAngle) boost::shared_ptr&amp;lt; Angle &amp;gt;;
&lt;br&gt;&amp;gt; 
&lt;br&gt;&amp;gt; SWIG_SHARED_PTR(SmartPtrAngle,SmartPtrAngle);
&lt;br&gt;&amp;gt; 
&lt;/div&gt;SmartPointerAngle isn't a C type, so you have that completely wrong. 
&lt;br&gt;Probably you should have
&lt;br&gt;SWIG_SHARED_PTR(SmartPtrAngle, Angle);
&lt;br&gt;and skip the %template statement.
&lt;br&gt;&lt;br&gt;&amp;gt; Angle::PointerAngle createAngleSmrt();
&lt;br&gt;&amp;gt; 
&lt;br&gt;&lt;br&gt;You don't show all the code, so I've not idea what PointerAngle is nor 
&lt;br&gt;Angle nor inheritance hierarchies. Please see the CHANGES file for an 
&lt;br&gt;example of SWIG_SHARED_PTR.
&lt;br&gt;&lt;br&gt;William
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Join us December 9, 2009 for the Red Hat Virtual Experience,
&lt;br&gt;a free event focused on virtualization and cloud computing. 
&lt;br&gt;Attend in-depth sessions from your desk. Your couch. Anywhere.
&lt;br&gt;&lt;a href=&quot;http://p.sf.net/sfu/redhat-sfdev2dev&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/redhat-sfdev2dev&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26581656&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/newbie-boost-shared_ptr-tp26561373p26581656.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26579252</id>
	<title>Casting parameters to director methods</title>
	<published>2009-11-30T09:42:37Z</published>
	<updated>2009-11-30T09:42:37Z</updated>
	<author>
		<name>Ásgeir Bjarni Ingvarsson</name>
	</author>
	<content type="html">I'm trying to wrap a few classes for Python. A simplified version of 
&lt;br&gt;them would be the following:
&lt;br&gt;&lt;br&gt;class Message
&lt;br&gt;{
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;class Child
&lt;br&gt;{
&lt;br&gt;public:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;void sendMessage(const Message &amp;msg) = 0;
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;class Parent
&lt;br&gt;{
&lt;br&gt;public:
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;void sendMessage(const Message &amp;msg)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// For each contained child
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// call child.sendMessage(msg)
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// End for
&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}
&lt;br&gt;};
&lt;br&gt;&lt;br&gt;I want to extend the Message and Child classes in Python and have them 
&lt;br&gt;converted to correct Python classes when back in Python. I.e. I want 
&lt;br&gt;PyChild.sendMessage to be able to call msg.pyMethod if the msg parameter 
&lt;br&gt;is of type PyMessage and PyMessage has a method called pyMethod.
&lt;br&gt;&lt;br&gt;I have tried to use just directors but that doesn't result in the 
&lt;br&gt;correct casting when in Python (they come as plain Message classes, not 
&lt;br&gt;PyMessage), I'm guessing it's because the parameter to 
&lt;br&gt;Parent.sendMessage has a different memory address than the ultimate 
&lt;br&gt;parameter that is passed to PyChild.sendMessage, because I have seen 
&lt;br&gt;SWIG correctly cast to a Python extended type but then each Python 
&lt;br&gt;object was pointing to the same address.
&lt;br&gt;&lt;br&gt;Could someone please help me find the correct way to do this or suggest 
&lt;br&gt;an alternative interface.
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26579252&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/Casting-parameters-to-director-methods-tp26579252p26579252.html" />
</entry>

<entry>
	<id>tag:old.nabble.com,2006:post-26561373</id>
	<title>newbie boost shared_ptr</title>
	<published>2009-11-29T03:53:34Z</published>
	<updated>2009-11-29T03:53:34Z</updated>
	<author>
		<name>Marcel Breuers</name>
	</author>
	<content type="html">Dear readers,
&lt;br&gt;&lt;br&gt;I recently started using SWIG to make C++ code available under Matlab by
&lt;br&gt;generating a Java wrapper that can be called in Matlab.
&lt;br&gt;For basic functionality this works as expected, but boost shared
&lt;br&gt;pointers are giving me some trouble.
&lt;br&gt;&lt;br&gt;For me it is not clear how to dereference the smart pointer to obtain
&lt;br&gt;access to the underlying pointer or object.
&lt;br&gt;Also the smart pointer seems to loose it ability to free memory that is
&lt;br&gt;no longer referenced.
&lt;br&gt;&lt;br&gt;I was under the impression that boost_shared_ptr.i was going to solve
&lt;br&gt;all the memory management issues related the smart pointers and that
&lt;br&gt;this would also create methods to dereference a smart pointer.
&lt;br&gt;&lt;br&gt;Any help and links to examples are appreciated.
&lt;br&gt;&lt;br&gt;Thanks!
&lt;br&gt;&lt;br&gt;-----------------------------------
&lt;br&gt;&lt;br&gt;Below are samples from my code:
&lt;br&gt;&lt;br&gt;&lt;br&gt;I created a dummy C++ class Angle that contains a method to create a new
&lt;br&gt;Angle object:
&lt;br&gt;&lt;br&gt;Angle::PointerAngle Angle::createAngleSmrt()
&lt;br&gt;{
&lt;br&gt;&amp;nbsp;PointerAngle smartPtr( new Angle );
&lt;br&gt;&amp;nbsp;return smartPtr;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;In the header file I define:
&lt;br&gt;typedef boost::shared_ptr&amp;lt;Angle&amp;gt; PointerAngle;
&lt;br&gt;&lt;br&gt;In the interface file I include:
&lt;br&gt;&lt;br&gt;%{
&lt;br&gt;&amp;nbsp;#include &amp;quot;Angle.h&amp;quot;
&lt;br&gt;%}
&lt;br&gt;&lt;br&gt;%include &amp;quot;boost_shared_ptr.i&amp;quot;
&lt;br&gt;%template(SmartPtrAngle) boost::shared_ptr&amp;lt; Angle &amp;gt;;
&lt;br&gt;&lt;br&gt;SWIG_SHARED_PTR(SmartPtrAngle,SmartPtrAngle);
&lt;br&gt;&lt;br&gt;Angle::PointerAngle createAngleSmrt();
&lt;br&gt;&lt;br&gt;&amp;nbsp;
&lt;br&gt;&lt;br&gt;------------------------------------------------------------------------------
&lt;br&gt;Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
&lt;br&gt;trial. Simplify your report design, integration and deployment - and focus on 
&lt;br&gt;what you do best, core application coding. Discover what's new with
&lt;br&gt;Crystal Reports now. &amp;nbsp;&lt;a href=&quot;http://p.sf.net/sfu/bobj-july&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;http://p.sf.net/sfu/bobj-july&lt;/a&gt;&lt;br&gt;_______________________________________________
&lt;br&gt;Swig-user mailing list
&lt;br&gt;&lt;a href=&quot;http://old.nabble.com/user/SendEmail.jtp?type=post&amp;post=26561373&amp;i=0&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;Swig-user@...&lt;/a&gt;
&lt;br&gt;&lt;a href=&quot;https://lists.sourceforge.net/lists/listinfo/swig-user&quot; target=&quot;_top&quot; rel=&quot;nofollow&quot;&gt;https://lists.sourceforge.net/lists/listinfo/swig-user&lt;/a&gt;&lt;br&gt;</content>
	<link rel="alternate" type="text/html" href="http://old.nabble.com/newbie-boost-shared_ptr-tp26561373p26561373.html" />
</entry>

</feed>
