# 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: `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: `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: `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: `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: `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: `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: `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()