- Shiboken

# Shiboken module

## Functions

- `isValid()`

- `wrapInstance()`

- `getCppPointer()`

- `delete()`

- `ownedByPython()`

- `createdByPython()`

- `dump()`

- `disassembleFrame()`

- `dumpTypeGraph()`

- `dumpWrapperMap()`

- `dumpConverters()`

## Classes

- `VoidPtr`

## Detailed description

This Python module can be used to access internal information related to our binding technology. Access to this internal information is required to e.g.: integrate PySide with Qt based programs that offer Python scripting like Maya™ or just for debug purposes.

Some function description refer to “Shiboken based objects”, which means Python objects instances of any Python Type created using Shiboken.

To import the module:

    from shiboken6 import Shiboken

Shiboken.isValid(obj: object) → bool

  Given a Python object, returns True if the object methods can be called without an exception being thrown. A Python wrapper becomes invalid when the underlying C++ object is destroyed or unreachable.

  Parameters:

    obj – Python object to validate.

Shiboken.wrapInstance(address: int, python_type: type) → Shiboken.object

  Creates a Python wrapper for a C++ object instantiated at a given memory address - the returned object type will be the same given by the user.

  The type must be a Python type. The C++ object will not be destroyed when the returned Python object reach zero references.

  If the address is invalid or doesn’t point to a C++ object of given type the behavior is undefined.

  Parameters:

    - address (int) – Address of the C++ object.

    - python_type (type) – Python type for the corresponding C++ object.

Shiboken.getCppPointer(obj: Shiboken.object) → tuple[int, ...]

  Returns a tuple of longs that contain the memory addresses of the C++ instances wrapped by the given object.

  Parameters:

    obj – Shiboken object.

Shiboken.delete(obj: Shiboken.object)

  Deletes the C++ object wrapped by the given Python object.

  Parameters:

    obj – Shiboken object.

Shiboken.ownedByPython(obj: Shiboken.object) → bool

  Given a Shiboken object, returns True if Python is responsible for deleting the underlying C++ object, False otherwise.

  If the object was not a Shiboken based object, a TypeError is thrown.

  Parameters:

    obj – Shiboken object.

Shiboken.createdByPython(obj: Shiboken.object) → bool

  Returns true if the given Python object was created by Python.

  Parameters:

    obj – Shiboken object.

Shiboken.dump(obj: object) → str

  Returns a string with implementation-defined information about the object. This method should be used only for debug purposes by developers creating their own bindings as no guarantee is provided that the string format will be the same across different versions.

  If the object is not a Shiboken based object, a message is printed.

  Parameters:

    obj – Python object.

Shiboken.disassembleFrame(label: str)

  Prints the current executing Python frame to stdout and flushes. The disassembly is decorated by some label. Example:

      lambda: 42

  is shown from inside C++ as

      <label> BEGIN
      1           0 LOAD_CONST               1 (42)
                  2 RETURN_VALUE
      <label> END

  When you want to set a breakpoint at the disassembleFrame function and you use it from C++, you use the pure function name.

  When you want to use it from Python, you can insert it into your Python code and then maybe instead set a breakpoint at SbkShibokenModule_disassembleFrame which is the generated wrapper.

  label is a simple string in C++. In Python, you can use any object; internally the str function is called with it.

  This method should be used only for debug purposes by developers.

  Parameters:

    label – Python string.

Shiboken.dumpTypeGraph(file_name: str) → bool

  Dumps the inheritance graph of the types existing in libshiboken to `.dot` file for use with Graphviz.

  Parameters:

    file_name – Name of the file to write the graph.

Shiboken.dumpWrapperMap()

  Dumps the map of wrappers existing in libshiboken to standard error.

Shiboken.dumpConverters()

  Dumps the map of named converters existing in libshiboken to standard error.

class Shiboken.VoidPtr(address, size=-1, writeable=0)
  Parameters:

    - address – (PyBuffer, SbkObject, int, VoidPtr)

    - size – int

    - writeable – int

  Represents a chunk of memory by address and size and implements the `buffer` protocol. It can be constructed from a `buffer`, a Shiboken based object, a memory address or another VoidPtr instance.

  toBytes()
    Return type:

      bytes

    Returns the contents as `bytes`.