swig_python.hh

00001 
00004 #ifndef SWIG_PYTHON_H
00005 # define SWIG_PYTHON_H
00006 
00007 # ifndef SWIGPYTHON
00008 #  error "This file must be compiled with SWIG in python mode."
00009 # endif /* !SWIGPYTHON */
00010 
00011 # include <object.h>
00012 # include "uclient.h"
00013 
00014 namespace urbi
00015 {
00020   class Callback : public UCallbackWrapper
00021     {
00022     public:
00023       Callback(PyObject* obj) :
00024         UCallbackWrapper(),
00025         obj_ (obj)
00026         {
00027           if (!obj_ || !PyFunction_Check(obj_) || !PyCallable_Check(obj_))
00028             {
00029               PyErr_SetString (PyExc_TypeError, "Need a callable object!");
00030               return;
00031             }
00032           Py_INCREF(obj_);
00033         }
00034 
00035       virtual UCallbackAction operator () (const UMessage& msg)
00036         {
00037           FILE *fp = fopen("/tmp/foo.txt","w");
00038           PyObject_Print(obj_,fp,Py_PRINT_RAW);
00039           fclose(fp);
00040 
00041           PyObject_CallFunction(obj_,"s", msg.message.c_str());
00042           return URBI_CONTINUE;
00043         }
00044 
00045       virtual ~Callback()
00046         {
00047           Py_DECREF(obj_);
00048         }
00049 
00050     private:
00051       PyObject* obj_;
00052     };
00053 };
00054 
00055 #endif /* !SWIG_PYTHON_H */

Generated on Tue Apr 10 17:45:44 2007 for URBISDK by  doxygen 1.5.1