Michele De Stefano's C++ Utilities
mds_utils::python::Sequence Class Reference

Wraps a generic Python sequence. More...

#include <mds_utils/python/sequence.hpp>

Inheritance diagram for mds_utils::python::Sequence:
mds_utils::python::Sequence_Base< Sequence > mds_utils::python::Obj

Public Member Functions

 Sequence ()
 The default constructor.
 
 Sequence (PyObject *po)
 Constructs a new Sequence from a Python sequence. More...
 
 Sequence (const Sequence &rhs)
 The copy constructor.
 
 Sequence (Sequence &&rhs)
 The move constructor.
 
 Sequence (ProxyAttr &&rhs)
 The move constructor from ProxyAttr objects.
 
Sequenceoperator= (Sequence &&rhs)
 The move assignment.
 
Sequenceoperator= (const Sequence &rhs)
 The standard assignment.
 
- Public Member Functions inherited from mds_utils::python::Sequence_Base< Sequence >
 Sequence_Base ()
 Default constructor. More...
 
 Sequence_Base (size_t len)
 Creates a sequence of the desired length. More...
 
 Sequence_Base (PyObject *po)
 Constructs a new Sequence_Base from a Python sequence. More...
 
 Sequence_Base (Sequence_Base &&rhs)
 Move constructor.
 
 Sequence_Base (const Sequence_Base &rhs)
 The copy-constructor.
 
 Sequence_Base (ProxyAttr &&rhs)
 Move constructor from ProxyAttr object. More...
 
Sequence_Base< Sequence > & operator= (Sequence_Base< Sequence > &&rhs)
 Move assignment.
 
Sequence_Base< Sequence > & operator= (const Sequence_Base< Sequence > &rhs)
 The standard assignment.
 
void set (const seq_T &seq)
 Sets a Python sequence from a Boost Fusion sequence. More...
 
void set (FwIt b, FwIt e)
 Sets a Python sequence from a range of values. More...
 
void set (const Obj &o)
 Sets a Python sequence from another Python sequence. More...
 
void del (long i)
 Deletes the item in position i.
 
size_t len () const
 Returns the length of the sequence.
 
ProxyElem operator[] (long i)
 Element access. More...
 
- Public Member Functions inherited from mds_utils::python::Obj
 Obj ()
 Default constructor.
 
 Obj (const Obj &rhs)
 The copy-constructor. More...
 
 Obj (Obj &&rhs)
 Move constructor. More...
 
 Obj (ProxyAttr &&rhs)
 Move constructor from ProxyAttr objects. More...
 
 Obj (PyObject *po)
 Construct from a Python object. More...
 
Objoperator= (const Obj &rhs)
 Standard assignment.
 
Objoperator= (Obj &&rhs)
 Move assignment.
 
virtual Objoperator= (PyObject *po)
 Assignment from a Python object. More...
 
template<class T >
Objoperator= (const T &val)
 Assignment from a value. More...
 
virtual ~Obj ()
 Destructor.
 
PyObject * getPyObject () const
 Returns the underlying PyObject. More...
 
 operator PyObject * () const
 Automatic type conversion towards a Python object. More...
 
virtual PyObject * transfer ()
 Returns the Python object with transferred ownership. More...
 
virtual void incref ()
 Increments the reference count using Py_XINCREF. More...
 
virtual void decref ()
 Decrements the reference count using Py_XDECREF.
 
void reset ()
 Resets the object to the state given by the default constructor.
 
void get_ownership ()
 Used in place of incref, when the wrapped PyObject* was increfed already.
 
bool has_attr (const std::string &name) const
 Tests if the object has a particular attribute.
 
ProxyAttr attr (const std::string &name)
 Retrieves an attribute. More...
 
bool is_callable () const
 Checks if the object is callable. More...
 
Obj operator() ()
 Calling operator. More...
 
Obj operator() (const Obj &args)
 Calling operator, with positional arguments. More...
 
Obj operator() (const Obj &args, const Obj &kw)
 Calling operator, with positional and keyword arguments. More...
 

Friends

class Sequence_Base< Sequence >
 

Additional Inherited Members

- Protected Member Functions inherited from mds_utils::python::Sequence_Base< Sequence >
size_t idx (long i) const
 Converts a Python index (that can also be negative) into a C index. More...
 
- Protected Member Functions inherited from mds_utils::python::Obj
void check_callable ()
 Checks if the object is callable. More...
 
void check_call_result (PyObject *result)
 Checks if the result of the object call was successful. More...
 
- Protected Attributes inherited from mds_utils::python::Sequence_Base< Sequence >
size_t m_len
 The length of the sequence.
 
- Protected Attributes inherited from mds_utils::python::Obj
size_t decref_on_destroy
 
PyObject * m_po
 Underlying pointer to the wrapped Python object.
 

Detailed Description

Wraps a generic Python sequence.

Warning
  • Implements static PyObject* new_seq(size_t len) by creating a Python list.
  • Be sure to have included proper overloads of the mds_utils::python::to_python function.
  • Remember that the copy/move constructors and the assignment operators do not duplicate the underlying Python object. They only increment its reference count.
Author
Michele De Stefano
Date
05/08/2014

Definition at line 469 of file sequence.hpp.

Constructor & Destructor Documentation

mds_utils::python::Sequence::Sequence ( PyObject *  po)
inline

Constructs a new Sequence from a Python sequence.

It throws an exception if the parameter is not a sequence. The new sequence is built as a Python list.

Parameters
poPointer to a Pyton sequence object.
Remarks
It does not incref the Python object.
Author
Michele De Stefano
Date
05/08/2014

Definition at line 510 of file sequence.hpp.


The documentation for this class was generated from the following file: