Regressions pass! With a few tweaks for unsupported features, primarily:
- Throwing wrapped types as exceptions is unsupported. - Reverse comparison operators (e.g., __radd__) aren't supported. Rationalized destructors. Finished std::map implementation. Required fixes to typecheck for SWIGTYPE* const&. Need a little special handling of the swig_type_info for SwigPyObject when multiple modules are loaded. Fall back to SwigPyObject_richcompare if there's no operator overload. "memberget" and "memberset" attrs are applied strangely; work around them. Added 'this' attribute. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/szager-python-builtin@12415 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
d4b8048e9a
commit
288c37f5bf
9 changed files with 352 additions and 574 deletions
|
|
@ -158,7 +158,7 @@
|
|||
#if defined(SWIGPYTHON_BUILTIN)
|
||||
%feature("pyslot", "mp_length", functype="lenfunc") __len__;
|
||||
%feature("pyslot", "mp_subscript", functype="binaryfunc") __getitem__;
|
||||
%feature("tp_iter") Map "&swig::make_output_key_iterator_builtin< Map >";
|
||||
%feature("pyslot", "tp_iter", functype="getiterfunc") key_iterator;
|
||||
|
||||
%extend {
|
||||
%newobject iterkeys(PyObject **PYTHON_SELF);
|
||||
|
|
@ -288,20 +288,21 @@
|
|||
|
||||
#if defined(SWIGPYTHON_BUILTIN)
|
||||
%feature("pyslot", "mp_ass_subscript", functype="objobjargproc") __setitem__;
|
||||
#endif
|
||||
|
||||
%extend {
|
||||
// This will be called through the mp_ass_subscript slot to delete an entry.
|
||||
void __setitem__(const key_type& key) {
|
||||
self->erase(key);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
%extend {
|
||||
void __setitem__(const key_type& key, const mapped_type& x) throw (std::out_of_range) {
|
||||
(*self)[key] = x;
|
||||
}
|
||||
}
|
||||
|
||||
%enddef
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue