<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.7652.24">
<TITLE>RE: [C++-sig] Embedding Python - data exchange &amp;&amp; no Boost</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Meanwhile, I have made up another possible approach to my problem.<BR>
Is there a attribute in the PyObject structure storing the name of the PyObject in the interpreter.<BR>
<BR>
If we have a variable in the Python Interpreter for instance:<BR>
<BR>
a = 1<BR>
<BR>
is there a name attribute in the PyObject representation stating<BR>
<BR>
(object.name == &quot;a&quot;) == true&nbsp;&nbsp;&nbsp; ?<BR>
<BR>
Could it possible to set such a name of a custom object and load it into the highest level of the python namespace?<BR>
<BR>
C example code:<BR>
<BR>
PyObject a = PyObj_FromLong(1);<BR>
a.name = &quot;a&quot;;<BR>
PyObj_LoadToIntepreter(a);<BR>
<BR>
So that a is available in the embedded python terminal afterwards?<BR>
<BR>
Best,<BR>
Thomas<BR>
&nbsp;<BR>
<BR>
-----Original Message-----<BR>
From: c++-sig-bounces@python.org on behalf of Thomas Hrabe<BR>
Sent: Wed 5/7/2008 1:48 PM<BR>
To: c++-sig@python.org<BR>
Subject: [C++-sig] Embedding Python - data exchange &amp;&amp; no Boost<BR>
<BR>
Hi all,<BR>
<BR>
I am writing an embedded python application in C/C++ with the following features:<BR>
<BR>
1. The user is able to execute python commands (works fine with PyRun_SimpleString)<BR>
2. I want the user to be able to load C objects from C into the current python interpreter, so that the user is able to manipulate the python copies with python tools -&gt; no go.<BR>
<BR>
I first wrote a function within a module which is loaded after Py_Initialize(), returning an PyObject.<BR>
I thought it might be possible to share a static variable between the module and the C application, where the module function could access the static variable, convert it to a PyObject and provide it to the interpreter.<BR>
<BR>
Think of this procedure in terms of python calls:<BR>
<BR>
import PA; //imports the module in the embedded interpreter<BR>
a = PA.set() ; //access the static object, create a PyObject, return it as a<BR>
<BR>
The later python calls should be able to manipulate a and then return it back to C by setting the static object again like<BR>
PA.get(a) ; //or similar<BR>
<BR>
However, it turned out that the static object in the interpreter differs from the one in the C program -&gt; other adresses in memory, so that I can not share the memory space.<BR>
Does anybody know of a solution for such a problem? Any tips?<BR>
<BR>
I do not use Boost because the program is supposed to process numpy's nd-arrays and, furthermore, must remain independent of additional libraries such as Boost. I'd use it otherwise...<BR>
<BR>
Thank you in advance for your help,<BR>
Thomas<BR>
<BR>
</FONT>
</P>

</BODY>
</HTML>