container: wrap STL containers

Wrap C++ STL containers

class pybindgen.container.Container(name, value_type, container_type, outer_class=None, custom_name=None)

Bases: object

Parameters
  • name – C++ type name of the container, e.g. std::vector<int> or MyIntList

  • value_type – a ReturnValue of the element type: note, for mapping containers, value_type is a tuple with two ReturnValue’s: (key, element).

  • container_type – a string with the type of container, one of ‘list’, ‘deque’, ‘queue’, ‘priority_queue’, ‘vector’, ‘stack’, ‘set’, ‘multiset’, ‘hash_set’, ‘hash_multiset’, ‘map’

  • outer_class (None or L{CppClass}) – if the type is defined inside a class, must be a reference to the outer class

  • custom_name – alternative name to register with in the Python module

generate(code_sink, module, docstring=None)

Generates the class to a code sink

generate_forward_declarations(code_sink, module)

Generates forward declarations for the instance and type structures.

get_iter_pystruct()
get_module()

Get the Module object this type belongs to

get_pystruct()
property iter_pystruct
property module

Get the Module object this type belongs to

property pystruct
property python_full_name
property python_name
register_alias(alias)

Re-register the class with another base name, in addition to any registrations that might have already been done.

set_module(module)

Set the Module object this type belongs to

class pybindgen.container.ContainerParameter(ctype, name, direction=1, is_const=False, default_value=None)

Bases: pybindgen.container.ContainerParameterBase

Container handlers

ctype – C type, normally ‘MyClass*’ name – parameter name

CTYPES = []
DIRECTIONS = [1]
container_type = <pybindgen.Container None>
convert_c_to_python(wrapper)

Write some code before calling the Python method.

convert_python_to_c(wrapper)

parses python args to get C++ value

class pybindgen.container.ContainerParameterBase(ctype, name, direction=1, is_const=False, default_value=None)

Bases: types.Parameter

Base class for all C++ Class parameter handlers

ctype – C type, normally ‘MyClass*’ name – parameter name

CTYPES = []
DIRECTIONS = [1]
container_type = <pybindgen.Container None>
class pybindgen.container.ContainerPtrParameter(ctype, name, direction=1, is_const=False, default_value=None, transfer_ownership=None)

Bases: pybindgen.container.ContainerParameterBase

Container handlers

ctype – C type, normally ‘MyClass*’ name – parameter name

CTYPES = []
DIRECTIONS = [1, 2, 3]
container_type = <pybindgen.Container None>
convert_c_to_python(wrapper)

Write some code before calling the Python method.

convert_python_to_c(wrapper)

parses python args to get C++ value

class pybindgen.container.ContainerRefParameter(ctype, name, direction=1, is_const=False, default_value=None)

Bases: pybindgen.container.ContainerParameterBase

Container handlers

ctype – C type, normally ‘MyClass*’ name – parameter name

CTYPES = []
DIRECTIONS = [1, 2, 3]
container_type = <pybindgen.Container None>
convert_c_to_python(wrapper)

Write some code before calling the Python method.

convert_python_to_c(wrapper)

parses python args to get C++ value

class pybindgen.container.ContainerReturnValue(ctype, is_const=False)

Bases: pybindgen.container.ContainerReturnValueBase

Container type return handlers

override to fix the ctype parameter with namespace information

CTYPES = []
NO_RETVAL_DECL = True
container_type = <pybindgen.Container None>
convert_c_to_python(wrapper)

see ReturnValue.convert_c_to_python

convert_python_to_c(wrapper)

see ReturnValue.convert_python_to_c

get_c_error_return()

See ReturnValue.get_c_error_return

class pybindgen.container.ContainerReturnValueBase(ctype)

Bases: types.ReturnValue

Class return handlers – base class

Creates a return value object

Keywork Arguments:

Parameters

ctype – actual C/C++ type being used

CTYPES = []
container_type = <pybindgen.Container None>
class pybindgen.container.ContainerTraits(add_value_method, is_mapping=False)

Bases: object

class pybindgen.container.IterNextWrapper(container)

Bases: pybindgen.typehandlers.base.ForwardWrapperBase

tp_iternext wrapper

value_type – a ReturnValue object handling the value type; container – the L{Container}

HAVE_RETURN_VALUE = True
generate(code_sink)

code_sink – a CodeSink instance that will receive the generated code

generate_call()

Generates the code (into self.before_call) to call into Python, storing the result in the variable ‘py_retval’; should also check for call error.

reset_code_generation_state()