Python API for Applications — SIP 4.10.5 Reference Guide

### Navigation

- index
- modules |
- next |
- previous |
- SIP 4.10.5 Reference Guide »

# Python API for Applications

The main purpose of the `sip` module is to provide functionality common to all SIP generated bindings. It is loaded automatically and most of the time you will completely ignore it. However, it does expose some functionality that can be used by applications.

`sip.` `cast`(obj, type) → object

  This does the Python equivalent of casting a C++ instance to one of its sub or super-class types.

  Parameters: | obj – the Python object. type – the type.
  Returns: | a new Python object is that wraps the same C++ instance as obj, but has the type type.

`sip.` `delete`(obj)

  For C++ instances this calls the C++ destructor. For C structures it returns the structure’s memory to the heap.

  Parameter: | obj – the Python object.

`sip.` `dump`(obj)

  This displays various bits of useful information about the internal state of the Python object that wraps a C++ instance or C structure.

  Parameter: | obj – the Python object.

`sip.` `getapi`(name) → version

  New in version 4.9.

  This returns the version number that has been set for an API. The version number is either set explicitly by a call to `sip.setapi()` or implicitly by importing the module that defines it.

  Parameter: | name – the name of the API.
  Returns: | The version number that has been set for the API. An exception will be raised if the API is unknown.

`sip.` `isdeleted`(obj) → bool

  This checks if the C++ instance or C structure has been deleted and returned to the heap.

  Parameter: | obj – the Python object.
  Returns: | `True` if the C/C++ instance has been deleted.

`sip.` `ispyowned`(obj) → bool

  This checks if the C++ instance or C structure is owned by Python.

  Parameter: | obj – the Python object.
  Returns: | `True` if the C/C++ instance is owned by Python.

`sip.` `setapi`(name, version)

  New in version 4.9.

  This sets the version number of an API. An exception is raised if a different version number has already been set, either explicitly by a previous call, or implicitly by importing the module that defines it.

  Parameters: | name – the name of the API. version – The version number to set for the API. Version numbers must be greater than or equal to 1.

`sip.` `setdeleted`(obj)

  This marks the C++ instance or C structure as having been deleted and returned to the heap so that future references to it raise an exception rather than cause a program crash. Normally SIP handles such things automatically, but there may be circumstances where this isn’t possible.

  Parameter: | obj – the Python object.

`sip.` `settracemask`(mask)

  If the bindings have been created with SIP’s -r command line option then the generated code will include debugging statements that trace the execution of the code. (It is particularly useful when trying to understand the operation of a C++ library’s virtual function calls.)

  Parameter: | mask – the mask that determines which debugging statements are enabled.

  Debugging statements are generated at the following points:

  - in a C++ virtual function (mask is `0x0001`)
  - in a C++ constructor (mask is `0x0002`)
  - in a C++ destructor (mask is `0x0004`)
  - in a Python type’s __init__ method (mask is `0x0008`)
  - in a Python type’s __del__ method (mask is `0x0010`)
  - in a Python type’s ordinary method (mask is `0x0020`).

  By default the trace mask is zero and all debugging statements are disabled.

`sip.` `SIP_VERSION`
  This is a Python integer object that represents the SIP version number as a 3 part hexadecimal number (e.g. v4.0.0 is represented as `0x040000`). It was first implemented in SIP v4.2.

`sip.` `SIP_VERSION_STR`
  This is a Python string object that defines the SIP version number as represented as a string. For development snapshots it will start with `snapshot-`. It was first implemented in SIP v4.3.

`sip.` `transferback`(obj)
  This function is a wrapper around `sipTransferBack()`.

`sip.` `transferto`(obj, owner)
  This function is a wrapper around `sipTransferTo()`.

`sip.` `unwrapinstance`(obj) → integer

  This returns the address, as an integer, of a wrapped C/C++ structure or class instance.

  Parameter: | obj – the Python object.
  Returns: | an integer that is the address of the C/C++ instance.

class `sip.` `voidptr`

  This is the type object for the type SIP uses to represent a C/C++ `void *`. It may have a size associated with the address in which case the Python buffer protocol is supported. This means that the memory can be treated as a mutable array of bytes when wrapped with the `buffer()` builtin. The type has the following methods.

  `__init__`(address[, size=-1[, writeable=True]])

    Parameters: | address – the address, either another `sip.voidptr`, `None`, a Python Capsule, a Python CObject, or an integer. size – the optional associated size of the block of memory and is negative if the size is not known. writeable – set if the memory is writeable. If it is not specified, and address is a `sip.voidptr` instance then its value will be used.

  `__int__`() → integer

    This returns the address as an integer.

    Returns: | the integer address.

  `__hex__`() → string

    This returns the address as a hexadecimal string.

    Returns: | the hexadecimal string address.

  `ascapsule`() → capsule

    New in version 4.10.

    This returns the address as an unnamed Python Capsule. This requires Python v3.1 or later or Python v2.7 or later.

    Returns: | the Capsule.

  `ascobject`() → cObject

    This returns the address as a Python CObject. This is deprecated with Python v3.1 or later.

    Returns: | the CObject.

  `asstring`([size=-1]) → string/bytes

    This returns a copy of the block of memory as a Python v2 string object or a Python v3 bytes object.

    Parameter: | size – the number of bytes to copy. If it is negative then the size associated with the address is used. If there is no associated size then an exception is raised.
    Returns: | the string or bytes object.

  `getsize`() → integer

    This returns the size associated with the address.

    Returns: | the associated size which will be negative if there is none.

  `setsize`(size)

    This sets the size associated with the address.

    Parameter: | size – the size to associate. If it is negative then no size is associated.

  `getwriteable`() → bool

    This returns the writeable state of the memory.

    Returns: | `True` if the memory is writeable.

  `setwriteable`(writeable)

    This sets the writeable state of the memory.

    Parameter: | writeable – the writeable state to set.

`sip.` `wrapinstance`(addr, type) → object

  This wraps a C structure or C++ class instance in a Python object. If the instance has already been wrapped then a new reference to the existing object is returned.

  Parameters: | addr – the address of the instance as a number. type – the Python type of the instance.
  Returns: | the Python object that wraps the instance.

class `sip.` `wrapper`
  This is the type object of the base type of all instances wrapped by SIP.

class `sip.` `wrappertype`
  This is the type object of the metatype of the `sip.wrapper` type.

### Navigation

- index
- modules |
- next |
- previous |
- SIP 4.10.5 Reference Guide »