commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] [gnuradio] 07/28: basic add/mult const, needs test


From: git
Subject: [Commit-gnuradio] [gnuradio] 07/28: basic add/mult const, needs test
Date: Mon, 15 Aug 2016 00:47:05 +0000 (UTC)

This is an automated email from the git hooks/post-receive script.

nwest pushed a commit to annotated tag gr_basic_work
in repository gnuradio.

commit 99fdd38e38e402dcc5accf3abc53d46a7189bbc1
Author: Josh Blum <address@hidden>
Date:   Wed Nov 9 06:44:48 2011 -0800

    basic add/mult const, needs test
---
 gr-basic/grc/basic_add.xml                         |   2 +-
 gr-basic/grc/basic_add_const.xml                   |  55 +++++++++++
 gr-basic/grc/basic_block_tree.xml                  |   2 +
 gr-basic/grc/basic_divide.xml                      |   2 +-
 gr-basic/grc/basic_multiply.xml                    |   2 +-
 gr-basic/grc/basic_multiply_const.xml              |  55 +++++++++++
 gr-basic/grc/basic_subtract.xml                    |   2 +-
 gr-basic/include/CMakeLists.txt                    |   3 +
 gr-basic/include/gr_basic_add.h                    |  18 +---
 .../{gr_basic_multiply.h => gr_basic_add_const.h}  |  45 ++++-----
 gr-basic/include/gr_basic_divide.h                 |  22 +----
 gr-basic/include/gr_basic_multiply.h               |  22 +----
 ..._basic_multiply.h => gr_basic_multiply_const.h} |  45 ++++-----
 .../{gr_basic_divide.h => gr_basic_op_types.h}     |  47 ++++-----
 gr-basic/include/gr_basic_subtract.h               |  18 +---
 gr-basic/lib/CMakeLists.txt                        |   2 +
 gr-basic/lib/gr_basic_add.cc                       |  26 ++---
 gr-basic/lib/gr_basic_add_const.cc                 | 110 +++++++++++++++++++++
 gr-basic/lib/gr_basic_divide.cc                    |  26 ++---
 gr-basic/lib/gr_basic_multiply.cc                  |  26 ++---
 gr-basic/lib/gr_basic_multiply_const.cc            | 110 +++++++++++++++++++++
 gr-basic/lib/gr_basic_subtract.cc                  |  26 ++---
 gr-basic/swig/basic_ops.i                          |  13 +++
 23 files changed, 474 insertions(+), 205 deletions(-)

diff --git a/gr-basic/grc/basic_add.xml b/gr-basic/grc/basic_add.xml
index d02bc1b..a38799b 100644
--- a/gr-basic/grc/basic_add.xml
+++ b/gr-basic/grc/basic_add.xml
@@ -9,7 +9,7 @@
        <name>Add</name>
        <key>basic_add</key>
        <import>from gnuradio import basic</import>
-       <make>basic.add(basic.ADD_$($type().upper()), $vlen)</make>
+       <make>basic.add(basic.OP_$($type().upper()), $vlen)</make>
        <param>
                <name>IO Type</name>
                <key>type</key>
diff --git a/gr-basic/grc/basic_add_const.xml b/gr-basic/grc/basic_add_const.xml
new file mode 100644
index 0000000..92358fd
--- /dev/null
+++ b/gr-basic/grc/basic_add_const.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Add Const Block
+###################################################
+ -->
+<block>
+    <name>Add Const</name>
+    <key>basic_add_const</key>
+    <import>from gnuradio import basic</import>
+    <make>basic.add_const(basic.OP_$($type().upper()), $vlen)
+self.$(id).set_value($value)</make>
+    <callback>set_value($value)</callback>
+    <param>
+        <name>IO Type</name>
+        <key>type</key>
+        <value>fc32</value>
+        <type>enum</type>
+        <option><name>FC64</name><key>fc64</key></option>
+        <option><name>F64</name><key>f64</key></option>
+        <option><name>FC32</name><key>fc32</key></option>
+        <option><name>F32</name><key>f32</key></option>
+        <option><name>SC64</name><key>sc64</key></option>
+        <option><name>S64</name><key>s64</key></option>
+        <option><name>SC32</name><key>sc32</key></option>
+        <option><name>S32</name><key>s32</key></option>
+        <option><name>SC16</name><key>sc16</key></option>
+        <option><name>S16</name><key>s16</key></option>
+        <option><name>SC8</name><key>sc8</key></option>
+        <option><name>S8</name><key>s8</key></option>
+    </param>
+    <param>
+        <name>Vec Length</name>
+        <key>vlen</key>
+        <value>1</value>
+        <type>int</type>
+    </param>
+    <param>
+        <name>Value</name>
+        <key>value</key>
+        <value>0</value>
+        <type>$($vlen() == 1 and 'complex' or 'complex_vector')</type>
+    </param>
+    <check>$vlen &gt; 0</check>
+    <sink>
+        <name>in</name>
+        <type>$type</type>
+        <vlen>$vlen</vlen>
+    </sink>
+    <source>
+        <name>out</name>
+        <type>$type</type>
+        <vlen>$vlen</vlen>
+    </source>
+</block>
diff --git a/gr-basic/grc/basic_block_tree.xml 
b/gr-basic/grc/basic_block_tree.xml
index 1f41958..3d5f83d 100644
--- a/gr-basic/grc/basic_block_tree.xml
+++ b/gr-basic/grc/basic_block_tree.xml
@@ -31,8 +31,10 @@
     <cat>
         <name>Basic</name>
         <block>basic_add</block>
+        <block>basic_add_const</block>
         <block>basic_subtract</block>
         <block>basic_multiply</block>
+        <block>basic_multiply_const</block>
         <block>basic_divide</block>
     </cat>
 </cat>
diff --git a/gr-basic/grc/basic_divide.xml b/gr-basic/grc/basic_divide.xml
index ac41336..9189d3d 100644
--- a/gr-basic/grc/basic_divide.xml
+++ b/gr-basic/grc/basic_divide.xml
@@ -9,7 +9,7 @@
        <name>Divide</name>
        <key>basic_divide</key>
        <import>from gnuradio import basic</import>
-       <make>basic.divide(basic.DIVIDE_$($type().upper()), $vlen)</make>
+       <make>basic.divide(basic.OP_$($type().upper()), $vlen)</make>
        <param>
                <name>IO Type</name>
                <key>type</key>
diff --git a/gr-basic/grc/basic_multiply.xml b/gr-basic/grc/basic_multiply.xml
index e902a39..2874a0f 100644
--- a/gr-basic/grc/basic_multiply.xml
+++ b/gr-basic/grc/basic_multiply.xml
@@ -9,7 +9,7 @@
        <name>Multiply</name>
        <key>basic_multiply</key>
        <import>from gnuradio import basic</import>
-       <make>basic.multiply(basic.MULTIPLY_$($type().upper()), $vlen)</make>
+       <make>basic.multiply(basic.OP_$($type().upper()), $vlen)</make>
        <param>
                <name>IO Type</name>
                <key>type</key>
diff --git a/gr-basic/grc/basic_multiply_const.xml 
b/gr-basic/grc/basic_multiply_const.xml
new file mode 100644
index 0000000..43e35ed
--- /dev/null
+++ b/gr-basic/grc/basic_multiply_const.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!--
+###################################################
+##Multiply Const Block
+###################################################
+ -->
+<block>
+    <name>Multiply Const</name>
+    <key>basic_multiply_const</key>
+    <import>from gnuradio import basic</import>
+    <make>basic.multiply_const(basic.OP_$($type().upper()), $vlen)
+self.$(id).set_value($value)</make>
+    <callback>set_value($value)</callback>
+    <param>
+        <name>IO Type</name>
+        <key>type</key>
+        <value>fc32</value>
+        <type>enum</type>
+        <option><name>FC64</name><key>fc64</key></option>
+        <option><name>F64</name><key>f64</key></option>
+        <option><name>FC32</name><key>fc32</key></option>
+        <option><name>F32</name><key>f32</key></option>
+        <option><name>SC64</name><key>sc64</key></option>
+        <option><name>S64</name><key>s64</key></option>
+        <option><name>SC32</name><key>sc32</key></option>
+        <option><name>S32</name><key>s32</key></option>
+        <option><name>SC16</name><key>sc16</key></option>
+        <option><name>S16</name><key>s16</key></option>
+        <option><name>SC8</name><key>sc8</key></option>
+        <option><name>S8</name><key>s8</key></option>
+    </param>
+    <param>
+        <name>Vec Length</name>
+        <key>vlen</key>
+        <value>1</value>
+        <type>int</type>
+    </param>
+    <param>
+        <name>Value</name>
+        <key>value</key>
+        <value>0</value>
+        <type>$($vlen() == 1 and 'complex' or 'complex_vector')</type>
+    </param>
+    <check>$vlen &gt; 0</check>
+    <sink>
+        <name>in</name>
+        <type>$type</type>
+        <vlen>$vlen</vlen>
+    </sink>
+    <source>
+        <name>out</name>
+        <type>$type</type>
+        <vlen>$vlen</vlen>
+    </source>
+</block>
diff --git a/gr-basic/grc/basic_subtract.xml b/gr-basic/grc/basic_subtract.xml
index 733713c..8f90247 100644
--- a/gr-basic/grc/basic_subtract.xml
+++ b/gr-basic/grc/basic_subtract.xml
@@ -9,7 +9,7 @@
        <name>Subtract</name>
        <key>basic_subtract</key>
        <import>from gnuradio import basic</import>
-       <make>basic.subtract(basic.SUBTRACT_$($type().upper()), $vlen)</make>
+       <make>basic.subtract(basic.OP_$($type().upper()), $vlen)</make>
        <param>
                <name>IO Type</name>
                <key>type</key>
diff --git a/gr-basic/include/CMakeLists.txt b/gr-basic/include/CMakeLists.txt
index beff7cb..cc503ed 100644
--- a/gr-basic/include/CMakeLists.txt
+++ b/gr-basic/include/CMakeLists.txt
@@ -23,8 +23,11 @@
 install(FILES
     gr_basic_api.h
     gr_basic_add.h
+    gr_basic_add_const.h
     gr_basic_divide.h
     gr_basic_multiply.h
+    gr_basic_multiply_const.h
+    gr_basic_op_types.h
     gr_basic_subtract.h
     DESTINATION ${GR_INCLUDE_DIR}/gnuradio
     COMPONENT "basic_devel"
diff --git a/gr-basic/include/gr_basic_add.h b/gr-basic/include/gr_basic_add.h
index a9ef6a6..f9007ff 100644
--- a/gr-basic/include/gr_basic_add.h
+++ b/gr-basic/include/gr_basic_add.h
@@ -23,21 +23,7 @@
 
 #include <gr_basic_api.h>
 #include <gr_sync_block.h>
-
-enum add_type{
-    ADD_FC64,
-    ADD_F64,
-    ADD_FC32,
-    ADD_F32,
-    ADD_SC64,
-    ADD_S64,
-    ADD_SC32,
-    ADD_S32,
-    ADD_SC16,
-    ADD_S16,
-    ADD_SC8,
-    ADD_S8,
-};
+#include <gr_basic_op_types.h>
 
 class GR_BASIC_API basic_add : virtual public gr_sync_block{
 public:
@@ -45,7 +31,7 @@ public:
 };
 
 GR_BASIC_API basic_add::sptr basic_make_add(
-    add_type type, const size_t vlen = 1
+    op_type type, const size_t vlen = 1
 );
 
 #endif /* INCLUDED_GR_BASIC_ADD_H */
diff --git a/gr-basic/include/gr_basic_multiply.h 
b/gr-basic/include/gr_basic_add_const.h
similarity index 55%
copy from gr-basic/include/gr_basic_multiply.h
copy to gr-basic/include/gr_basic_add_const.h
index 54e4d6d..0cd0263 100644
--- a/gr-basic/include/gr_basic_multiply.h
+++ b/gr-basic/include/gr_basic_add_const.h
@@ -18,38 +18,33 @@
  * the Free Software Foundation, Inc., 51 Franklin Street,
  * Boston, MA 02110-1301, USA.
  */
-#ifndef INCLUDED_GR_BASIC_MULTIPLY_H
-#define INCLUDED_GR_BASIC_MULTIPLY_H
+#ifndef INCLUDED_GR_BASIC_ADD_CONST_H
+#define INCLUDED_GR_BASIC_ADD_CONST_H
 
 #include <gr_basic_api.h>
 #include <gr_sync_block.h>
+#include <gr_basic_op_types.h>
+#include <complex>
 
-//TODO may support non-homogeneous IO types,
-//MULTIPLY_S8_S16 (int8 input, int16 output)
-//so this will easily fit into the framework.
+class GR_BASIC_API basic_add_const : virtual public gr_sync_block{
+public:
+    typedef boost::shared_ptr<basic_add_const> sptr;
 
-enum multiply_type{
-    MULTIPLY_FC64,
-    MULTIPLY_F64,
-    MULTIPLY_FC32,
-    MULTIPLY_F32,
-    MULTIPLY_SC64,
-    MULTIPLY_S64,
-    MULTIPLY_SC32,
-    MULTIPLY_S32,
-    MULTIPLY_SC16,
-    MULTIPLY_S16,
-    MULTIPLY_SC8,
-    MULTIPLY_S8,
-};
+    /*!
+     * Set the value to be added.
+     * This is a double vector to cover all possible types.
+     */
+    virtual void set_value(const std::vector<double> &val) = 0;
+
+    //! Convenience operator to set when vlen == 1
+    void set_value(const double val){
+        return this->set_value(std::vector<double>(1, val));
+    }
 
-class GR_BASIC_API basic_multiply : virtual public gr_sync_block{
-public:
-    typedef boost::shared_ptr<basic_multiply> sptr;
 };
 
-GR_BASIC_API basic_multiply::sptr basic_make_multiply(
-    multiply_type type, const size_t vlen = 1
+GR_BASIC_API basic_add_const::sptr basic_make_add_const(
+    op_type type, const size_t vlen = 1
 );
 
-#endif /* INCLUDED_GR_BASIC_MULTIPLY_H */
+#endif /* INCLUDED_GR_BASIC_ADD_CONST_H */
diff --git a/gr-basic/include/gr_basic_divide.h 
b/gr-basic/include/gr_basic_divide.h
index ed00df5..100271a 100644
--- a/gr-basic/include/gr_basic_divide.h
+++ b/gr-basic/include/gr_basic_divide.h
@@ -23,25 +23,7 @@
 
 #include <gr_basic_api.h>
 #include <gr_sync_block.h>
-
-//TODO may support non-homogeneous IO types,
-//DIVIDE_S16_S8 (int16 input, int8 output)
-//so this will easily fit into the framework.
-
-enum divide_type{
-    DIVIDE_FC64,
-    DIVIDE_F64,
-    DIVIDE_FC32,
-    DIVIDE_F32,
-    DIVIDE_SC64,
-    DIVIDE_S64,
-    DIVIDE_SC32,
-    DIVIDE_S32,
-    DIVIDE_SC16,
-    DIVIDE_S16,
-    DIVIDE_SC8,
-    DIVIDE_S8,
-};
+#include <gr_basic_op_types.h>
 
 class GR_BASIC_API basic_divide : virtual public gr_sync_block{
 public:
@@ -49,7 +31,7 @@ public:
 };
 
 GR_BASIC_API basic_divide::sptr basic_make_divide(
-    divide_type type, const size_t vlen = 1
+    op_type type, const size_t vlen = 1
 );
 
 #endif /* INCLUDED_GR_BASIC_DIVIDE_H */
diff --git a/gr-basic/include/gr_basic_multiply.h 
b/gr-basic/include/gr_basic_multiply.h
index 54e4d6d..ceb0e80 100644
--- a/gr-basic/include/gr_basic_multiply.h
+++ b/gr-basic/include/gr_basic_multiply.h
@@ -23,25 +23,7 @@
 
 #include <gr_basic_api.h>
 #include <gr_sync_block.h>
-
-//TODO may support non-homogeneous IO types,
-//MULTIPLY_S8_S16 (int8 input, int16 output)
-//so this will easily fit into the framework.
-
-enum multiply_type{
-    MULTIPLY_FC64,
-    MULTIPLY_F64,
-    MULTIPLY_FC32,
-    MULTIPLY_F32,
-    MULTIPLY_SC64,
-    MULTIPLY_S64,
-    MULTIPLY_SC32,
-    MULTIPLY_S32,
-    MULTIPLY_SC16,
-    MULTIPLY_S16,
-    MULTIPLY_SC8,
-    MULTIPLY_S8,
-};
+#include <gr_basic_op_types.h>
 
 class GR_BASIC_API basic_multiply : virtual public gr_sync_block{
 public:
@@ -49,7 +31,7 @@ public:
 };
 
 GR_BASIC_API basic_multiply::sptr basic_make_multiply(
-    multiply_type type, const size_t vlen = 1
+    op_type type, const size_t vlen = 1
 );
 
 #endif /* INCLUDED_GR_BASIC_MULTIPLY_H */
diff --git a/gr-basic/include/gr_basic_multiply.h 
b/gr-basic/include/gr_basic_multiply_const.h
similarity index 53%
copy from gr-basic/include/gr_basic_multiply.h
copy to gr-basic/include/gr_basic_multiply_const.h
index 54e4d6d..10fe6f2 100644
--- a/gr-basic/include/gr_basic_multiply.h
+++ b/gr-basic/include/gr_basic_multiply_const.h
@@ -18,38 +18,33 @@
  * the Free Software Foundation, Inc., 51 Franklin Street,
  * Boston, MA 02110-1301, USA.
  */
-#ifndef INCLUDED_GR_BASIC_MULTIPLY_H
-#define INCLUDED_GR_BASIC_MULTIPLY_H
+#ifndef INCLUDED_GR_BASIC_MULTIPLY_CONST_H
+#define INCLUDED_GR_BASIC_MULTIPLY_CONST_H
 
 #include <gr_basic_api.h>
 #include <gr_sync_block.h>
+#include <gr_basic_op_types.h>
+#include <complex>
 
-//TODO may support non-homogeneous IO types,
-//MULTIPLY_S8_S16 (int8 input, int16 output)
-//so this will easily fit into the framework.
+class GR_BASIC_API basic_multiply_const : virtual public gr_sync_block{
+public:
+    typedef boost::shared_ptr<basic_multiply_const> sptr;
 
-enum multiply_type{
-    MULTIPLY_FC64,
-    MULTIPLY_F64,
-    MULTIPLY_FC32,
-    MULTIPLY_F32,
-    MULTIPLY_SC64,
-    MULTIPLY_S64,
-    MULTIPLY_SC32,
-    MULTIPLY_S32,
-    MULTIPLY_SC16,
-    MULTIPLY_S16,
-    MULTIPLY_SC8,
-    MULTIPLY_S8,
-};
+    /*!
+     * Set the value to be multiplied.
+     * This is a double vector to cover all possible types.
+     */
+    virtual void set_value(const std::vector<double> &val) = 0;
+
+    //! Convenience operator to set when vlen == 1
+    void set_value(const double val){
+        return this->set_value(std::vector<double>(1, val));
+    }
 
-class GR_BASIC_API basic_multiply : virtual public gr_sync_block{
-public:
-    typedef boost::shared_ptr<basic_multiply> sptr;
 };
 
-GR_BASIC_API basic_multiply::sptr basic_make_multiply(
-    multiply_type type, const size_t vlen = 1
+GR_BASIC_API basic_multiply_const::sptr basic_make_multiply_const(
+    op_type type, const size_t vlen = 1
 );
 
-#endif /* INCLUDED_GR_BASIC_MULTIPLY_H */
+#endif /* INCLUDED_GR_BASIC_MULTIPLY_CONST_H */
diff --git a/gr-basic/include/gr_basic_divide.h 
b/gr-basic/include/gr_basic_op_types.h
similarity index 61%
copy from gr-basic/include/gr_basic_divide.h
copy to gr-basic/include/gr_basic_op_types.h
index ed00df5..0645dde 100644
--- a/gr-basic/include/gr_basic_divide.h
+++ b/gr-basic/include/gr_basic_op_types.h
@@ -18,38 +18,31 @@
  * the Free Software Foundation, Inc., 51 Franklin Street,
  * Boston, MA 02110-1301, USA.
  */
-#ifndef INCLUDED_GR_BASIC_DIVIDE_H
-#define INCLUDED_GR_BASIC_DIVIDE_H
-
-#include <gr_basic_api.h>
-#include <gr_sync_block.h>
+#ifndef INCLUDED_GR_BASIC_OP_TYPES_H
+#define INCLUDED_GR_BASIC_OP_TYPES_H
 
 //TODO may support non-homogeneous IO types,
 //DIVIDE_S16_S8 (int16 input, int8 output)
 //so this will easily fit into the framework.
 
-enum divide_type{
-    DIVIDE_FC64,
-    DIVIDE_F64,
-    DIVIDE_FC32,
-    DIVIDE_F32,
-    DIVIDE_SC64,
-    DIVIDE_S64,
-    DIVIDE_SC32,
-    DIVIDE_S32,
-    DIVIDE_SC16,
-    DIVIDE_S16,
-    DIVIDE_SC8,
-    DIVIDE_S8,
-};
+//TODO may support non-homogeneous IO types,
+//MULTIPLY_S8_S16 (int8 input, int16 output)
+//so this will easily fit into the framework.
 
-class GR_BASIC_API basic_divide : virtual public gr_sync_block{
-public:
-    typedef boost::shared_ptr<basic_divide> sptr;
+//! Most common types for operator blocks (add, multiply, etc...)
+enum op_type{
+    OP_FC64,
+    OP_F64,
+    OP_FC32,
+    OP_F32,
+    OP_SC64,
+    OP_S64,
+    OP_SC32,
+    OP_S32,
+    OP_SC16,
+    OP_S16,
+    OP_SC8,
+    OP_S8,
 };
 
-GR_BASIC_API basic_divide::sptr basic_make_divide(
-    divide_type type, const size_t vlen = 1
-);
-
-#endif /* INCLUDED_GR_BASIC_DIVIDE_H */
+#endif /* INCLUDED_GR_BASIC_OP_TYPES_H */
diff --git a/gr-basic/include/gr_basic_subtract.h 
b/gr-basic/include/gr_basic_subtract.h
index 7000630..a4ef405 100644
--- a/gr-basic/include/gr_basic_subtract.h
+++ b/gr-basic/include/gr_basic_subtract.h
@@ -23,21 +23,7 @@
 
 #include <gr_basic_api.h>
 #include <gr_sync_block.h>
-
-enum subtract_type{
-    SUBTRACT_FC64,
-    SUBTRACT_F64,
-    SUBTRACT_FC32,
-    SUBTRACT_F32,
-    SUBTRACT_SC64,
-    SUBTRACT_S64,
-    SUBTRACT_SC32,
-    SUBTRACT_S32,
-    SUBTRACT_SC16,
-    SUBTRACT_S16,
-    SUBTRACT_SC8,
-    SUBTRACT_S8,
-};
+#include <gr_basic_op_types.h>
 
 class GR_BASIC_API basic_subtract : virtual public gr_sync_block{
 public:
@@ -45,7 +31,7 @@ public:
 };
 
 GR_BASIC_API basic_subtract::sptr basic_make_subtract(
-    subtract_type type, const size_t vlen = 1
+    op_type type, const size_t vlen = 1
 );
 
 #endif /* INCLUDED_GR_BASIC_SUBTRACT_H */
diff --git a/gr-basic/lib/CMakeLists.txt b/gr-basic/lib/CMakeLists.txt
index 254b99f..3e03578 100644
--- a/gr-basic/lib/CMakeLists.txt
+++ b/gr-basic/lib/CMakeLists.txt
@@ -34,8 +34,10 @@ link_directories(${Boost_LIBRARY_DIRS})
 ########################################################################
 list(APPEND gr_basic_sources
     gr_basic_add.cc
+    gr_basic_add_const.cc
     gr_basic_divide.cc
     gr_basic_multiply.cc
+    gr_basic_multiply_const.cc
     gr_basic_subtract.cc
 )
 
diff --git a/gr-basic/lib/gr_basic_add.cc b/gr-basic/lib/gr_basic_add.cc
index f56bf56..5adb2d2 100644
--- a/gr-basic/lib/gr_basic_add.cc
+++ b/gr-basic/lib/gr_basic_add.cc
@@ -109,26 +109,26 @@ private:
  * Adder factory function
  **********************************************************************/
 basic_add::sptr basic_make_add(
-    add_type type, const size_t vlen
+    op_type type, const size_t vlen
 ){
     switch(type){
-    case ADD_FC64: return boost::shared_ptr<basic_add>(new 
gr_basic_add_generic<double>(2*vlen));
-    case ADD_F64: return boost::shared_ptr<basic_add>(new 
gr_basic_add_generic<double>(vlen));
+    case OP_FC64: return basic_add::sptr(new 
gr_basic_add_generic<double>(2*vlen));
+    case OP_F64: return basic_add::sptr(new 
gr_basic_add_generic<double>(vlen));
 
-    case ADD_FC32: return boost::shared_ptr<basic_add>(new 
gr_basic_add_f32(2*vlen));
-    case ADD_F32: return boost::shared_ptr<basic_add>(new 
gr_basic_add_f32(vlen));
+    case OP_FC32: return basic_add::sptr(new gr_basic_add_f32(2*vlen));
+    case OP_F32: return basic_add::sptr(new gr_basic_add_f32(vlen));
 
-    case ADD_SC64: return boost::shared_ptr<basic_add>(new 
gr_basic_add_generic<int64_t>(2*vlen));
-    case ADD_S64: return boost::shared_ptr<basic_add>(new 
gr_basic_add_generic<int64_t>(vlen));
+    case OP_SC64: return basic_add::sptr(new 
gr_basic_add_generic<int64_t>(2*vlen));
+    case OP_S64: return basic_add::sptr(new 
gr_basic_add_generic<int64_t>(vlen));
 
-    case ADD_SC32: return boost::shared_ptr<basic_add>(new 
gr_basic_add_generic<int32_t>(2*vlen));
-    case ADD_S32: return boost::shared_ptr<basic_add>(new 
gr_basic_add_generic<int32_t>(vlen));
+    case OP_SC32: return basic_add::sptr(new 
gr_basic_add_generic<int32_t>(2*vlen));
+    case OP_S32: return basic_add::sptr(new 
gr_basic_add_generic<int32_t>(vlen));
 
-    case ADD_SC16: return boost::shared_ptr<basic_add>(new 
gr_basic_add_generic<int16_t>(2*vlen));
-    case ADD_S16: return boost::shared_ptr<basic_add>(new 
gr_basic_add_generic<int16_t>(vlen));
+    case OP_SC16: return basic_add::sptr(new 
gr_basic_add_generic<int16_t>(2*vlen));
+    case OP_S16: return basic_add::sptr(new 
gr_basic_add_generic<int16_t>(vlen));
 
-    case ADD_SC8: return boost::shared_ptr<basic_add>(new 
gr_basic_add_generic<int8_t>(2*vlen));
-    case ADD_S8: return boost::shared_ptr<basic_add>(new 
gr_basic_add_generic<int8_t>(vlen));
+    case OP_SC8: return basic_add::sptr(new 
gr_basic_add_generic<int8_t>(2*vlen));
+    case OP_S8: return basic_add::sptr(new gr_basic_add_generic<int8_t>(vlen));
 
     default: throw std::invalid_argument("basic_make_add got unknown add 
type");
     }
diff --git a/gr-basic/lib/gr_basic_add_const.cc 
b/gr-basic/lib/gr_basic_add_const.cc
new file mode 100644
index 0000000..05e4f0f
--- /dev/null
+++ b/gr-basic/lib/gr_basic_add_const.cc
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2011 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gr_basic_add_const.h>
+#include <gr_io_signature.h>
+#include <stdexcept>
+#include <complex>
+#include <volk/volk.h>
+
+/***********************************************************************
+ * Generic add const implementation
+ **********************************************************************/
+template <typename type>
+class gr_basic_add_const_generic : public basic_add_const{
+public:
+    gr_basic_add_const_generic(const size_t vlen):
+        gr_sync_block(
+            "add const generic",
+            gr_make_io_signature (1, 1, sizeof(type)*vlen),
+            gr_make_io_signature (1, 1, sizeof(type)*vlen)
+        ),
+        _vlen(vlen)
+    {
+        //NOP
+    }
+
+    int work(
+        int noutput_items,
+        gr_vector_const_void_star &input_items,
+        gr_vector_void_star &output_items
+    ){
+        const size_t n_nums = noutput_items * _vlen;
+        type *out = reinterpret_cast<type *>(output_items[0]);
+        const type *in = reinterpret_cast<const type *>(input_items[0]);
+
+        //simple vec len 1 for the fast
+        if (_vlen == 1){
+            const type val = _val[0];
+            for (size_t i = 0; i < n_nums; i++){
+                out[i] = in[i] + val;
+            }
+        }
+
+        //general case for any vlen
+        else{
+            for (size_t i = 0; i < n_nums; i++){
+                out[i] = in[i] + _val[i%_val.size()];
+            }
+        }
+        return noutput_items;
+    }
+
+    void set_value(const std::vector<double> &val){
+        _val.resize(val.size());
+        for (size_t i = 0; i < val.size(); i++){
+            _val[i] = type(val[i]);
+        }
+    }
+
+private:
+    const size_t _vlen;
+    std::vector<type> _val;
+};
+
+/***********************************************************************
+ * Adder factory function
+ **********************************************************************/
+basic_add_const::sptr basic_make_add_const(
+    op_type type, const size_t vlen
+){
+    switch(type){
+    case OP_FC64: return basic_add_const::sptr(new 
gr_basic_add_const_generic<double>(2*vlen));
+    case OP_F64: return basic_add_const::sptr(new 
gr_basic_add_const_generic<double>(vlen));
+
+    case OP_FC32: return basic_add_const::sptr(new 
gr_basic_add_const_generic<float>(2*vlen));
+    case OP_F32: return basic_add_const::sptr(new 
gr_basic_add_const_generic<float>(vlen));
+
+    case OP_SC64: return basic_add_const::sptr(new 
gr_basic_add_const_generic<int64_t>(2*vlen));
+    case OP_S64: return basic_add_const::sptr(new 
gr_basic_add_const_generic<int64_t>(vlen));
+
+    case OP_SC32: return basic_add_const::sptr(new 
gr_basic_add_const_generic<int32_t>(2*vlen));
+    case OP_S32: return basic_add_const::sptr(new 
gr_basic_add_const_generic<int32_t>(vlen));
+
+    case OP_SC16: return basic_add_const::sptr(new 
gr_basic_add_const_generic<int16_t>(2*vlen));
+    case OP_S16: return basic_add_const::sptr(new 
gr_basic_add_const_generic<int16_t>(vlen));
+
+    case OP_SC8: return basic_add_const::sptr(new 
gr_basic_add_const_generic<int8_t>(2*vlen));
+    case OP_S8: return basic_add_const::sptr(new 
gr_basic_add_const_generic<int8_t>(vlen));
+
+    default: throw std::invalid_argument("basic_make_add got unknown add 
type");
+    }
+}
diff --git a/gr-basic/lib/gr_basic_divide.cc b/gr-basic/lib/gr_basic_divide.cc
index 19f9ec2..a1cde8d 100644
--- a/gr-basic/lib/gr_basic_divide.cc
+++ b/gr-basic/lib/gr_basic_divide.cc
@@ -70,26 +70,26 @@ private:
  * Adder factory function
  **********************************************************************/
 basic_divide::sptr basic_make_divide(
-    divide_type type, const size_t vlen
+    op_type type, const size_t vlen
 ){
     switch(type){
-    case DIVIDE_FC64: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<std::complex<double> >(vlen));
-    case DIVIDE_F64: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<double>(vlen));
+    case OP_FC64: return basic_divide::sptr(new 
gr_basic_divide_generic<std::complex<double> >(vlen));
+    case OP_F64: return basic_divide::sptr(new 
gr_basic_divide_generic<double>(vlen));
 
-    case DIVIDE_FC32: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<std::complex<float> >(vlen));
-    case DIVIDE_F32: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<float>(vlen));
+    case OP_FC32: return basic_divide::sptr(new 
gr_basic_divide_generic<std::complex<float> >(vlen));
+    case OP_F32: return basic_divide::sptr(new 
gr_basic_divide_generic<float>(vlen));
 
-    case DIVIDE_SC64: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<std::complex<int64_t> >(vlen));
-    case DIVIDE_S64: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<int64_t>(vlen));
+    case OP_SC64: return basic_divide::sptr(new 
gr_basic_divide_generic<std::complex<int64_t> >(vlen));
+    case OP_S64: return basic_divide::sptr(new 
gr_basic_divide_generic<int64_t>(vlen));
 
-    case DIVIDE_SC32: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<std::complex<int32_t> >(vlen));
-    case DIVIDE_S32: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<int32_t>(vlen));
+    case OP_SC32: return basic_divide::sptr(new 
gr_basic_divide_generic<std::complex<int32_t> >(vlen));
+    case OP_S32: return basic_divide::sptr(new 
gr_basic_divide_generic<int32_t>(vlen));
 
-    case DIVIDE_SC16: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<std::complex<int16_t> >(vlen));
-    case DIVIDE_S16: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<int16_t>(vlen));
+    case OP_SC16: return basic_divide::sptr(new 
gr_basic_divide_generic<std::complex<int16_t> >(vlen));
+    case OP_S16: return basic_divide::sptr(new 
gr_basic_divide_generic<int16_t>(vlen));
 
-    case DIVIDE_SC8: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<std::complex<int8_t> >(vlen));
-    case DIVIDE_S8: return boost::shared_ptr<basic_divide>(new 
gr_basic_divide_generic<int8_t>(vlen));
+    case OP_SC8: return basic_divide::sptr(new 
gr_basic_divide_generic<std::complex<int8_t> >(vlen));
+    case OP_S8: return basic_divide::sptr(new 
gr_basic_divide_generic<int8_t>(vlen));
 
     default: throw std::invalid_argument("basic_make_divide got unknown divide 
type");
     }
diff --git a/gr-basic/lib/gr_basic_multiply.cc 
b/gr-basic/lib/gr_basic_multiply.cc
index decacf7..d6033a7 100644
--- a/gr-basic/lib/gr_basic_multiply.cc
+++ b/gr-basic/lib/gr_basic_multiply.cc
@@ -148,26 +148,26 @@ private:
  * Adder factory function
  **********************************************************************/
 basic_multiply::sptr basic_make_multiply(
-    multiply_type type, const size_t vlen
+    op_type type, const size_t vlen
 ){
     switch(type){
-    case MULTIPLY_FC64: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_generic<std::complex<double> >(vlen));
-    case MULTIPLY_F64: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_generic<double>(vlen));
+    case OP_FC64: return basic_multiply::sptr(new 
gr_basic_multiply_generic<std::complex<double> >(vlen));
+    case OP_F64: return basic_multiply::sptr(new 
gr_basic_multiply_generic<double>(vlen));
 
-    case MULTIPLY_FC32: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_fc32(vlen));
-    case MULTIPLY_F32: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_f32(vlen));
+    case OP_FC32: return basic_multiply::sptr(new 
gr_basic_multiply_fc32(vlen));
+    case OP_F32: return basic_multiply::sptr(new gr_basic_multiply_f32(vlen));
 
-    case MULTIPLY_SC64: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_generic<std::complex<int64_t> >(vlen));
-    case MULTIPLY_S64: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_generic<int64_t>(vlen));
+    case OP_SC64: return basic_multiply::sptr(new 
gr_basic_multiply_generic<std::complex<int64_t> >(vlen));
+    case OP_S64: return basic_multiply::sptr(new 
gr_basic_multiply_generic<int64_t>(vlen));
 
-    case MULTIPLY_SC32: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_generic<std::complex<int32_t> >(vlen));
-    case MULTIPLY_S32: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_generic<int32_t>(vlen));
+    case OP_SC32: return basic_multiply::sptr(new 
gr_basic_multiply_generic<std::complex<int32_t> >(vlen));
+    case OP_S32: return basic_multiply::sptr(new 
gr_basic_multiply_generic<int32_t>(vlen));
 
-    case MULTIPLY_SC16: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_generic<std::complex<int16_t> >(vlen));
-    case MULTIPLY_S16: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_generic<int16_t>(vlen));
+    case OP_SC16: return basic_multiply::sptr(new 
gr_basic_multiply_generic<std::complex<int16_t> >(vlen));
+    case OP_S16: return basic_multiply::sptr(new 
gr_basic_multiply_generic<int16_t>(vlen));
 
-    case MULTIPLY_SC8: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_generic<std::complex<int8_t> >(vlen));
-    case MULTIPLY_S8: return boost::shared_ptr<basic_multiply>(new 
gr_basic_multiply_generic<int8_t>(vlen));
+    case OP_SC8: return basic_multiply::sptr(new 
gr_basic_multiply_generic<std::complex<int8_t> >(vlen));
+    case OP_S8: return basic_multiply::sptr(new 
gr_basic_multiply_generic<int8_t>(vlen));
 
     default: throw std::invalid_argument("basic_make_multiply got unknown 
multiply type");
     }
diff --git a/gr-basic/lib/gr_basic_multiply_const.cc 
b/gr-basic/lib/gr_basic_multiply_const.cc
new file mode 100644
index 0000000..8ade8a0
--- /dev/null
+++ b/gr-basic/lib/gr_basic_multiply_const.cc
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2011 Free Software Foundation, Inc.
+ * 
+ * This file is part of GNU Radio
+ * 
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ * 
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gr_basic_multiply_const.h>
+#include <gr_io_signature.h>
+#include <stdexcept>
+#include <complex>
+#include <volk/volk.h>
+
+/***********************************************************************
+ * Generic multiply const implementation
+ **********************************************************************/
+template <typename type>
+class gr_basic_multiply_const_generic : public basic_multiply_const{
+public:
+    gr_basic_multiply_const_generic(const size_t vlen):
+        gr_sync_block(
+            "multiply const generic",
+            gr_make_io_signature (1, 1, sizeof(type)*vlen),
+            gr_make_io_signature (1, 1, sizeof(type)*vlen)
+        ),
+        _vlen(vlen)
+    {
+        //NOP
+    }
+
+    int work(
+        int noutput_items,
+        gr_vector_const_void_star &input_items,
+        gr_vector_void_star &output_items
+    ){
+        const size_t n_nums = noutput_items * _vlen;
+        type *out = reinterpret_cast<type *>(output_items[0]);
+        const type *in = reinterpret_cast<const type *>(input_items[0]);
+
+        //simple vec len 1 for the fast
+        if (_vlen == 1){
+            const type val = _val[0];
+            for (size_t i = 0; i < n_nums; i++){
+                out[i] = in[i] * val;
+            }
+        }
+
+        //general case for any vlen
+        else{
+            for (size_t i = 0; i < n_nums; i++){
+                out[i] = in[i] * _val[i%_val.size()];
+            }
+        }
+        return noutput_items;
+    }
+
+    void set_value(const std::vector<double> &val){
+        _val.resize(val.size());
+        for (size_t i = 0; i < val.size(); i++){
+            _val[i] = type(val[i]);
+        }
+    }
+
+private:
+    const size_t _vlen;
+    std::vector<type> _val;
+};
+
+/***********************************************************************
+ * Adder factory function
+ **********************************************************************/
+basic_multiply_const::sptr basic_make_multiply_const(
+    op_type type, const size_t vlen
+){
+    switch(type){
+    case OP_FC64: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<double>(2*vlen));
+    case OP_F64: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<double>(vlen));
+
+    case OP_FC32: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<float>(2*vlen));
+    case OP_F32: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<float>(vlen));
+
+    case OP_SC64: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<int64_t>(2*vlen));
+    case OP_S64: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<int64_t>(vlen));
+
+    case OP_SC32: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<int32_t>(2*vlen));
+    case OP_S32: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<int32_t>(vlen));
+
+    case OP_SC16: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<int16_t>(2*vlen));
+    case OP_S16: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<int16_t>(vlen));
+
+    case OP_SC8: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<int8_t>(2*vlen));
+    case OP_S8: return basic_multiply_const::sptr(new 
gr_basic_multiply_const_generic<int8_t>(vlen));
+
+    default: throw std::invalid_argument("basic_make_multiply got unknown 
multiply type");
+    }
+}
diff --git a/gr-basic/lib/gr_basic_subtract.cc 
b/gr-basic/lib/gr_basic_subtract.cc
index bde41ed..6d268e0 100644
--- a/gr-basic/lib/gr_basic_subtract.cc
+++ b/gr-basic/lib/gr_basic_subtract.cc
@@ -70,26 +70,26 @@ private:
  * Adder factory function
  **********************************************************************/
 basic_subtract::sptr basic_make_subtract(
-    subtract_type type, const size_t vlen
+    op_type type, const size_t vlen
 ){
     switch(type){
-    case SUBTRACT_FC64: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<double>(2*vlen));
-    case SUBTRACT_F64: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<double>(vlen));
+    case OP_FC64: return basic_subtract::sptr(new 
gr_basic_subtract_generic<double>(2*vlen));
+    case OP_F64: return basic_subtract::sptr(new 
gr_basic_subtract_generic<double>(vlen));
 
-    case SUBTRACT_FC32: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<float>(2*vlen));
-    case SUBTRACT_F32: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<float>(vlen));
+    case OP_FC32: return basic_subtract::sptr(new 
gr_basic_subtract_generic<float>(2*vlen));
+    case OP_F32: return basic_subtract::sptr(new 
gr_basic_subtract_generic<float>(vlen));
 
-    case SUBTRACT_SC64: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<int64_t>(2*vlen));
-    case SUBTRACT_S64: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<int64_t>(vlen));
+    case OP_SC64: return basic_subtract::sptr(new 
gr_basic_subtract_generic<int64_t>(2*vlen));
+    case OP_S64: return basic_subtract::sptr(new 
gr_basic_subtract_generic<int64_t>(vlen));
 
-    case SUBTRACT_SC32: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<int32_t>(2*vlen));
-    case SUBTRACT_S32: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<int32_t>(vlen));
+    case OP_SC32: return basic_subtract::sptr(new 
gr_basic_subtract_generic<int32_t>(2*vlen));
+    case OP_S32: return basic_subtract::sptr(new 
gr_basic_subtract_generic<int32_t>(vlen));
 
-    case SUBTRACT_SC16: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<int16_t>(2*vlen));
-    case SUBTRACT_S16: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<int16_t>(vlen));
+    case OP_SC16: return basic_subtract::sptr(new 
gr_basic_subtract_generic<int16_t>(2*vlen));
+    case OP_S16: return basic_subtract::sptr(new 
gr_basic_subtract_generic<int16_t>(vlen));
 
-    case SUBTRACT_SC8: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<int8_t>(2*vlen));
-    case SUBTRACT_S8: return boost::shared_ptr<basic_subtract>(new 
gr_basic_subtract_generic<int8_t>(vlen));
+    case OP_SC8: return basic_subtract::sptr(new 
gr_basic_subtract_generic<int8_t>(2*vlen));
+    case OP_S8: return basic_subtract::sptr(new 
gr_basic_subtract_generic<int8_t>(vlen));
 
     default: throw std::invalid_argument("basic_make_subtract got unknown 
subtract type");
     }
diff --git a/gr-basic/swig/basic_ops.i b/gr-basic/swig/basic_ops.i
index 1f3d27a..2487136 100644
--- a/gr-basic/swig/basic_ops.i
+++ b/gr-basic/swig/basic_ops.i
@@ -24,22 +24,35 @@
 ////////////////////////////////////////////////////////////////////////
 %{
 #include <gr_basic_add.h>
+#include <gr_basic_add_const.h>
 #include <gr_basic_divide.h>
 #include <gr_basic_multiply.h>
+#include <gr_basic_multiply_const.h>
 #include <gr_basic_subtract.h>
 %}
 
 ////////////////////////////////////////////////////////////////////////
+// import types
+////////////////////////////////////////////////////////////////////////
+%include <gr_basic_op_types.h>
+
+////////////////////////////////////////////////////////////////////////
 // block magic
 ////////////////////////////////////////////////////////////////////////
 GR_SWIG_BLOCK_MAGIC(basic,add)
 %include <gr_basic_add.h>
 
+GR_SWIG_BLOCK_MAGIC(basic,add_const)
+%include <gr_basic_add_const.h>
+
 GR_SWIG_BLOCK_MAGIC(basic,divide)
 %include <gr_basic_divide.h>
 
 GR_SWIG_BLOCK_MAGIC(basic,multiply)
 %include <gr_basic_multiply.h>
 
+GR_SWIG_BLOCK_MAGIC(basic,multiply_const)
+%include <gr_basic_multiply_const.h>
+
 GR_SWIG_BLOCK_MAGIC(basic,subtract)
 %include <gr_basic_subtract.h>



reply via email to

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