/
usr
/
share
/
swig
/
3.0.12
/
python
/
/usr/share/swig/3.0.12/python
mkdir
upload
Name
Size
Mode
Actions
argcargv.i
2642
0644
edit
dl
rm
attribute.i
34
0644
edit
dl
rm
boost_shared_ptr.i
16295
0644
edit
dl
rm
builtin.swg
25016
0644
edit
dl
rm
carrays.i
338
0644
edit
dl
rm
ccomplex.i
763
0644
edit
dl
rm
cdata.i
30
0644
edit
dl
rm
cmalloc.i
32
0644
edit
dl
rm
cni.i
42
0644
edit
dl
rm
complex.i
80
0644
edit
dl
rm
cpointer.i
33
0644
edit
dl
rm
cstring.i
32
0644
edit
dl
rm
cwstring.i
60
0644
edit
dl
rm
defarg.swg
1154
0644
edit
dl
rm
director.swg
10638
0644
edit
dl
rm
embed.i
2530
0644
edit
dl
rm
exception.i
139
0644
edit
dl
rm
factory.i
32
0644
edit
dl
rm
file.i
1035
0644
edit
dl
rm
implicit.i
287
0644
edit
dl
rm
jstring.i
1759
0644
edit
dl
rm
pyabc.i
418
0644
edit
dl
rm
pyapi.swg
1339
0644
edit
dl
rm
pybackward.swg
1162
0644
edit
dl
rm
pybuffer.i
2782
0644
edit
dl
rm
pyclasses.swg
3474
0644
edit
dl
rm
pycomplex.swg
2243
0644
edit
dl
rm
pycontainer.swg
29789
0644
edit
dl
rm
pydocs.swg
1104
0644
edit
dl
rm
pyerrors.swg
1689
0644
edit
dl
rm
pyfragments.swg
551
0644
edit
dl
rm
pyhead.swg
5741
0644
edit
dl
rm
pyinit.swg
13525
0644
edit
dl
rm
pyiterators.swg
10650
0644
edit
dl
rm
pymacros.swg
38
0644
edit
dl
rm
pyname_compat.i
4124
0644
edit
dl
rm
pyopers.swg
10223
0644
edit
dl
rm
pyprimtypes.swg
8070
0644
edit
dl
rm
pyrun.swg
53129
0644
edit
dl
rm
pyruntime.swg
795
0644
edit
dl
rm
pystdcommon.swg
7102
0644
edit
dl
rm
pystrings.swg
4422
0644
edit
dl
rm
python.swg
2035
0644
edit
dl
rm
pythonkw.swg
2355
0644
edit
dl
rm
pythreads.swg
2864
0644
edit
dl
rm
pytuplehlp.swg
308
0644
edit
dl
rm
pytypemaps.swg
3208
0644
edit
dl
rm
pyuserdir.swg
6326
0644
edit
dl
rm
pywstrings.swg
2097
0644
edit
dl
rm
std_alloc.i
27
0644
edit
dl
rm
std_array.i
3693
0644
edit
dl
rm
std_auto_ptr.i
585
0644
edit
dl
rm
std_basic_string.i
2817
0644
edit
dl
rm
std_carray.i
1583
0644
edit
dl
rm
std_char_traits.i
33
0644
edit
dl
rm
std_common.i
2319
0644
edit
dl
rm
std_complex.i
469
0644
edit
dl
rm
std_container.i
58
0644
edit
dl
rm
std_deque.i
678
0644
edit
dl
rm
std_except.i
35
0644
edit
dl
rm
std_ios.i
66
0644
edit
dl
rm
std_iostream.i
107
0644
edit
dl
rm
std_list.i
668
0644
edit
dl
rm
std_map.i
9975
0644
edit
dl
rm
std_multimap.i
2578
0644
edit
dl
rm
std_multiset.i
1085
0644
edit
dl
rm
std_pair.i
6167
0644
edit
dl
rm
std_set.i
1490
0644
edit
dl
rm
std_shared_ptr.i
68
0644
edit
dl
rm
std_sstream.i
29
0644
edit
dl
rm
std_streambuf.i
31
0644
edit
dl
rm
std_string.i
35
0644
edit
dl
rm
std_unordered_map.i
8653
0644
edit
dl
rm
std_unordered_multimap.i
3115
0644
edit
dl
rm
std_unordered_multiset.i
1436
0644
edit
dl
rm
std_unordered_set.i
1719
0644
edit
dl
rm
std_vector.i
886
0644
edit
dl
rm
std_vectora.i
829
0644
edit
dl
rm
std_wios.i
26
0644
edit
dl
rm
std_wiostream.i
166
0644
edit
dl
rm
std_wsstream.i
30
0644
edit
dl
rm
std_wstreambuf.i
32
0644
edit
dl
rm
std_wstring.i
63
0644
edit
dl
rm
stl.i
182
0644
edit
dl
rm
typemaps.i
4453
0644
edit
dl
rm
wchar.i
186
0644
edit
dl
rm
Edit:
/usr/share/swig/3.0.12/python/pyiterators.swg
(10650B)
/* ----------------------------------------------------------------------------- * pyiterators.swg * * Implement a python 'output' iterator for Python 2.2 or higher. * * Users can derive form the SwigPyIterator to implement their * own iterators. As an example (real one since we use it for STL/STD * containers), the template SwigPyIterator_T does the * implementation for generic C++ iterators. * ----------------------------------------------------------------------------- */ %include <std_common.i> %fragment("SwigPyIterator","header",fragment="<stddef.h>") { namespace swig { struct stop_iteration { }; struct SwigPyIterator { private: SwigPtr_PyObject _seq; protected: SwigPyIterator(PyObject *seq) : _seq(seq) { } public: virtual ~SwigPyIterator() {} // Access iterator method, required by Python virtual PyObject *value() const = 0; // Forward iterator method, required by Python virtual SwigPyIterator *incr(size_t n = 1) = 0; // Backward iterator method, very common in C++, but not required in Python virtual SwigPyIterator *decr(size_t /*n*/ = 1) { throw stop_iteration(); } // Random access iterator methods, but not required in Python virtual ptrdiff_t distance(const SwigPyIterator &/*x*/) const { throw std::invalid_argument("operation not supported"); } virtual bool equal (const SwigPyIterator &/*x*/) const { throw std::invalid_argument("operation not supported"); } // C++ common/needed methods virtual SwigPyIterator *copy() const = 0; PyObject *next() { SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads PyObject *obj = value(); incr(); SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads return obj; } /* Make an alias for Python 3.x */ PyObject *__next__() { return next(); } PyObject *previous() { SWIG_PYTHON_THREAD_BEGIN_BLOCK; // disable threads decr(); PyObject *obj = value(); SWIG_PYTHON_THREAD_END_BLOCK; // re-enable threads return obj; } SwigPyIterator *advance(ptrdiff_t n) { return (n > 0) ? incr(n) : decr(-n); } bool operator == (const SwigPyIterator& x) const { return equal(x); } bool operator != (const SwigPyIterator& x) const { return ! operator==(x); } SwigPyIterator& operator += (ptrdiff_t n) { return *advance(n); } SwigPyIterator& operator -= (ptrdiff_t n) { return *advance(-n); } SwigPyIterator* operator + (ptrdiff_t n) const { return copy()->advance(n); } SwigPyIterator* operator - (ptrdiff_t n) const { return copy()->advance(-n); } ptrdiff_t operator - (const SwigPyIterator& x) const { return x.distance(*this); } static swig_type_info* descriptor() { static int init = 0; static swig_type_info* desc = 0; if (!init) { desc = SWIG_TypeQuery("swig::SwigPyIterator *"); init = 1; } return desc; } }; %#if defined(SWIGPYTHON_BUILTIN) inline PyObject* make_output_iterator_builtin (PyObject *pyself) { Py_INCREF(pyself); return pyself; } %#endif } } %fragment("SwigPyIterator_T","header",fragment="<stddef.h>",fragment="SwigPyIterator",fragment="StdTraits",fragment="StdIteratorTraits") { namespace swig { template<typename OutIterator> class SwigPyIterator_T : public SwigPyIterator { public: typedef OutIterator out_iterator; typedef typename std::iterator_traits<out_iterator>::value_type value_type; typedef SwigPyIterator_T<out_iterator> self_type; SwigPyIterator_T(out_iterator curr, PyObject *seq) : SwigPyIterator(seq), current(curr) { } const out_iterator& get_current() const { return current; } bool equal (const SwigPyIterator &iter) const { const self_type *iters = dynamic_cast<const self_type *>(&iter); if (iters) { return (current == iters->get_current()); } else { throw std::invalid_argument("bad iterator type"); } } ptrdiff_t distance(const SwigPyIterator &iter) const { const self_type *iters = dynamic_cast<const self_type *>(&iter); if (iters) { return std::distance(current, iters->get_current()); } else { throw std::invalid_argument("bad iterator type"); } } protected: out_iterator current; }; template <class ValueType> struct from_oper { typedef const ValueType& argument_type; typedef PyObject *result_type; result_type operator()(argument_type v) const { return swig::from(v); } }; template<typename OutIterator, typename ValueType = typename std::iterator_traits<OutIterator>::value_type, typename FromOper = from_oper<ValueType> > class SwigPyIteratorOpen_T : public SwigPyIterator_T<OutIterator> { public: FromOper from; typedef OutIterator out_iterator; typedef ValueType value_type; typedef SwigPyIterator_T<out_iterator> base; typedef SwigPyIteratorOpen_T<OutIterator, ValueType, FromOper> self_type; SwigPyIteratorOpen_T(out_iterator curr, PyObject *seq) : SwigPyIterator_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) { while (n--) { --base::current; } return this; } }; template<typename OutIterator, typename ValueType = typename std::iterator_traits<OutIterator>::value_type, typename FromOper = from_oper<ValueType> > class SwigPyIteratorClosed_T : public SwigPyIterator_T<OutIterator> { public: FromOper from; typedef OutIterator out_iterator; typedef ValueType value_type; typedef SwigPyIterator_T<out_iterator> base; typedef SwigPyIteratorClosed_T<OutIterator, ValueType, FromOper> self_type; SwigPyIteratorClosed_T(out_iterator curr, out_iterator first, out_iterator last, PyObject *seq) : SwigPyIterator_T<OutIterator>(curr, seq), begin(first), end(last) { } 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) { while (n--) { if (base::current == begin) { throw stop_iteration(); } else { --base::current; } } return this; } private: out_iterator begin; out_iterator end; }; template<typename OutIter> inline SwigPyIterator* make_output_iterator(const OutIter& current, const OutIter& begin,const OutIter& end, PyObject *seq = 0) { return new SwigPyIteratorClosed_T<OutIter>(current, begin, end, seq); } template<typename OutIter> inline SwigPyIterator* make_output_iterator(const OutIter& current, PyObject *seq = 0) { return new SwigPyIteratorOpen_T<OutIter>(current, seq); } } } %fragment("SwigPyIterator"); namespace swig { /* Throw a StopIteration exception */ %ignore stop_iteration; struct stop_iteration {}; %typemap(throws) stop_iteration { (void)$1; SWIG_SetErrorObj(PyExc_StopIteration, SWIG_Py_Void()); SWIG_fail; } /* Mark methods that return new objects */ %newobject SwigPyIterator::copy; %newobject SwigPyIterator::operator + (ptrdiff_t n) const; %newobject SwigPyIterator::operator - (ptrdiff_t n) const; %nodirector SwigPyIterator; #if defined(SWIGPYTHON_BUILTIN) %feature("python:tp_iter") SwigPyIterator "&swig::make_output_iterator_builtin"; %feature("python:slot", "tp_iternext", functype="iternextfunc") SwigPyIterator::__next__; #else %extend SwigPyIterator { %pythoncode %{def __iter__(self): return self%} } #endif %catches(swig::stop_iteration) SwigPyIterator::value() const; %catches(swig::stop_iteration) SwigPyIterator::incr(size_t n = 1); %catches(swig::stop_iteration) SwigPyIterator::decr(size_t n = 1); %catches(std::invalid_argument) SwigPyIterator::distance(const SwigPyIterator &x) const; %catches(std::invalid_argument) SwigPyIterator::equal (const SwigPyIterator &x) const; %catches(swig::stop_iteration) SwigPyIterator::__next__(); %catches(swig::stop_iteration) SwigPyIterator::next(); %catches(swig::stop_iteration) SwigPyIterator::previous(); %catches(swig::stop_iteration) SwigPyIterator::advance(ptrdiff_t n); %catches(swig::stop_iteration) SwigPyIterator::operator += (ptrdiff_t n); %catches(swig::stop_iteration) SwigPyIterator::operator -= (ptrdiff_t n); %catches(swig::stop_iteration) SwigPyIterator::operator + (ptrdiff_t n) const; %catches(swig::stop_iteration) SwigPyIterator::operator - (ptrdiff_t n) const; struct SwigPyIterator { protected: SwigPyIterator(PyObject *seq); public: virtual ~SwigPyIterator(); // Access iterator method, required by Python virtual PyObject *value() const = 0; // Forward iterator method, required by Python virtual SwigPyIterator *incr(size_t n = 1) = 0; // Backward iterator method, very common in C++, but not required in Python virtual SwigPyIterator *decr(size_t n = 1); // Random access iterator methods, but not required in Python virtual ptrdiff_t distance(const SwigPyIterator &x) const; virtual bool equal (const SwigPyIterator &x) const; // C++ common/needed methods virtual SwigPyIterator *copy() const = 0; PyObject *next(); PyObject *__next__(); PyObject *previous(); SwigPyIterator *advance(ptrdiff_t n); bool operator == (const SwigPyIterator& x) const; bool operator != (const SwigPyIterator& x) const; SwigPyIterator& operator += (ptrdiff_t n); SwigPyIterator& operator -= (ptrdiff_t n); SwigPyIterator* operator + (ptrdiff_t n) const; SwigPyIterator* operator - (ptrdiff_t n) const; ptrdiff_t operator - (const SwigPyIterator& x) const; }; }
Save
cmd:
run