28 #include <boost/format.hpp>
42 static Ice::CommunicatorPtr get_swig_communicator()
77 std::string units, std::string desc,
78 myType
min, myType max, myType deflt,
81 d_functionbase(functionbase), d_units(units), d_desc(desc),
82 d_min(min), d_max(max), d_deflt(deflt), d_dtype(dtype),
83 d_name(name), d_id(pycallback_object_count++)
91 d_rpc_vars.push_back(s);
96 if(d_callback == NULL) {
97 printf(
"WARNING: pycallback_object get() called without py callback set!\n");
102 PyGILState_STATE state = PyGILState_Ensure();
108 func = (PyObject *) d_callback;
110 result = PyEval_CallObject(func,NULL);
114 rVal = pyCast(result);
119 PyGILState_Release(state);
134 (boost::format(
"%s%d") % d_name % d_id).str() , d_functionbase.c_str(),
142 PyObject* d_callback;
143 std::string d_functionbase, d_units, d_desc;
144 myType d_min, d_max, d_deflt;
147 myType pyCast(PyObject* obj) {
148 printf(
"TYPE NOT IMPLEMENTED!\n");
151 std::vector<boost::any> d_rpc_vars;
163 return std::string(PyString_AsString(obj));
169 return PyFloat_AsDouble(obj);
175 return (
float)PyFloat_AsDouble(obj);
181 return PyInt_AsLong(obj);
187 int size = PyObject_Size(obj);
188 std::vector<float> rval(size);
189 for(
int i=0; i<size; i++) {
190 rval[i] = (float)PyFloat_AsDouble(PyList_GetItem(obj, i));
198 int size = PyObject_Size(obj);
199 std::vector<gr_complex> rval(size);
200 for(
int i=0; i<size; i++){ rval[i] =
\
201 gr_complex((
float)PyComplex_RealAsDouble(PyList_GetItem(obj, i)),
202 (
float)PyComplex_ImagAsDouble(PyList_GetItem(obj, i)));