diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b7ed49a553e9a2b7da6e127be7346ecb0111f4a..a9125784db1b68bd2561e56e69324f65de13607f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,7 +24,6 @@ include(cmake/header.cmake) SET(PROJECT_NAME dynamic-graph-python) SET(PROJECT_DESCRIPTION "Dynamic graph library Python bindings") SET(PROJECT_URL "http://github.com/jrl-umi3218/dynamic-graph-python") -SET(PROJECT_VERSION 1.99) SET(CUSTOM_HEADER_DIR "dynamic-graph/python") # Headers list. @@ -43,6 +42,9 @@ SETUP_PROJECT() # Trigger dependency to dynamic-graph. ADD_REQUIRED_DEPENDENCY("dynamic-graph >= 1.0") +# Add dependency toward dynamic graph library in pkg-config file. +PKG_CONFIG_APPEND_LIBS("dynamic-graph-python") + ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(include) ADD_SUBDIRECTORY(doc) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 953ce4962509436772ba1b4b36e918d60f47b8cf..a1ef2110137056b78846af3ad780872cae473bf1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -42,6 +42,9 @@ ADD_LIBRARY(${LIBRARY_NAME} SHARED interpreter.cc) +TARGET_LINK_LIBRARIES(${LIBRARY_NAME} + ${Boost_LIBRARIES} + ${PYTHON_LIBRARY}) SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION}) PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} dynamic-graph) @@ -52,8 +55,7 @@ SET(EXECUTABLE_NAME dg-python) ADD_EXECUTABLE(${EXECUTABLE_NAME} dg-python.cc) TARGET_LINK_LIBRARIES(${EXECUTABLE_NAME} ${LIBRARY_NAME} - ${Boost_LIBRARIES} - ${PYTHON_LIBRARY}) + ) INSTALL(TARGETS dg-python DESTINATION bin) # diff --git a/src/dynamic-graph-py.cc b/src/dynamic-graph-py.cc index 2bb1d9b7f4efc573d558d6183bfa7dba01581288..08ca7c804542737e3bf7631a566bc9b03f6c1bca 100644 --- a/src/dynamic-graph-py.cc +++ b/src/dynamic-graph-py.cc @@ -29,6 +29,7 @@ namespace dynamicgraph { namespace signalBase { extern PyObject* create(PyObject* self, PyObject* args); extern PyObject* getTime(PyObject* self, PyObject* args); + extern PyObject* setTime(PyObject* self, PyObject* args); extern PyObject* getName(PyObject* self, PyObject* args); extern PyObject* display(PyObject* self, PyObject* args); extern PyObject* displayDependencies(PyObject* self, PyObject* args); @@ -149,6 +150,8 @@ static PyMethodDef dynamicGraphMethods[] = { "create a SignalBase C++ object"}, {"signal_base_get_time", dynamicgraph::python::signalBase::getTime, METH_VARARGS, "Get time of a SignalBase"}, + {"signal_base_set_time", dynamicgraph::python::signalBase::setTime, + METH_VARARGS, "Set time of a SignalBase"}, {"signal_base_get_name", dynamicgraph::python::signalBase::getName, METH_VARARGS, "Get the name of a signal"}, {"signal_base_display", dynamicgraph::python::signalBase::display, diff --git a/src/dynamic_graph/signal_base.py b/src/dynamic_graph/signal_base.py index be99a20afc278df105c0f55205844da7fa8b9cd4..fade3a9b5ecbb72dc33c3091af813ce94557f477 100644 --- a/src/dynamic_graph/signal_base.py +++ b/src/dynamic_graph/signal_base.py @@ -167,6 +167,16 @@ class SignalBase (object) : """ return wrap.signal_base_get_time(self.obj) + @time.setter + def time(self, val) : + """ + Set Time of signal + + Input: + - an integer + """ + return wrap.signal_base_set_time(self.obj, val) + @property def value(self) : """ diff --git a/src/signal-base-py.cc b/src/signal-base-py.cc index 23a50013addb6953b016b81c77e7717b27731756..21cef5f93e98c44ea72a2edc887722b2f95a6edb 100644 --- a/src/signal-base-py.cc +++ b/src/signal-base-py.cc @@ -77,6 +77,25 @@ namespace dynamicgraph { return Py_BuildValue("i", time); } + PyObject* setTime(PyObject* /*self*/, PyObject* args) + { + void* pointer = NULL; + PyObject* object = NULL; + int time; + if (!PyArg_ParseTuple(args,"Oi", &object, &time)) + return NULL; + if (!PyCObject_Check(object)) { + PyErr_SetString(error, "object should be a C object"); + return NULL; + } + + pointer = PyCObject_AsVoidPtr(object); + SignalBase<int>* obj = (SignalBase<int>*)pointer; + + obj->setTime(time); + return Py_BuildValue(""); + } + PyObject* display(PyObject* /*self*/, PyObject* args) { void* pointer = NULL;