discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] Instantiating a C++ object derived from `boost::e


From: Frank Restuccia
Subject: Re: [Discuss-gnuradio] Instantiating a C++ object derived from `boost::enable_shared_from_this' from Python
Date: Mon, 18 Dec 2017 09:04:12 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0

HI Michael,

I have inserted the following code in my common_modules_swig.i file:

/******/

%template(constellation_sptr) boost::shared_ptr<gr::common_modules::covert_constellation>;

%template(constellation_cbpsk_sptr) boost::shared_ptr<gr::common_modules::constellation_cbpsk>;
%pythoncode %{
constellation_cbpsk_sptr.__repr__ = lambda self: "<constellation CBPSK>"
constellation_cbpsk = constellation_cbpsk.make;
%}

%template(constellation_cqpsk_sptr) boost::shared_ptr<gr::common_modules::constellation_cqpsk>;
%pythoncode %{
constellation_cqpsk_sptr.__repr__ = lambda self: "<constellation CQPSK>"
constellation_cqpsk = constellation_cqpsk.make;
%}

/*************/

However, I am still getting the following error:

Traceback (most recent call last):
  File "./custom_ofdm_system_covert.py", line 12, in <module>
    from custom_ofdm_txer_covert import custom_ofdm_txer_covert
  File "/home/frank/Documents/reconfigurable_ofdm/gr-custom_tx_ofdm/python/custom_ofdm_txer_covert.py", line 14, in <module>
    import common_modules_swig as common_modules
  File "/home/frank/Documents/reconfigurable_ofdm/gr-common_modules/build/swig/common_modules_swig.py", line 258, in <module>
    constellation_cbpsk = constellation_cbpsk.make;
NameError: name 'constellation_cbpsk' is not defined

Any ideas? This is my SWIG file now:

/*********/

/* -*- c++ -*- */

#define COMMON_MODULES_API

%include "gnuradio.i"            // the common stuff

//load generated python docstrings
%include "common_modules_swig_doc.i"

%{
#include "common_modules/fft.h"
#include "common_modules/packet_header_default.h"
#include "common_modules/packet_header_ofdm.h"
#include "common_modules/check_make_crc32.h"
#include "common_modules/repack_bits.h"
#include "common_modules/tag_debugger.h"
#include "common_modules/covert_constellation.h"
%}

%template(constellation_sptr) boost::shared_ptr<gr::common_modules::covert_constellation>;

%template(constellation_cbpsk_sptr) boost::shared_ptr<gr::common_modules::constellation_cbpsk>;
%pythoncode %{
constellation_cbpsk_sptr.__repr__ = lambda self: "<constellation CBPSK>"
constellation_cbpsk = constellation_cbpsk.make;
%}

%template(constellation_cqpsk_sptr) boost::shared_ptr<gr::common_modules::constellation_cqpsk>;
%pythoncode %{
constellation_cqpsk_sptr.__repr__ = lambda self: "<constellation CQPSK>"
constellation_cqpsk = constellation_cqpsk.make;
%}



%include "common_modules/fft.h"
GR_SWIG_BLOCK_MAGIC2(common_modules, fft);
%include "common_modules/packet_header_default.h"
%include "common_modules/packet_header_ofdm.h"
%include "common_modules/check_make_crc32.h"
GR_SWIG_BLOCK_MAGIC2(common_modules, check_make_crc32);
%include "common_modules/repack_bits.h"
GR_SWIG_BLOCK_MAGIC2(common_modules, repack_bits);
%include "common_modules/tag_debugger.h"
GR_SWIG_BLOCK_MAGIC2(common_modules, tag_debugger);
%include "common_modules/covert_constellation.h"



/*********/


On 12/18/2017 08:54 AM, Michael Dickens wrote:
Hi Frank - Yes this is a SWIG issue. You need the code as found here: <
https://github.com/gnuradio/gnuradio/blob/master/gr-digital/swig/constellation.i
. There is a specific line for the base class, then a pattern used for
any inheriting class. Should be self-obvious how to tweak them for your
specific needs. Hope this is useful! - MLD

On Mon, Dec 18, 2017, at 07:59 AM, Frank Restuccia wrote:
I am trying to instantiate a C++ object from Python as follows.
[snip]
/************************/

I am instantiating the module in the Python file as follows:

          a = common_modules.constellation_cqpsk()

This is what I am getting:

    File "./custom_ofdm_system_covert.py", line 12, in <module>
      from custom_ofdm_txer_covert import custom_ofdm_txer_covert
    File
"/home/frank/Documents/reconfigurable_ofdm/gr-custom_tx_ofdm/python/custom_ofdm_txer_covert.py",
line 14, in <module>
      import common_modules_swig as common_modules
    File
"/home/frank/Documents/reconfigurable_ofdm/gr-common_modules/build/swig/common_modules_swig.py",
line 238, in <module>
      constellation_cbpsk = constellation_cbpsk.make;
NameError: name 'constellation_cbpsk' is not defined

However, I am able to use constellation_cbpsk perfectly from C++. So I
am guessing it's a SWIG problem.
Any ideas?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]