summaryrefslogtreecommitdiffstats
path: root/contrib/tools/swig/Lib/python/std_unordered_set.i
diff options
context:
space:
mode:
authorrobot-piglet <[email protected]>2025-08-28 14:27:58 +0300
committerrobot-piglet <[email protected]>2025-08-28 14:57:06 +0300
commit81d828c32c8d5477cb2f0ce5da06a1a8d9392ca3 (patch)
tree3081d566f0d5158d76e9093261344f6406fd09f7 /contrib/tools/swig/Lib/python/std_unordered_set.i
parent77ea11423f959e51795cc3ef36a48d808b4ffb98 (diff)
Intermediate changes
commit_hash:d5b1af16dbe9030537a04c27eb410c88c2f496cd
Diffstat (limited to 'contrib/tools/swig/Lib/python/std_unordered_set.i')
-rw-r--r--contrib/tools/swig/Lib/python/std_unordered_set.i56
1 files changed, 56 insertions, 0 deletions
diff --git a/contrib/tools/swig/Lib/python/std_unordered_set.i b/contrib/tools/swig/Lib/python/std_unordered_set.i
new file mode 100644
index 00000000000..fd866b14aa0
--- /dev/null
+++ b/contrib/tools/swig/Lib/python/std_unordered_set.i
@@ -0,0 +1,56 @@
+/*
+ Unordered Sets
+*/
+
+%fragment("StdUnorderedSetTraits","header",fragment="StdSequenceTraits")
+%{
+ namespace swig {
+ template <class Key, class Hash, class Compare, class Alloc>
+ struct traits_reserve<std::unordered_set<Key,Hash,Compare,Alloc> > {
+ static void reserve(std::unordered_set<Key,Hash,Compare,Alloc> &seq, typename std::unordered_set<Key,Hash,Compare,Alloc>::size_type n) {
+ seq.reserve(n);
+ }
+ };
+
+ template <class Key, class Hash, class Compare, class Alloc>
+ struct traits_asptr<std::unordered_set<Key,Hash,Compare,Alloc> > {
+ static int asptr(PyObject *obj, std::unordered_set<Key,Hash,Compare,Alloc> **s) {
+ return traits_asptr_stdseq<std::unordered_set<Key,Hash,Compare,Alloc> >::asptr(obj, s);
+ }
+ };
+
+ template <class Key, class Hash, class Compare, class Alloc>
+ struct traits_from<std::unordered_set<Key,Hash,Compare,Alloc> > {
+ static PyObject *from(const std::unordered_set<Key,Hash,Compare,Alloc>& vec) {
+ return traits_from_stdseq<std::unordered_set<Key,Hash,Compare,Alloc> >::from(vec);
+ }
+ };
+ }
+%}
+
+%define %swig_unordered_set_methods(unordered_set...)
+ %swig_sequence_forward_iterator(unordered_set);
+ %swig_container_methods(unordered_set);
+
+#if defined(SWIGPYTHON_BUILTIN)
+ %feature("python:slot", "sq_contains", functype="objobjproc") __contains__;
+ %feature("python:slot", "mp_subscript", functype="binaryfunc") __getitem__;
+#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));
+ }
+ }
+%enddef
+
+%include <std/std_unordered_set.i>