[C++-sig] Use alternative launcher for bpl-test rule

2013-09-24 Thread John Reid
Hi,

I'm having some problems asking boost.build to start the debugger or
valgrind when it runs some of my python extension bpl-test rules. I saw
in the boost.build code some comments that suggests it hijacks the
testing.launcher feature which I thought would be the way to do this.
Does anyone know if it is possible and what I should be doing?

Thanks,
John.

___
Cplusplus-sig mailing list
Cplusplus-sig@python.org
https://mail.python.org/mailman/listinfo/cplusplus-sig


Re: [C++-sig] Boost python simple interfacing

2013-09-24 Thread Giuseppe Corbelli

On 21/09/2013 16:52, Kassiopi Kassiopi2 wrote:

Hi,

I want to call a c++ function from an embedded python shell, using boost
python. All the examples I've seen online describe how to expose a whole class
or some functions, but all cases refer to *standalone* parts of code.
My case is different though. The function I want to expose is not standalone,
and has a dependency:

--- start of documentModule.cpp 
#include 
#include 

void newDocument( bool makeActive ) {
  // depends on commandManager here
 GetCommandMananager()->submitCommand( new newDocumentCmd( makeActive ) );
}

BOOST_PYTHON(documentModule) {
 using namespace boost::python;
 def( "newDocument", myCadLib::pythonCommands::newDocument,
arg("makeActive") );
}
--- end of documentModule.cpp 

In reality the situation is more complicated and there are more dependencies
than the one mentioned above.
After generating a .so file with distutils, when I start my application and I
attempt to load the module (.so file) in the embedded python shell I get an
undefined symbols error complaining about the commandManager class.
Of course this is a reasonable request from python and I understand that.
However, I don't really care to generate a standalone python module per se. I
just want it to work in my application's embedded python shell. Additionally,
it wouldn't be meaningful to have the commandManager class exposed as well,
since this is part of my applications internal structure.


Seems to me you want both extending and embedding. Never embedded an 
interpreter in a C++ app, so I'm not of much use here.
The two jobs should be fairly independent. Producing the .so to extend the 
interpreter needs to link the commandManager library.
Your extension module needs to access the Command Manager, so make sure it has 
already been initialized before the module is loaded, else the 
GetCommandManager() may return NULL.


--
Giuseppe Corbelli
WASP Software Engineer, Copan Italia S.p.A
Phone: +390303666318  Fax: +390302659932
E-mail: giuseppe.corbe...@copanitalia.com
___
Cplusplus-sig mailing list
Cplusplus-sig@python.org
https://mail.python.org/mailman/listinfo/cplusplus-sig


Re: [C++-sig] Boost python simple interfacing

2013-09-24 Thread Dave Wampler
What you're trying to do is fine.  You only need to expose the interface
that python is accessing.  You do need to link in the library that contains
the symbols for the commandManager class however.

On Sep 22, 2013, at 7:48 PM, Kassiopi Kassiopi2  wrote:

Hi,

I want to call a c++ function from an embedded python shell, using boost
python. All the examples I've seen online describe how to expose a whole
class or some functions, but all cases refer to *standalone* parts of code.
My case is different though. The function I want to expose is not
standalone, and has a dependency:

--- start of documentModule.cpp 
#include 
#include 

void newDocument( bool makeActive ) {
 // depends on commandManager here
GetCommandMananager()->submitCommand( new newDocumentCmd( makeActive )
);
}

BOOST_PYTHON(documentModule) {
using namespace boost::python;
def( "newDocument", myCadLib::pythonCommands::newDocument,
arg("makeActive") );
}
--- end of documentModule.cpp 

In reality the situation is more complicated and there are more
dependencies than the one mentioned above.
After generating a .so file with distutils, when I start my application and
I attempt to load the module (.so file) in the embedded python shell I get
an undefined symbols error complaining about the commandManager class.
Of course this is a reasonable request from python and I understand that.
However, I don't really care to generate a standalone python module per se.
I just want it to work in my application's embedded python shell.
Additionally, it wouldn't be meaningful to have the commandManager class
exposed as well, since this is part of my applications internal structure.
Is what I am asking possible with boost python? In the past I have used
SWIG for that, and it generated some additional .cpp and .h files, as well
as a .py module. I can live with generating additional source and header
files if it is an issue for boost python and I don't care to have a
standalone python module, as long as it works inside my application.
I couldn't find anything online as well. All examples I could find where
similar to the boost python tutorial, with standalone parts of code.

Thank you in advance.



___
Cplusplus-sig mailing list
Cplusplus-sig@python.org
https://mail.python.org/mailman/listinfo/cplusplus-sig
___
Cplusplus-sig mailing list
Cplusplus-sig@python.org
https://mail.python.org/mailman/listinfo/cplusplus-sig

Re: [C++-sig] Boost python simple interfacing

2013-09-24 Thread Raghvendra Jain
Well, I have embedded an interpreter inside  C++ code, if your question is
related to that, please write back. May be I can help you with that.
cheers,
Raghav


On Tue, Sep 24, 2013 at 4:33 PM, Giuseppe Corbelli <
giuseppe.corbe...@copanitalia.com> wrote:

> On 21/09/2013 16:52, Kassiopi Kassiopi2 wrote:
>
>> Hi,
>>
>> I want to call a c++ function from an embedded python shell, using boost
>> python. All the examples I've seen online describe how to expose a whole
>> class
>> or some functions, but all cases refer to *standalone* parts of code.
>>
>> My case is different though. The function I want to expose is not
>> standalone,
>> and has a dependency:
>>
>> --- start of documentModule.cpp 
>> #include 
>> #include 
>>
>> void newDocument( bool makeActive ) {
>>   // depends on commandManager here
>>  GetCommandMananager()->**submitCommand( new newDocumentCmd(
>> makeActive ) );
>> }
>>
>> BOOST_PYTHON(documentModule) {
>>  using namespace boost::python;
>>  def( "newDocument", myCadLib::pythonCommands::**newDocument,
>> arg("makeActive") );
>> }
>> --- end of documentModule.cpp 
>>
>> In reality the situation is more complicated and there are more
>> dependencies
>> than the one mentioned above.
>> After generating a .so file with distutils, when I start my application
>> and I
>> attempt to load the module (.so file) in the embedded python shell I get
>> an
>> undefined symbols error complaining about the commandManager class.
>> Of course this is a reasonable request from python and I understand that.
>> However, I don't really care to generate a standalone python module per
>> se. I
>> just want it to work in my application's embedded python shell.
>> Additionally,
>> it wouldn't be meaningful to have the commandManager class exposed as
>> well,
>> since this is part of my applications internal structure.
>>
>
> Seems to me you want both extending and embedding. Never embedded an
> interpreter in a C++ app, so I'm not of much use here.
> The two jobs should be fairly independent. Producing the .so to extend the
> interpreter needs to link the commandManager library.
> Your extension module needs to access the Command Manager, so make sure it
> has already been initialized before the module is loaded, else the
> GetCommandManager() may return NULL.
>
> --
> Giuseppe Corbelli
> WASP Software Engineer, Copan Italia S.p.A
> Phone: +390303666318  Fax: +390302659932
> E-mail: giuseppe.corbelli@copanitalia.**com
>
> __**_
> Cplusplus-sig mailing list
> Cplusplus-sig@python.org
> https://mail.python.org/**mailman/listinfo/cplusplus-sig
>
___
Cplusplus-sig mailing list
Cplusplus-sig@python.org
https://mail.python.org/mailman/listinfo/cplusplus-sig