summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/include/gnuradio/py_feval.h
diff options
context:
space:
mode:
authorTom Rondeau <trondeau@vt.edu>2013-05-23 08:18:59 -0400
committerTom Rondeau <trondeau@vt.edu>2013-05-23 08:18:59 -0400
commit7daef55cb11dfc05fdab9ee3f1f78ac2904dc300 (patch)
tree5ff591dbcd3cb8d6788adafff59e7a7986a88d0f /gnuradio-runtime/include/gnuradio/py_feval.h
parent0a8078a57237fcc12f4a51f6d217c54031cc904d (diff)
build: move from using runtime_swig.i to gnuradio.i to reduce memory load while building.
py_feval destructor issue needs fixing.
Diffstat (limited to 'gnuradio-runtime/include/gnuradio/py_feval.h')
-rw-r--r--gnuradio-runtime/include/gnuradio/py_feval.h27
1 files changed, 22 insertions, 5 deletions
diff --git a/gnuradio-runtime/include/gnuradio/py_feval.h b/gnuradio-runtime/include/gnuradio/py_feval.h
index 94def79ca1..ea5b144898 100644
--- a/gnuradio-runtime/include/gnuradio/py_feval.h
+++ b/gnuradio-runtime/include/gnuradio/py_feval.h
@@ -20,11 +20,21 @@
* Boston, MA 02110-1301, USA.
*/
+#ifndef INCLUDED_GR_PY_FEVAL_H
+#define INCLUDED_GR_PY_FEVAL_H
+
#include <pmt/pmt.h>
+class ensure_py_gil_state {
+ PyGILState_STATE d_gstate;
+public:
+ ensure_py_gil_state() { d_gstate = PyGILState_Ensure(); }
+ ~ensure_py_gil_state() { PyGILState_Release(d_gstate); }
+};
+
namespace gr {
- class py_feval_dd : public feval_dd
+ class GR_RUNTIME_API py_feval_dd : public feval_dd
{
public:
double calleval(double x)
@@ -32,9 +42,10 @@ namespace gr {
ensure_py_gil_state _lock;
return eval(x);
}
+ virtual ~py_feval_dd() {};
};
- class py_feval_cc : public feval_cc
+ class GR_RUNTIME_API py_feval_cc : public feval_cc
{
public:
gr_complex calleval(gr_complex x)
@@ -42,9 +53,10 @@ namespace gr {
ensure_py_gil_state _lock;
return eval(x);
}
+ virtual ~py_feval_cc();
};
- class py_feval_ll : public feval_ll
+ class GR_RUNTIME_API py_feval_ll : public feval_ll
{
public:
long calleval(long x)
@@ -52,9 +64,10 @@ namespace gr {
ensure_py_gil_state _lock;
return eval(x);
}
+ virtual ~py_feval_ll();
};
- class py_feval : public feval
+ class GR_RUNTIME_API py_feval : public feval
{
public:
void calleval()
@@ -62,9 +75,10 @@ namespace gr {
ensure_py_gil_state _lock;
eval();
}
+ virtual ~py_feval();
};
- class py_feval_p : public feval_p
+ class GR_RUNTIME_API py_feval_p : public feval_p
{
public:
void calleval(pmt::pmt_t x)
@@ -72,6 +86,9 @@ namespace gr {
ensure_py_gil_state _lock;
eval(x);
}
+ virtual ~py_feval_p();
};
} /* namespace gr */
+
+#endif /* INCLUDED_GR_PY_FEVAL_H */