[pytango] 401/483: Implement #102 for commands

Sandor Bodo-Merle sbodomerle-guest at moszumanska.debian.org
Thu Sep 28 19:15:05 UTC 2017


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

sbodomerle-guest pushed a commit to annotated tag bliss_8.10
in repository pytango.

commit 5b12f71664b24a9828564886ec2c170a64052bd4
Author: tiagocoutinho <tiagocoutinho at 4e9c00fd-8f2e-0410-aa12-93ce3db5e235>
Date:   Wed Aug 27 20:06:38 2014 +0000

    Implement #102 for commands
    
    git-svn-id: http://svn.code.sf.net/p/tango-cs/code/bindings/PyTango/trunk@26353 4e9c00fd-8f2e-0410-aa12-93ce3db5e235
---
 src/boost/cpp/server/command.cpp | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/boost/cpp/server/command.cpp b/src/boost/cpp/server/command.cpp
index 99e8134..82577e3 100644
--- a/src/boost/cpp/server/command.cpp
+++ b/src/boost/cpp/server/command.cpp
@@ -118,15 +118,24 @@ void insert_scalar<Tango::DEV_ENCODED>(boost::python::object &o, CORBA::Any &any
     bopy::object p1 = o[1];
 
     const char* encoded_format = bopy::extract<const char *> (p0.ptr());
-    const char* encoded_data = bopy::extract<const char *> (p1.ptr());
     
-    CORBA::ULong nb = static_cast<CORBA::ULong>(bopy::len(p1));
-    Tango::DevVarCharArray arr(nb, nb, (CORBA::Octet*)encoded_data, false);
+    PyObject* data_ptr = p1.ptr();
+    Py_buffer view;
+    
+    if (PyObject_GetBuffer(data_ptr, &view, PyBUF_FULL_RO) < 0)
+    {
+        throw_bad_type(Tango::CmdArgTypeName[Tango::DEV_ENCODED]);
+    }
+    
+    CORBA::ULong nb = static_cast<CORBA::ULong>(view.len);
+    Tango::DevVarCharArray arr(nb, nb, (CORBA::Octet*)view.buf, false);
     Tango::DevEncoded *data = new Tango::DevEncoded;
     data->encoded_format = CORBA::string_dup(encoded_format);
-    data->encoded_data = arr;
-
+    data->encoded_data = arr;    
+    
     any <<= data;
+
+    PyBuffer_Release(&view);
 }
 
 template<long tangoArrayTypeConst>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/pytango.git



More information about the debian-science-commits mailing list