# cppattribute: wrap class/instance attributes

Wraps C++ class instance/static attributes.

class pybindgen.cppattribute.CppInstanceAttributeGetter(value_type, class_, attribute_name, getter=None)

  Bases: `PyGetter`

  A getter for a C++ instance attribute.

  Parameters:

    - value_type – a ReturnValue object handling the value type;

    - class – the class (CppClass object)

    - attribute_name – name of attribute

    - getter – None, or name of a method of the class used to get the value

  generate(code_sink)
    Parameters:

      code_sink – a CodeSink instance that will receive the generated code

  generate_call()

    virtual method implementation; do not call

class pybindgen.cppattribute.CppInstanceAttributeSetter(value_type, class_, attribute_name, setter=None)

  Bases: `PySetter`

  A setter for a C++ instance attribute.

  Parameters:

    - value_type – a ReturnValue object handling the value type;

    - class – the class (CppClass object)

    - attribute_name – name of attribute

    - setter – None, or name of a method of the class used to set the value

  generate(code_sink)
    Parameters:

      code_sink – a CodeSink instance that will receive the generated code

class pybindgen.cppattribute.CppStaticAttributeGetter(value_type, class_, attribute_name)

  Bases: `PyGetter`

  A getter for a C++ class static attribute.

  Parameters:

    - value_type – a ReturnValue object handling the value type;

    - c_value_expression – C value expression

  generate(code_sink)
    Parameters:

      code_sink – a CodeSink instance that will receive the generated code

  generate_call()

    virtual method implementation; do not call

class pybindgen.cppattribute.CppStaticAttributeSetter(value_type, class_, attribute_name)

  Bases: `PySetter`

  A setter for a C++ class static attribute.

  Parameters:

    - value_type – a ReturnValue object handling the value type;

    - class – the class (CppClass object)

    - attribute_name – name of attribute

  generate(code_sink)
    Parameters:

      code_sink – a CodeSink instance that will receive the generated code

class pybindgen.cppattribute.PyGetSetDef(cname)

  Bases: `object`

  Class that generates a PyGetSet table

  Parameters:

    cname – C name of the getset table

  add_attribute(name, getter, setter, custom_name=None)

    Add a new attribute :param name: attribute name :param getter: a PyGetter object, or None :param setter: a PySetter object, or None

  empty()
  generate(code_sink)

    Generate the getset table, return the table C name or ‘0’ if the table is empty

class pybindgen.cppattribute.PyGetter(return_value, parameters, parse_error_return, error_return, force_parse=None, no_c_retval=False, unblock_threads=False)

  Bases: `ForwardWrapperBase`

  generates a getter, for use in a PyGetSetDef table

  Base constructor

  Parameters:

    - return_value – type handler for the return value

    - parameters – a list of type handlers for the parameters

    - parse_error_return – statement to return an error during parameter parsing

    - error_return – statement to return an error after parameter parsing

    - force_parse – force generation of code to parse parameters even if there are none

    - no_c_retval – force the wrapper to not have a C return value

    - unblock_threads – generate code to unblock python threads during the C function call

  generate(code_sink)

    Generate the code of the getter to the given code sink

  generate_call()

    (not actually called)

class pybindgen.cppattribute.PyMetaclass(name, parent_metaclass_expr, getsets=None)

  Bases: `object`

  Class that generates a Python metaclass

  Parameters:

    - name – name of the metaclass (should normally end with Meta)

    - parent_metaclass_expr – C expression that should give a pointer to the parent metaclass (should have a C type of PyTypeObject*)

    - getsets – name of a PyGetSetDef C array variable, or None

  generate(code_sink, module)

    Generate the metaclass to code_sink and register it in the module.

class pybindgen.cppattribute.PySetter(return_value, parameters, error_return=None)

  Bases: `ReverseWrapperBase`

  generates a setter, for use in a PyGetSetDef table

  Base constructor

  Parameters:

    - return_value – type handler for the return value

    - parameters – a list of type handlers for the parameters

  NO_GIL_LOCKING = True
  generate(code_sink)

    Generate the code of the setter to the given code sink

  generate_python_call()

    (not actually called)