Built-in Types

Primitive C++ Types

Shiboken knows the C++ primitive types like int and float and gathers information about typedefs like int32_t and size_t at runtime while parsing C++ headers. Function overloads using these types will be automatically generated. To suppress a primitive type, use the rejection tag.

In principle, there is no need to specify them in the typesystem file using the primitive-type tag.

However, specifying a type means that the type name is used for matching signatures of functions for modification. So, it might make sense to specify architecture-dependent types like size_t to avoid having to spell out the resolved type, which might differ depending on platform.

std::string, std::wstring and their associated view types std::string_view, std::wstring_view are also supported.

C++ Container Types

The C++ containers std::list, std::vector, std::pair, std::map, std::span and std::unordered_map are built-in. To specify Opaque Containers, use the opaque-container element. container-type can still be specified to modify the built-in behavior. For this case, a number of pre-defined conversion templates are provided (see Predefined Templates).

CPython Types

Python types like str match types like PyUnicode in the Concrete Objects Layer of CPython. They have check functions like PyUnicode_Check(), which Shiboken generates into the code checking the function arguments.

These types occur as parameters when adding functions or modifying types, as type on add-conversion within a conversion-rule or as target language API types on primitive-type.

They are built into Shiboken as custom types along with their check functions.