[python] make SwigPyIteratorClosed_T and SwigPyIteratorOpen_T
inherit from forward iterator classes.
This commit is contained in:
parent
db8bc1c9c7
commit
9c6d5dc53c
1 changed files with 9 additions and 53 deletions
|
|
@ -234,7 +234,7 @@ namespace swig {
|
||||||
template<typename OutIterator,
|
template<typename OutIterator,
|
||||||
typename ValueType = typename std::iterator_traits<OutIterator>::value_type,
|
typename ValueType = typename std::iterator_traits<OutIterator>::value_type,
|
||||||
typename FromOper = from_oper<ValueType> >
|
typename FromOper = from_oper<ValueType> >
|
||||||
class SwigPyIteratorOpen_T : public SwigPyIterator_T<OutIterator>
|
class SwigPyIteratorOpen_T : public SwigPyForwardIteratorOpen_T<OutIterator, ValueType, FromOper>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FromOper from;
|
FromOper from;
|
||||||
|
|
@ -244,27 +244,10 @@ namespace swig {
|
||||||
typedef SwigPyIteratorOpen_T<OutIterator, ValueType, FromOper> self_type;
|
typedef SwigPyIteratorOpen_T<OutIterator, ValueType, FromOper> self_type;
|
||||||
|
|
||||||
SwigPyIteratorOpen_T(out_iterator curr, PyObject *seq)
|
SwigPyIteratorOpen_T(out_iterator curr, PyObject *seq)
|
||||||
: SwigPyIterator_T<OutIterator>(curr, seq)
|
: SwigPyForwardIteratorOpen_T<OutIterator>(curr, seq)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *value() const {
|
|
||||||
return from(static_cast<const value_type&>(*(base::current)));
|
|
||||||
}
|
|
||||||
|
|
||||||
SwigPyIterator *copy() const
|
|
||||||
{
|
|
||||||
return new self_type(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
SwigPyIterator *incr(size_t n = 1)
|
|
||||||
{
|
|
||||||
while (n--) {
|
|
||||||
++base::current;
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
SwigPyIterator *decr(size_t n = 1)
|
SwigPyIterator *decr(size_t n = 1)
|
||||||
{
|
{
|
||||||
while (n--) {
|
while (n--) {
|
||||||
|
|
@ -273,6 +256,7 @@ namespace swig {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename OutIterator,
|
template<typename OutIterator,
|
||||||
typename ValueType = typename std::iterator_traits<OutIterator>::value_type,
|
typename ValueType = typename std::iterator_traits<OutIterator>::value_type,
|
||||||
typename FromOper = from_oper<ValueType> >
|
typename FromOper = from_oper<ValueType> >
|
||||||
|
|
@ -315,7 +299,7 @@ namespace swig {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
protected:
|
||||||
out_iterator begin;
|
out_iterator begin;
|
||||||
out_iterator end;
|
out_iterator end;
|
||||||
};
|
};
|
||||||
|
|
@ -323,49 +307,25 @@ namespace swig {
|
||||||
template<typename OutIterator,
|
template<typename OutIterator,
|
||||||
typename ValueType = typename std::iterator_traits<OutIterator>::value_type,
|
typename ValueType = typename std::iterator_traits<OutIterator>::value_type,
|
||||||
typename FromOper = from_oper<ValueType> >
|
typename FromOper = from_oper<ValueType> >
|
||||||
class SwigPyIteratorClosed_T : public SwigPyIterator_T<OutIterator>
|
class SwigPyIteratorClosed_T : public SwigPyForwardIteratorClosed_T<OutIterator,ValueType,FromOper>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FromOper from;
|
FromOper from;
|
||||||
typedef OutIterator out_iterator;
|
typedef OutIterator out_iterator;
|
||||||
typedef ValueType value_type;
|
typedef ValueType value_type;
|
||||||
typedef SwigPyIterator_T<out_iterator> base;
|
typedef SwigPyIterator_T<out_iterator> base;
|
||||||
|
typedef SwigPyForwardIteratorClosed_T<OutIterator, ValueType, FromOper> base0;
|
||||||
typedef SwigPyIteratorClosed_T<OutIterator, ValueType, FromOper> self_type;
|
typedef SwigPyIteratorClosed_T<OutIterator, ValueType, FromOper> self_type;
|
||||||
|
|
||||||
SwigPyIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, PyObject *seq)
|
SwigPyIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, PyObject *seq)
|
||||||
: SwigPyIterator_T<OutIterator>(curr, seq), begin(first), end(last)
|
: SwigPyForwardIteratorClosed_T<OutIterator,ValueType,FromOper>(curr, first, last, seq)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *value() const {
|
|
||||||
if (base::current == end) {
|
|
||||||
throw stop_iteration();
|
|
||||||
} else {
|
|
||||||
return from(static_cast<const value_type&>(*(base::current)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SwigPyIterator *copy() const
|
|
||||||
{
|
|
||||||
return new self_type(*this);
|
|
||||||
}
|
|
||||||
|
|
||||||
SwigPyIterator *incr(size_t n = 1)
|
|
||||||
{
|
|
||||||
while (n--) {
|
|
||||||
if (base::current == end) {
|
|
||||||
throw stop_iteration();
|
|
||||||
} else {
|
|
||||||
++base::current;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
SwigPyIterator *decr(size_t n = 1)
|
SwigPyIterator *decr(size_t n = 1)
|
||||||
{
|
{
|
||||||
while (n--) {
|
while (n--) {
|
||||||
if (base::current == begin) {
|
if (base::current == base0::begin) {
|
||||||
throw stop_iteration();
|
throw stop_iteration();
|
||||||
} else {
|
} else {
|
||||||
--base::current;
|
--base::current;
|
||||||
|
|
@ -373,10 +333,6 @@ namespace swig {
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
|
||||||
out_iterator begin;
|
|
||||||
out_iterator end;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue