SWIG Interface files :
Once we have created our .cc and .h files its the time to create the SWIG (.i) file, so that our new block can be called form python
SWIG is used as a necessary "glue ", to allow python and C++ to "stick" together in a complete GNU Radio application
The purpose of the .i file is to tell SWIG how it should go about creating this glue
A .i file is very similar to a .cc or .h file where several functions are declared
However in .i file only those functions are declared which we want to access from python
Its typically quite short in length
lets see an example of an .i file gr_multiply_const_ff.i
GR_SWIG_BLOCK_MAGIC(gr,multiply_const_ff)
gr_multiply_const_ff_sptr
gr_make_multiply_const_ff (float k, size_t vlen=1);
class gr_multiply_const_ff : public gr_sync_block
{
public:
float k() const;
void set_k(float k);
};
Lets notice some important facts ,
we have invoked GR_SWIG_BLOCK_MAGIC with parameters "gr" and "multiply_const_ff" and it has direct relevance to how we invoke the block from python
Practically this means that in python, when we seek to invoke our blocks, we would first use the command
import gr
and when we wish to instantiate our block, we would use the python command
block = gr.multiply_const_ff()
In summary, from within python, gr is a package multiply_const_ff is a function within this package
The way which we have created the .i files specifies the particular names that python ascribes to the package (gr) and function (multiply_const_ff)
Reference : http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA556803
Once we have created our .cc and .h files its the time to create the SWIG (.i) file, so that our new block can be called form python
SWIG is used as a necessary "glue ", to allow python and C++ to "stick" together in a complete GNU Radio application
The purpose of the .i file is to tell SWIG how it should go about creating this glue
A .i file is very similar to a .cc or .h file where several functions are declared
However in .i file only those functions are declared which we want to access from python
Its typically quite short in length
lets see an example of an .i file gr_multiply_const_ff.i
GR_SWIG_BLOCK_MAGIC(gr,multiply_const_ff)
gr_multiply_const_ff_sptr
gr_make_multiply_const_ff (float k, size_t vlen=1);
class gr_multiply_const_ff : public gr_sync_block
{
public:
float k() const;
void set_k(float k);
};
Lets notice some important facts ,
we have invoked GR_SWIG_BLOCK_MAGIC with parameters "gr" and "multiply_const_ff" and it has direct relevance to how we invoke the block from python
Practically this means that in python, when we seek to invoke our blocks, we would first use the command
import gr
and when we wish to instantiate our block, we would use the python command
block = gr.multiply_const_ff()
In summary, from within python, gr is a package multiply_const_ff is a function within this package
The way which we have created the .i files specifies the particular names that python ascribes to the package (gr) and function (multiply_const_ff)
Reference : http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA556803
No comments:
Post a Comment