/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Lib/python/std_set.i
56 строк
1 KB
William S Fulton
Remove assign method uses by the removed Python Sequence Protocol
26 апр 2023, 20:18
26 апр 2023, 20:18
08aee96
Код
Авторство
О чём код?
/* Sets */ %fragment("StdSetTraits","header",fragment="StdSequenceTraits") %{ namespace swig { template <class T> struct traits_asptr<std::set<T> > { static int asptr(PyObject *obj, std::set<T> **s) { return traits_asptr_stdseq<std::set<T> >::asptr(obj, s); } }; template <class T> struct traits_from<std::set<T> > { static PyObject *from(const std::set<T>& vec) { return traits_from_stdseq<std::set<T> >::from(vec); } }; } %} %define %swig_set_methods(set...) %swig_sequence_iterator(set); %swig_container_methods(set); #if defined(SWIGPYTHON_BUILTIN) %feature("python:slot", "mp_subscript", functype="binaryfunc") __getitem__; %feature("python:slot", "sq_contains", functype="objobjproc") __contains__; #endif %extend { void append(value_type x) { self->insert(x); } bool __contains__(value_type x) { return self->find(x) != self->end(); } value_type __getitem__(difference_type i) const throw (std::out_of_range) { return *(swig::cgetpos(self, i)); } void add(value_type x) { self->insert(x); } void discard(value_type x) { self->erase(x); } } %enddef %include <std/std_set.i>