# SoftBank Robotics documentation What's new in NAOqi 2.8?

# Bindings

Language bindings from a non-C++ language (Python, Java, ...) are translation layers towards libqi (C++). No intelligence should be implemented in these translation layers, but values should be translated to C++ types in the appropriate manner.

See Type equivalences between languages.

## The null value

Many languages feature a null value, representing the absence of a valid value. In some language, such as python, it is called a none value.

Such a null / none value must be translated to the Void qi type.

### Example for Java

This JNI code creates an AnyReference for the given Java object:

    qi::AnyReference AnyReference_from_jobject(jobject obj)
    {
      // obj is a Java object.
      if (env->IsSameObject(obj, NULL)) {
          // obj is null
          return qi::AnyReference(qi::typeOf<void>());
      } else {
          // For non null just wrap the value
          return qi::AnyReference::from(obj);
      }
    }

### Example for Python

    qi::AnyReference AnyReference_from_PyObject(PyObject* obj)
    {
      if (obj == Py_None)
      {
          // obj is none
          return qi::AnyReference(qi::typeOf<void>());
      }
      // else if...
    }

Glossary Site map Index Support Contact Legal Notices